【问题标题】:Arduino GPRS shield only showing first character of SMS via serial monitor (AT+CMGR Not working)Arduino GPRS shield 仅通过串行监视器显示 SMS 的第一个字符(AT+CMGR 不工作)
【发布时间】:2013-10-16 23:08:16
【问题描述】:

我正在通过串行监视器 Arduino 窗口为我的 arduino UNO 连接一个 seeedstudio GPRS 屏蔽,一些直接回显到 tty(我使用的是 Linux)

在发送短信甚至接收短信方面,我能够正确地与它交互,但是当我运行命令来阅读消息时(知道它的 ID),我只返回消息的第一个字符,因为比如:

+CMGR: "REC READ","MYPHONENUMBERHERE","","13/10/15,21:45:44-40"
H

完整的消息是“Hmmm”,唯一显示的是“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

【问题讨论】:

    标签: serial-port sms arduino gsm gprs


    【解决方案1】:

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

    回来告诉我你的进展情况。

    【讨论】:

      【解决方案2】:

      我改成:

      #define _SS_MAX_RX_BUFF 256 // RX buffer size
      

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

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

      【讨论】:

        猜你喜欢
        • 2018-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多