使用Python发送检索到的SMS

时间:2009-11-06 19:06:57

标签: python sms

我正在编写一个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语句。

1 个答案:

答案 0 :(得分:1)

看起来你的程序正在等待永远不会到来的响应。当设备认为你还没有发送完整的命令时,这种情况很典型。

我不知道你用来与该设备通信的协议,但它看起来像是Hayes AT命令集。除了您发送的回车之外,设备是否可能需要换行符?例如:

'AT + CMGF = 1 \ r \ N'

另外,我不知道您的MDM对象是什么,但是在调用flush()方法或类似的东西之前,它是否可以缓冲您的命令(实际上不是发送它们)?