判断串口3接收SIM900A反馈的数据已经完成

2019-07-20 16:03发布

通过430串口1接收计算机发送的指令然后通过串口3发送到SIM900A, 反馈的数据也同样由串口3转发到串口1,现在出现的问题是我如何判断串口3接收SIM900A反馈的数据已经完成?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
jiaxw
1楼-- · 2019-07-21 21:04
 精彩回答 2  元偷偷看……
wuhany
2楼-- · 2019-07-22 02:50
这种方法虽然现在没出现问题,但终归不靠谱,撇开效率问题不讲,光这个延时就不一定可靠。。。
wuhany
3楼-- · 2019-07-22 07:32
虽然转发没有什么问题,问题是出在我想判断接收的数据是否是我需要的数据,如果不是就丢弃,是的话再转发,现在的状况是接收一行就直接把一行转发了,我都无法判断是否是我要的数据。
yszong
4楼-- · 2019-07-22 10:27
你做的这个,在GPRS接收时,是叫串口消抖。如下:

Glast_r为GPRS收到的长度,
_pRecBuf0为串口中断的时_pRecBuf0++
每次收到GPRS数据时,先消抖,再进行转发操作。
if(_pRecBuf0>0)
{
   RecVary0();
   …………
   ……
   ……
}
void RecVary0()
{
while(1)
   {
    Glast_r = _pRecBuf0; Delay_ms(20);  
    if(Glast_r == _pRecBuf0) break;   
   }                                 
}
其中这个Delay_ms(20);  通过波特率是多少,来算,9600bit/s=9.6bit/ms 约等于1Byte/ms,你就可以大致算一下,20ms能收到几个字节,一般以10个以上的字节为准。
这个时间需要你自己测试来改,
以Delay_ms(10),
Delay_ms(20),
Delay_ms(30),
dengdc
5楼-- · 2019-07-22 11:40
 精彩回答 2  元偷偷看……
jiajs
6楼-- · 2019-07-22 13:38
 精彩回答 2  元偷偷看……

一周热门 更多>