【问题标题】:What are the functions / AT commands to reconnect a disconnected GSM modem?重新连接断开的 GSM 调制解调器有哪些功能/AT 命令?
【发布时间】:2010-02-12 12:39:13
【问题描述】:
  1. 我的 GSM 调制解调器在一段时间后断开,可能是因为信号低。我只是想知道是否有一个AT命令可以检测到断开并重新建立重新连接。

  2. 代码中有没有办法(最好是python)我可以检测到断开连接并重新建立重新连接?

加特

【问题讨论】:

  • 您是否在 python 1.5.2+ 中使用 Telit 模块?

标签: python gsm at-command


【解决方案1】:

根据连接的类型,电路交换 (CS) 或分组交换 (PS),监控会有所不同。要检测断开连接,您可以启用 UR(未经请求的结果)代码 AT+CPSB=1 来监控 PDP 上下文活动(也称为数据包交换连接)。对于电路交换呼叫,您可以使用+CIEV: UR 代码和AT+CMER=3,0,0,2 进行监控。

要重新建立连接,您必须重新建立连接。对于 CS,您必须知道拨打的电话号码,或者您可以使用特殊形式的 ATD,ATDL [1],它将拨打最后拨打的号码。如果呼叫以 ATD 开始(即“ATD*99*....”),您也可以将 ATDL 用于 PS,这很常见,但我认为如果以 AT+CGDATA 开始,则没有任何方法.

但是,以上都与 ATD 无关,因为这不是您想要的。对于 CS,您可能会从您的 python 脚本中设置一个调用,但那又如何呢?在收到CONNECT 后,所有数据流量都将来自您的 python 脚本正在使用的串行连接。对于 PS,连接甚至不会成功完成,除非电话从 PC 接收到 PPP 流量作为连接建立的一部分。你打算让你的 python 脚本来提供它吗?

您真正想要的是触发您的 PC 再次尝试连接,无论是标准操作系统拨号网络还是启动它的一些特殊应用程序。因此,使用 python 脚本监控调制解调器,然后在 PC 端采取适当的操作以重新建立连接。

[1] ATDL 的旁注:请注意,如果您想重复上一次语音通话,您仍应以分号结束,即ATDL;,否则您将启动数据通话。

【讨论】:

  • 我认为 PDP 上下文仅适用于 GPRS 连接,不适用于 GSM。
  • 电路交换和分组交换有什么区别? AT命令如何在重新建立连接中发挥作用?
  • 对我来说 GSM 也意味着 GPRS(我什至假设“GSM 调制解调器”也可能意味着 UMTS 或 LTE,即使严格来说它与原始 GSM 标准不同),所以不太明白你在想什么区别。 PDP 上下文适用于 GPRS、UMTS 打包交换流量和 LTE。
  • CS一直在占线,PS只有在有流量的时候才会发送/接收。见en.wikipedia.org/wiki/Circuit_switchingen.wikipedia.org/wiki/Packet_switching
【解决方案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?这不难隔离。

【讨论】:

    【解决方案3】:

    您可以尝试使用 AT+CSQ 定期检查信号强度。如果信号低于给定阈值,则认为您已断开连接并强制建立新连接。

    您可以尝试非常好的 pyserial http://pyserial.sourceforge.net/ Python 库来将 AT 命令发送到调制解调器。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多