我正在编写一个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”命令后,脚本在此之后不执行命令。我通过在“Read SMS”命令&之后输入一个简单的AT命令来改变一些值来检查这一点。这个价值没有改变。我不知道这样做有什么奇怪的原因。
如果有人可以帮我解决这个问题,那将会非常有帮助。
此致
更新
@付费书呆子:是的......有一个超时值@ Jaime:SIM内存中存在一条短信,它确实在索引1显示短信。我遇到的唯一问题是它没有执行命令来自“AT + CMGR”或“AT + CMGL”命令。 @ Foresto:我尝试在结尾添加“\ n”,但是在Read SMS语句之后它不会执行python语句。
答案 0 :(得分:1)
看起来你的程序正在等待永远不会到来的响应。当设备认为你还没有发送完整的命令时,这种情况很典型。
我不知道你用来与该设备通信的协议,但它看起来像是Hayes AT命令集。除了您发送的回车之外,设备是否可能需要换行符?例如:
'AT + CMGF = 1 \ r \ N'
另外,我不知道您的MDM对象是什么,但是在调用flush()方法或类似的东西之前,它是否可以缓冲您的命令(实际上不是发送它们)?