我有一台GSM调制解调器连接到我的电脑,我想接收使用我编写的python程序发送给它的短信,我只是想知道什么是轮询数据的最佳技术。
我应该编写一个具有无限循环的程序,该循环不断检查传入的短信,即在循环内,程序发送AT命令并读取输入数据。或者调制解调器有一种方式来发信号通知传入数据(短信)的应用。
我试图想象手机只是一个GSM调制解调器,当收到短信时,手机就会提醒您这个事件,或者手机软件是否有无限循环来轮询输入数据。
答案 0 :(得分:3)
作为参考,我在嵌入式应用程序中使用Maestro 100 GSM Modem。
首先,您必须正确初始化调制解调器。我使用短信的文本模式,但你可能正在使用不同的东西。从这些中挑选你想要的东西。 AT + CNMI是最重要的。
AT&F0 # Restore factory defaults
ATE0 # Disable command echo
AT+CMGF=1 # Set message format to text mode
AT+CNMI=1,1,0,1,0 # Set new message indicator
AT+CPMS="SM","SM","SM" # Set preferred message storage to SIM
然后,您将等待消息通知,如下所示。 (与索引号不匹配,通知之间可能不同)
+CMTI: "SM",0 # Message notification with index
当您收到该通知时,请检索未读短信:
AT+CMGL="REC UNREAD" # Retrieve unread messages
我建议您也可以每5分钟左右添加一次民意调查,以防您错过通知。使用串行通信,您永远无法确定!
答案 1 :(得分:0)
我发现我记不起与SMS相关的很多AT命令集了。安德烈米勒的回答似乎响了几句。无论如何,你应该仔细阅读文档,我确信有一些问题。
我对轮询的推荐至少每5秒钟一次 - 这只是为了在断开连接时的稳健性和响应性。
我使用状态机在初始化,读取和删除消息之间导航。