我编写了以下Python程序来与我的D-Link DWM-156 GSM modem进行通信。此程序等待来电,当收到 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()
在运行期间输出:
>>> ================================ 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''
如上所示,接到来电后,GSM调制解调器立即接受,并从那一点到最后,我们有一个有效的电话。
我的问题:
1 - 在此有效通话期间是否可以发送/接收某些数据(例如短信)?或者至少我可以在这个有效通话期间在这个频道的另一侧(即吉米电话的扬声器)发出噪音吗? (我不想发出可识别的声音,噪音就足够了。虽然有一种方法可以发送可识别的声音,但确实更好。)
2 - 为什么此程序检测到来电,但未检测到来电短信?往下看。当Jimmy向我的GSM调制解调器发送3条短信时,你可以看到我程序的输出(并且他在我的手机上收到了所有发送的“已发送”通知)。
>>> ================================ RESTART ================================
>>>
b''
b''
b''
b''
b''
b''
b''
如上所述,我收到没有,而他发送了3条短信!为什么呢?
答案 0 :(得分:0)
大多数GSM调制解调器需要一些初始化,以便它们发送传入的短信。 我相信这是Khalil所指的。这些是在进入循环之前应该发送的一组AT命令。
我过去已经成功完成了几个不同的GSM调制解调器品牌,并且回想一下,即使有一些特定于设备的细节,您需要发送的一般命令也是相同的。
快速搜索引导我:
也许您可以将它们作为起点。
答案 1 :(得分:0)