我对此感到很痛苦,我知道这可能真的很简单。我正在尝试从Seeed GPRS防护罩中读取一条短信。我将屏蔽设置设置为软件串行,并将从GPRS接收的信息显示到串行监视器。目前,我在处理代码时正在通过串行发送所有AT命令。要显示从软件串行到串行监视器的数据,我正在使用以下代码。
while(GPRS.available()!=0) {
Serial.write(GPRS.read());
}
GPRS显然是我的软件序列号。问题是文本很长,我只能从中得到几个字符。像这样。
+ CMGR:“ REC READ”,“ 1511”,“”,“ 13/12 / 09,14:34:54-24”欢迎使用TM eos8]
此文本是更长的“欢迎使用T-Mobile”文本。显示的最后几个字符是混乱的。我进行了一些研究,发现可以将串行缓冲区的大小改为256,而不是默认的64。我想避免这种情况,因为我确信有一种更简单的方法。有什么想法吗?
我对此感到很痛苦,我知道这可能真的很简单。我正在尝试从Seeed GPRS防护罩中读取一条短信。我将防护罩设置作为软件序列号,并且正在显示...
您是否尝试一次读一个字符数组,每次读取一个字节?看看是否有帮助:
看起来这仅仅是所有Arduino串行连接中缺少流控制的结果。如果您无法将GPRS()输入字节序列调整为确保输入FIFO不会溢出的速率,那么当输出FIFO填满时,您的Serial.write()将阻塞。届时,您将在地板上丢弃新的GPRS输入字节,直到串行输出释放更多空间。
我在尝试阅读消息并获取64个字符时遇到了相同的问题。我通过在循环中添加一个“ delay(10)”来克服它,该循环调用执行从GPRS读取的功能。似乎足以克服比赛情况。 -使用Arduino Mega。