重新连接断开的GSM调制解调器的功能/ AT命令是什么?
我有一个GSM调制解调器,一段时间后断开连接,也许是因为低信号。我只是想知道是否有AT命令可以检测到断开连接并重新建立重新连接。重新连接断开的GSM调制解调器的功能/ AT命令是什么?
是否有代码的方式(最好是python)我可以检测到断开连接并重新建立重新连接?
加特
根据什么类型的连接,电路交换(CS)或分组交换(PS),监视将是有点不同。要检测断开连接,您可以启用UR(未经请求的结果)代码AT+CPSB=1
来监视PDP上下文活动(又名分组交换连接)。对于电路交换呼叫,您可以使用启用AT+CMER=3,0,0,2
的+CIEV:
UR代码进行监控。
要重新建立连接,您必须重新建立连接。对于CS,您必须知道拨打的电话号码,或者您可以使用特殊形式的ATD,ATDL
[1]拨打最后拨打的号码。如果调用是以ATD开始的(例如“ATD * 99 * ....”),那么您也可以使用ATDL for PS,这很常见,但是我认为如果以AT + CGDATA开始则没有任何办法。
但是,以上都与ATD无关,因为它不是你想要的。对于CS你可能会建立一个来自你的python脚本的调用,但那又如何?在收到CONNECT
之后,所有的数据通信都将通过您的python脚本正在使用的串行连接进行。而对于PS,连接甚至不会成功完成,除非电话接收来自PC的PPP流量作为连接建立的一部分。你打算用你的python脚本来提供它吗?
你真正想要的是触发你的电脑再次尝试连接,无论这是标准操作系统拨号网络还是一些特殊的应用程序启动它。因此,使用python脚本监视调制解调器,然后在PC端采取适当的操作重新建立连接。
[1] ATDL的注意事项:请注意,如果您想重复最后一次语音通话,您仍应以分号结尾,即ATDL;
,否则您将开始数据通话。
您可以尝试使用AT + CSQ定期检查信号强度。如果信号低于给定阈值,请考虑断开连接并强制建立新连接。
您可以尝试非常好的pyserial http://pyserial.sourceforge.net/ Python库将AT命令发送到调制解调器。
我希望它能帮助
这里是我如何做到这一点与Telit设备:
我用AT+CGREG=1
订阅请自来的邮件。从文件中提取出来:
+CGREG - GPRS Network Registration Status
AT+CGREG=[<n>]
Set command controls the presentation of an unsolicited result code
+CGREG: (see format below).
Parameter:
<n> - result code presentation mode
0 - disable network registration unsolicited result code
1 - enable network registration unsolicited result code; if there is a change in the terminal GPRS network registration status, it is issued the unsolicited result code:
+CGREG: <stat>
我等待调制解调器对+CGREG
消息的串行线路。什么时候到,我检查stat是1(连接到家庭网络)还是5(连接在漫游中)。
注意:发出AT + CGREG时会出现不同的响应+ CGREG?这并不难分离。
你使用的Telit模块与python 1.5.2 +? – INS 2012-02-06 10:55:09