2010-02-12 40 views
2
  1. 我有一個GSM調制解調器,一段時間後斷開連接,也許是因爲低信號。我只是想知道是否有AT命令可以檢測到斷開連接並重新建立重新連接。重新連接斷開的GSM調制解調器的功能/ AT命令是什麼?

  2. 是否有代碼的方式(最好是python)我可以檢測到斷開連接並重新建立重新連接?

加特

+0

你使用的Telit模塊與python 1.5.2 +? – INS 2012-02-06 10:55:09

回答

4

根據什麼類型的連接,電路交換(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;,否則您將開始數據通話。

+0

我認爲PDP上下文只適用於GPRS連接而非GSM。 – luc 2010-02-12 13:11:41

+0

電路交換和分組交換有什麼區別? AT命令如何在重新建立連接時發揮作用? – gath 2010-02-12 13:17:19

+0

對我來說,GSM也意味着GPRS(我甚至會認爲「GSM調制解調器」可能意味着UMTS或LTE,即使不是嚴格意義上的GSM標準也不一樣),所以不太明白你有什麼不同正在思考。 PDP上下文適用於GPRS,UMTS打包交換業務和LTE。 – hlovdal 2010-02-12 14:19:40

0

您可以嘗試使用AT + CSQ定期檢查信號強度。如果信號低於給定閾值,請考慮斷開連接並強制建立新連接。

您可以嘗試非常好的pyserial http://pyserial.sourceforge.net/ Python庫將AT命令發送到調制解調器。

我希望它能幫助

2

這裏是我如何做到這一點與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?這並不難分離。

相關問題