使用Arduino从GPRS Shield读取长文本

问题描述 投票:2回答:3

我对此感到很痛苦,我知道这可能真的很简单。我正在尝试从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 arduino-ide
3个回答
0
投票

您是否尝试一次读一个字符数组,每次读取一个字节?看看是否有帮助:


0
投票

看起来这仅仅是所有Arduino串行连接中缺少流控制的结果。如果您无法将GPRS()输入字节序列调整为确保输入FIFO不会溢出的速率,那么当输出FIFO填满时,您的Serial.write()将阻塞。届时,您将在地板上丢弃新的GPRS输入字节,直到串行输出释放更多空间。


0
投票

我在尝试阅读消息并获取64个字符时遇到了相同的问题。我通过在循环中添加一个“ delay(10)”来克服它,该循环调用执行从GPRS读取的功能。似乎足以克服比赛情况。 -使用Arduino Mega。

© www.soinside.com 2019 - 2024. All rights reserved.