我一直在网上搜索,试图找到一些示例代码来了解如何收听和阅读短信。我是 at 命令的新手,所以我想看一些例子。我的意图是收听短信并阅读内容。如果消息包含“转发”这个词,我希望它运行某个功能。我在我的 arduino uno 上使用了 seeedstudio GPRS v1.4 shield。
我找到了一个库,但我对 readSMS() 函数感到困惑。图书馆位于此处:https://github.com/Seeed-Studio/Seeeduino_GPRS .
我有当前代码:
GPRS gprsTest(8,7,9,9600,"1818XXXXXXXXX");//TX,RX,PWR,BaudRate,PhoneNumber
void setup() {
Serial.begin(9600);
gprsTest.preInit();
delay(1000);
while(0 != gprsTest.init()) {
delay(1000);
Serial.print("init error\r\n");
}
}
void loop() {
//nothing to do
gprsTest.readSMS();
}
我的问题是我不确定在 readSMS 函数的参数中放入什么。
根据 api,该函数接受一个 int、string 和另一个 int。
int readSMS(int messageIndex, char *message, int length);
有什么想法吗?没有任何关于接收短信的文档
最佳答案
我对 Seeed-studio 不熟悉(头文件中的注释也维护得不是很好,给你一些帮助)但这里是基本的想法:
收到的短信存储在所选消息存储器(SIM 卡或电话,在您的情况下将是调制解调器)上的独立索引中。新消息通常采用最小的未使用索引(索引从 1 开始)。
有两种检测新短信的方法
1) 调制解调器在输出端口发送一个字符串以指示新的 SMS(如中断)
2)你必须自己读取未读消息的数量(轮询)
这些方法需要了解硬件相关的 AT 命令。如果您想了解/了解发生了什么,请阅读 AT 命令 CMGR 和 CMGF
也就是说,您明确要求的信息可以在gprs.cpp 的函数readSMS 中找到。
messageIndex
是存储消息的选定内存的索引。
*message
是消息将被读入的缓冲区。
length
为要读取的字节长度。
返回状态始终为 0(不是一个好的策略)。
我建议使用自定义代码区分已读和未读消息。这取决于您的应用
关于c++ - 通过 Arduino 上的 gprs shield 接收短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845627/