如何使用c ++中的Raspberry pi 3与sim800c进行通信

问题描述 投票:1回答:1

我的最终目标是尝试使用c ++程序中的sim800c将存储在我的Raspberry pi 3上的一些简单数据发送到外部服务器/网站。我认为最简单的方法是向SIM /调制解调器发出“AT命令”,但我很难做到这一点。我无法弄清楚我实际上是如何发出AT命令或我如何检查它们是否正常工作。出于测试目的,我已经编写了一些代码,这些代码应该在我开始工作之后向电话号码发送文本消息,它应该非常直接地找出与服务器通信的AT命令。

下面是我如何连接所有内容的图像,我相当自信是正确的。

https://i.imgur.com/zysmNXE.jpg

下面是我使用各种指南编写的基本c ++代码,它在终端中编译和运行但是我没有从AT命令得到任何响应,更重要的是,我可以告诉他们实际上没有执行。我已经尝试将假号更改为我的个人号码,但这并没有什么区别。

#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>

int main ()
{  

    int connection;

    printf("Opening connection \n");
    connection = serialOpen("/dev/ttyAMA0", 9600);
    delay(1000);
    printf("Connection:  %d\n", connection);
    printf("\n");

    //Set gsm to text mode
    serialPuts(connection,"AT+CMGF \r\n");
    delay(1000);

    //Number that the message should be sent to
    serialPuts(connection,"AT+CMGS=\"12345678900\"\r\n");
    delay(1000);

    //The message
    serialPuts(connection,"Hello World");
    delay(1000);

    //Print ctrl+x
    serialPuts(connection,"\x1A");

    delay(1000);

    printf("Done \n");

    return 0 ;
}

据我所知,有三个可能的原因导致它不起作用;

  • pi的可能配置/设置问题
  • 我错误地连线了
  • SIM /模块无法正常工作

我只是不确定如何测试/找到导致问题的原因。如果我可以让我的代码在执行“serialPuts”之后输出AT命令的响应,这可能有助于我弄清楚发生了什么但是我没有做多少运气。或者,如果有人知道为什么这些命令看起来不起作用,或者可以为我提供一些调试/测试它们的方法,那将是很好的。

c++ raspberry-pi uart at-command sim800
1个回答
0
投票

这个问题只是一个简单的布线错误。

我已经将sim模块的txd引脚连接到树莓派上的txd引脚,因为我只是需要匹配引脚,但我没想到/意识到txd引脚需要转到rxd引脚代替。更改这些允许我查看从模块返回的命令和响应。为了让gprs正常工作,我还需要暂时将pwr引脚设置为低电平然后高电平。

© www.soinside.com 2019 - 2024. All rights reserved.