在串行通信中,有时候要用到传送大量不连续不规律数据的问题,我们怎么来判断数据是否传送结束了呢,对接收的每个字节查询,如有结束命令就停止接收,这种方法大大降低了传送的速度与效率,在不连续不规律的数据传送中往往会有很多安全隐患,在此向大家分享一个延时判断的方法,对于高手可能觉得太低级了,如果你是高手请退出此贴.对初学者可能有一定的帮助.
这里具体介绍下编程思路
//全局变量
uint TimeOver;//超时变量
//中断部分
SetRecvFlag;//设置接收标志
Buffer=串口缓冲寄存器;
TimeOver=10000;//超时时间可以根据发送段的最大间断时间来设置,要留一定的余量,保守一点好
//子函数部分
TimeOver=10000;
while(1)
{
if(GetRecvFlag)
{
ClrRecvFlag;
//...数据处理
}
Delayus(10);
TimeOver--;
if(TimeOver==0)
{
//表示超时退出接收
break;
}
}
|
|