如何在活动呼叫期间通过GSM调制解调器发送和接收一些数据(Python和AT命令)

Abr*_*ham 10 python gsm pyserial at-command python-3.x

我编写了下面的Python程序来与我的D-Link DWM-156 GSM调制解调器进行通信.该程序等待来电,当收到RING警报时,它接受该呼叫.

幸运的是它工作正常;)

该程序:

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'ATA\r')
            time.sleep(0.5)

finally:
    phone.close()
Run Code Online (Sandbox Code Playgroud)

运行期间的输出:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'   #Here, my friend (named "Jimmy",for example), called me.
b'OK\r\n'
b''
b''
b''
b''
b''
Run Code Online (Sandbox Code Playgroud)

如上所示,在接到来电后,GSM调制解调器立即接受它,从那一点到最后,我们有一个有效的呼叫.

我的问题:

1-在此活动呼叫期间是否可以发送/接收某些数据(例如SMS)?或者至少可以在这个有效通话期间在这个频道的另一侧(即吉米手机的扬声器)发出噪音吗?(我不想发出可识别的声音,噪音就足够了.虽然有一种发送可识别语音的方法确实更好.)

2-为什么此程序检测到来电,但未检测到来电短信?往下看.当Jimmy向我的GSM调制解调器发送3条短信时,你可以看到我程序的输出(并且他在我的手机上收到了所有这些的"已发送"通知).

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b''
b''
b''
b''
Run Code Online (Sandbox Code Playgroud)

如上所述,我没有收到任何信息,而他发送了3条短信!为什么?

小智 0

大多数 GSM 调制解调器需要进行一些初始化,以便发出传入短信的信号。我相信这就是卡里尔所指的。这些是一组 AT 命令,您应该在进入循环之前发送。

我过去曾使用几个不同的 GSM 调制解调器品牌成功地完成此操作,并且记得即使有一些特定于设备的详细信息,您需要发送的一般命令是相同的。

快速搜索让我发现:

也许您可以使用它们作为起点。