使用Python发送接收到的短信
我正在写一个Python脚本,用来从SIM卡的内存中读取短信,把它缓存起来,然后再把同样的短信发送到另一个号码。我是在Telit GM862-GPS上执行这个脚本。
import MDM
MDM.send('AT+CMGF=1\r', 10) # Changing to Text mode
MDM.send('AT+CMGR=1\r',0) # Reading SMS at index 1
a = MDM.receive(10) # Receiving as string
MDM.send('AT+CMGS="Phone no.", 129', 0) #selecting a particular no.
MDM.send(a, 0) # sending retrieved SMS
MDM.sendbyte(0x1A, 0) # sending Ctrl Z
但是我遇到了一个问题:在执行“AT+CMGR=1 \r”这个命令后,脚本就不再执行后面的命令了。我通过在“读取短信”命令后加一个简单的AT命令来改变某个值,结果那个值并没有改变。我不知道为什么会出现这种奇怪的情况。
如果有人能帮我解决这个问题,那就太好了。
谢谢
更新
@ Paid nerd: 是的,那是一个超时值 @ Jaime: SIM卡内确实有一条短信,并且在索引1的位置可以看到这条短信。唯一的问题就是在“AT+CMGR”或“AT+CMGL”命令之后,后面的命令没有被执行。@ Foresto: 我试着在结尾加上“\n”,但在读取短信的语句之后,Python的语句还是没有执行。
1 个回答
1
看起来你的程序在等一个回应,但这个回应一直没到。这种情况通常发生在设备认为你还没有发送完整的指令时。
我不太清楚你用来和设备沟通的协议是什么,但看起来像是Hayes AT指令集。设备是否可能在等一个换行符,而不是你发送的回车符,或者是需要换行符和回车符一起?比如说:
'AT+CMGF=1\r\n'
另外,我不太了解你的MDM对象是什么,但它是否可能在缓存你的指令(实际上并没有发送),直到你调用flush()方法或者类似的东西?