首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轮询调制解调器以获取传入数据的最佳设计是什么?

轮询调制解调器以获取传入数据的最佳设计是什么?
EN

Stack Overflow用户
提问于 2009-09-14 18:59:15
回答 2查看 3.8K关注 0票数 8

我有一个GSM调制解调器连接到我的计算机上,我想用我写的python程序接收发送给它的文本消息,我只是想知道什么是最好的轮询数据的技术。

如果我写的程序有一个无限循环,不断地检查传入的sms,即在循环中,程序发送AT命令并读取输入数据。或者调制解调器是否具有用信号通知输入数据(Sms)的应用的方式。

我试着想象一部手机只是一个GSM调制解调器,当收到一条短信时,手机会提醒你这一事件,或者手机软件有一个无限循环来轮询传入的数据。

EN

回答 2

Stack Overflow用户

发布于 2009-09-14 19:14:09

我以前也写过类似的东西。有一种方法是使用AT命令告诉调制解调器在每次收到SMS时向您发送信号。

作为参考,我在一个嵌入式应用程序中使用了Maestro 100 GSM Modem

首先,您必须正确初始化调制解调器。我在短信中使用的是文本模式,但您可能使用了不同的模式。从这些中挑选你想要的。AT+CNMI是最重要的。

代码语言:javascript
复制
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

然后,您将等待消息通知,它将如下所示。(索引号不匹配,不同通知可能会有所不同)

代码语言:javascript
复制
+CMTI: "SM",0 # Message notification with index

当您收到通知时,检索未读的SMS:

代码语言:javascript
复制
AT+CMGL="REC UNREAD"  # Retrieve unread messages

我建议你也添加一个投票,可能每隔5分钟左右,以防你错过了通知。使用串行通信,您永远无法确定!

票数 3
EN

Stack Overflow用户

发布于 2009-09-14 22:39:19

我发现我记不起太多与SMS相关的AT命令集。安德烈·米勒的回答似乎让人耳目一新。无论如何,您应该非常仔细地阅读文档,我相信其中有一些陷阱。

我对轮询的建议是至少每5秒轮询一次-这只是为了在断开连接时的健壮性和响应性。

我使用状态机在初始化、读取和删除消息之间导航。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1423308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档