我一直在网上搜索试图找到一些示例代码,看看如何监听短信并阅读它。我是命令的新手所以我试图看一些例子。我的意图是听短信和阅读内容。如果消息包含单词:'forward',我希望它运行某个功能。我正在使用带有我的arduino uno的seeedstudio GPRS v1.4防护罩。
我找到了一个库,但我对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);
有什么想法吗?没有关于接收短信的任何文件
答案 0 :(得分:2)
我不熟悉Seeed-studio(它在头文件中的注释也不是很好,为了给你一些帮助)但这里有一个基本的想法:
收到的文本消息存储在所选消息存储器(SIM或电话,在您的情况下将是调制解调器)上的独立索引上。新消息通常采用最小的未使用索引(索引从1开始)。
检测新短信有两种方法
1)调制解调器在输出端口发送一个字符串以指示新的SMS(如中断)
2)您必须自己阅读未读消息的数量(轮询)
这些方法需要了解与硬件相关的AT命令。如果您想了解/了解正在发生的事情,请给AT命令 CMGR 和 CMGF 读取
也就是说,您明确要求的信息可以在 gprs.cpp 的 readSMS 函数中找到。
messageIndex
是存储消息的所选内存的索引
*message
是消息将被读入的缓冲区
length
是要读取的字节长度
返回状态始终为0(不是一个好的策略)。
我建议使用自定义代码区分已读和未读邮件。这取决于您的申请