【问题标题】:How to reject or accept an incoming call to my GSM modem using AT commands in Python?如何在 Python 中使用 AT 命令拒绝或接受我的 GSM 调制解调器的来电?
【发布时间】:2015-09-06 07:26:42
【问题描述】:

我编写了下面的 Python 程序来等待来电并接受或拒绝它们。根据this文档和this文档,接受来电的适当AT命令是ATAATS0ATS0<n>。并且拒绝来电的适当命令是ATHAT H

我尝试了以上所有命令,但是来电既没有接听也没有拒绝!

我的 Python 程序:

import time
import serial

phone = serial.Serial("COM10",  115200, timeout=5)

try:
    time.sleep(1)

    while(1):
        x = phone.readline()
        print(x)
        if (x == b'RING\r\n'):
            phone.write(b'AT H') # I replaced this 'AT H' with all the above
                                 # commands, but nothing changed about the
                                 # incoming call. It always ringing.
            time.sleep(2)

finally:
    phone.close()

AT H 的结果:

>>> ================================ RESTART ================================
>>> 
b''
b''
b'\r\n'
b'RING\r\n'
b'AT H\r\n'
b'RING\r\n'
b'AT H\r\n'
b'RING\r\n'
b'AT H\r\n'
b'RING\r\n'
b'AT H\r\n'
b'RING\r\n'

ATH 的结果:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'
b'ATH\r\n'
b'RING\r\n'
b'ATH\r\n'
b'RING\r\n'
b'ATH\r\n'
b'RING\r\n'

ATA 的结果:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'
b'ATA\r\n'
b'RING\r\n'
b'ATA\r\n'
b'RING\r\n'
b'ATA\r\n'
b'RING\r\n'

ATS0 的结果:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'
b'ATS0\r\n'
b'RING\r\n'
b'ATS0\r\n'
b'RING\r\n'

正如您在上面看到的,GSM 调制解调器不管我发送给它的 AT 命令如何,都会继续响铃。我的程序有什么问题?

请注意,我的调制解调器是 D-Link DWM-156,我可以在 Python 中使用它成功发送短信或拨打电话。 提前致谢。

【问题讨论】:

  • 你有什么类型的GSM模块?
  • @KhalilAmmour-خليلعمور 这是D-Link DWM-156
  • 那么你应该参考它的手册以获得正确的AT命令!...让我看看
  • @KhalilAmmour-خليلعمور 每个调制解调器类型的 AT 命令是否不同?我被认为是所有 GSM 调制解调器的标准化。我错了吗?
  • 不确定,但你自己为我们提供了不同的 AT 命令,不是吗?

标签: python gsm at-command pyserial modem


【解决方案1】:

在每个AT 命令的末尾添加一个CR 以使其成为有效的AT 命令

【讨论】:

    【解决方案2】:

    我们不能直接拒绝来电。要拒绝来电,我们应该配置语音挂断控制命令,

    AT+CVHU(语音挂断命令)。

    ATH 指令依赖于 AT+CVHU。

    【讨论】:

      【解决方案3】:
      phone = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=1)
      
      try:
          time.sleep(1)
      
          while(1):
              x = phone.readline()
              print(x)
              if (x == b'RING\r\n'):
                  phone.write('ATH'+'\r\n') 
                  time.sleep(2)
      
      finally:
          phone.close()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 2019-08-08
        • 2015-07-02
        • 2011-10-13
        相关资源
        最近更新 更多