0

我正在通过串行监视器 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&T 的 GoPhone 服务获得的,并且可以使用 GPRS 屏蔽上的 SIM900 模块正确激活,并且如前所述,可以正常发送短信,但无法正确显示短信。

我正在使用的防护罩在这里:www.seeedstudio.com/wiki/GPRS_Shield_V1.0

4

2 回答 2

3

我遇到了同样的问题,最后发现 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 代码。这个还没测试过!

回帖让我知道你的情况。

于 2013-10-31T19:07:16.340 回答
0

我将其更改为:

#define _SS_MAX_RX_BUFF 256 // RX buffer size

因为消息可能有 160 个字符长。

!!注意数字必须只有这个值:64、128、256、512(?)等等!

于 2014-07-22T20:50:12.573 回答