我的最终目标是尝试使用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暂时设置为低位。