我通过串行监视器Arduino窗口为我的arduino UNO连接了一个seeedstudio GPRS屏蔽,有些写入直接回显给tty(我正在使用Linux)
我能够在发送短信甚至接收短信时正确地与它进行交互,但是当我运行命令来阅读消息(知道它的ID)时,我只返回消息的第一个字符,如这样:
+CMGR: "REC READ","MYPHONENUMBERHERE","","13/10/15,21:45:44-40"
H
完整的信息是“嗯”,唯一显示的是“H”
确切的命令运行如下:
AT+CMGR=3
另外,有趣的是,当我跑
时AT+CMGL="ALL"
我似乎收到了每条消息
+CMGL: 2,"REC READ","+1xxxxxxxxxx","","13/10/15,21:35:51-40"
+CMGL: 3,"REC READ","+1xxxxxxxxxx","","13/10/15,21:45:44-40"
+CMGL: 4,"REC READ","+1xxxxxxxxxx","","13/10/16,06:08:24-40"
另外,SIM卡是通过AT&amp; T的GoPhone服务获得的,并且通过GPRS屏蔽上的SIM900模块正确激活,如上所述,可以正常发送短信,但是正确显示它们会被打破。< / p>
我正在使用的盾牌在这里找到: www.seeedstudio.com/wiki/GPRS_Shield_V1.0
答案 0 :(得分:2)
我有同样的问题,最后发现SoftwareSerial.h包含文件中设置的最大接收缓冲区大小为64。
我找到了以下一行:
#define _SS_MAX_RX_BUFF 64 // RX buffer size
并将其更改为:
#define _SS_MAX_RX_BUFF 128 // RX buffer size
然后我可以看到整个信息。
包含文件SoftwareSerial.h可以在Arduino / libraries / SoftwareSerial目录中找到。对于我在Windows下运行的Arduino 1.0.5。
在我的MAC(运行Arduino 1.5.4)上,我找到了文件:SoftwareSerial_Class.h包含旧的SoftwareSerial.h代码。尚未测试过这个!
回复并让我知道你是怎么回事。
答案 1 :(得分:0)
我将其更改为:
#define _SS_MAX_RX_BUFF 256 // RX buffer size
因为邮件的长度可能是160个字符。
!! 注意该号码必须只有这个值:64,128,256,512(?)等等!!