如何使用Python中的AT命令拒绝或接受对我的GSM调制解调器的来电?

时间:2015-06-20 10:27:57

标签: python gsm at-command pyserial modem

我编写了下面的Python程序来等待来电并接受或拒绝它们。根据{{​​3}}文档和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命令如何,都会继续振铃。我的计划有什么问题?

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

ATH命令取决于AT + CVHU。

答案 2 :(得分:0)

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()