使用Python发送检索到的SMS

使用Python发送检索到的SMS,python,sms,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 =

我正在编写一个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”命令后,脚本将不再执行该命令。我已经通过在“readsms”命令之后放置一个简单的AT命令来更改一些值来检查这一点&该值不会被更改。我不知道为什么会这样做

如果有人能帮我解决这个问题,那将非常有帮助

问候

更新


@付费书呆子:是的..这是一个超时值@Jaime:SIM卡内存中存在一条短信,它在索引1处显示短信。我遇到的唯一问题是它不执行“AT+CMGR”或“AT+CMGL”命令之后的命令。@Foresto:我尝试在末尾添加“\n”,但它不会在Read SMS语句之后执行python语句。

看起来您的程序正在等待一个永远不会到达的响应。当设备认为您尚未发送完整的命令时,这种情况很常见

我不知道你用什么协议与那台设备通信,但它看起来像是一个Hayes AT命令集。设备是否可能需要换行符,而不是您正在发送的回车,或者在回车之外添加换行符?例如:

'AT+CMGF=1\r\n'


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

第二个参数是什么,
0
?这是超时吗?您确定SIM卡内存中存在索引为1的短信吗?您可以使用AT+CMGL列出消息。如果命令返回CME错误,MDM怎么办?您是否尝试使用minicom/HyperTerminal发送这些命令?这些是您正在使用的库吗?