如何使用C 中的Raspberry Pi 3与SIM800C通信

How to communicate with sim800c using Raspberry pi 3 in c++

本文关键字:SIM800C 通信 Pi Raspberry 何使用 中的      更新时间:2023-10-16

我的最终目标是尝试使用C 程序中的SIM800C将存储在Raspberry Pi 3上的一些简单数据发送到外部服务器/网站。我相信最简单的方法是向SIM/调制解调器发布"命令",但是我很难做到这一点。我无法弄清楚我实际上应该如何在命令上发行,或者如何检查它们是否正常工作。为了进行测试目的,我编写了一些代码,这些代码应该在我获得此工作后将短信发送给电话号码,应该很直接地找出与服务器通信的AT命令。

下面是我如何将所有我相当自信的一切都正确的图像。

https://i.stack.imgur.com/sssqq.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:  %dn", connection);
    printf("n");
    //Set gsm to text mode
    serialPuts(connection,"AT+CMGF rn");
    delay(1000);
    //Number that the message should be sent to
    serialPuts(connection,"AT+CMGS="12345678900"rn");
    delay(1000);
    //The message
    serialPuts(connection,"Hello World");
    delay(1000);
    //Print ctrl+x
    serialPuts(connection,"x1A");
    delay(1000);
    printf("Done n");
    return 0 ;
}

据我所知,有3个可能无法正常工作的原因。

  • PI
  • 可能的配置/设置问题
  • 我已将其汇总到错误
  • SIM/模块不起作用

我只是不确定如何进行测试/查找引起问题的原因。如果我能在执行"序列说明"之后输出AT命令的响应,这可能有助于我弄清楚发生了什么,但是我并没有太多运气。另外,如果有人知道为什么命令似乎不起作用,或者可以为我提供一些调试/测试的方法。

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

我已经将SIM模块的TXD引脚连接到了Raspberry Pie上的TXD引脚,因为我的印象是您只需要匹配引脚的印象RXD引脚。改变这些周围使我可以看到命令&amp;响应是从模块返回的。为了真正使GPRS工作,我还需要将PWR PIN暂时设置为低位。