我有一個GSM調制解調器,一段時間後斷開連接,也許是因爲低信號。我只是想知道是否有AT命令可以檢測到斷開連接並重新建立重新連接。重新連接斷開的GSM調制解調器的功能/ AT命令是什麼?
是否有代碼的方式(最好是python)我可以檢測到斷開連接並重新建立重新連接?
加特
我有一個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