我有一个GSM调制解调器连接到我的计算机上,我想用我写的python程序接收发送给它的文本消息,我只是想知道什么是最好的轮询数据的技术。
如果我写的程序有一个无限循环,不断地检查传入的sms,即在循环中,程序发送AT命令并读取输入数据。或者调制解调器是否具有用信号通知输入数据(Sms)的应用的方式。
我试着想象一部手机只是一个GSM调制解调器,当收到一条短信时,手机会提醒你这一事件,或者手机软件有一个无限循环来轮询传入的数据。
发布于 2009-09-14 19:14:09
我以前也写过类似的东西。有一种方法是使用AT命令告诉调制解调器在每次收到SMS时向您发送信号。
作为参考,我在一个嵌入式应用程序中使用了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当您收到通知时,检索未读的SMS:
AT+CMGL="REC UNREAD" # Retrieve unread messages我建议你也添加一个投票,可能每隔5分钟左右,以防你错过了通知。使用串行通信,您永远无法确定!
发布于 2009-09-14 22:39:19
我发现我记不起太多与SMS相关的AT命令集。安德烈·米勒的回答似乎让人耳目一新。无论如何,您应该非常仔细地阅读文档,我相信其中有一些陷阱。
我对轮询的建议是至少每5秒轮询一次-这只是为了在断开连接时的健壮性和响应性。
我使用状态机在初始化、读取和删除消息之间导航。
https://stackoverflow.com/questions/1423308
复制相似问题