我编写了以下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-在此活动呼叫期间是否可以发送/接收某些数据(例如,SMS)?或者至少在此通话期间,我是否可以在该频道的另一侧(即吉米电话的扬声器上)发出声音? (我不想发送可识别的声音,噪声就足够了。尽管有一种方法可以发送可识别的声音确实更好。)
2-为什么此程序检测到来电,但没有检测到SMS?往下看。当Jimmy向我的GSM调制解调器发送3条SMS时,您可以看到我的程序的输出(并且他在我的手机中收到了所有SMS的“已发送”通知)。
>>> ================================ RESTART ================================
>>>
b''
b''
b''
b''
b''
b''
b''
如您在上面看到的,我收到了没有,而他发送了3条短信!为什么?
大多数GSM调制解调器将需要进行一些初始化,以便它们向传入的SMS发送信号。我相信这就是哈利勒所指的。这些是您进入循环之前应发送的一组AT命令。
我过去曾与几个不同的GSM调制解调器品牌成功地做到这一点,并且回想起,尽管有一些设备特定的细节,但您需要发送的一般命令是相同的。
快速搜索使我知道:
也许您可以将它们用作起点。