MyException - 我的异常网
当前位置:我的异常网» C# » SerialPort串口通讯中DataReceived事件不能触发

SerialPort串口通讯中DataReceived事件不能触发(4)

www.MyException.Cn  网友分享于:2013-02-20  浏览:827次

                        int len = buffer[2];//数据长度   
                        //数据完整判断第一步,长度是否足够   
                        //len是数据段长度,4个字节是while行注释的3部分长度   
                        if (buffer.Count < len + 4) break;//数据不够的时候什么都不做   
                        //这里确保数据长度足够,数据头标志找到,我们开始计算校验   
                        //2.3 校验数据,确认数据正确   
                        //异或校验,逐个字节异或得到校验码   
                        byte checksum = 0;
                        for (int i = 0; i < len + 3; i++)//len+3表示校验之前的位置   
                        {
                            checksum ^= buffer[i];
                        }
                        if (checksum != buffer[len + 3]) //如果数据校验失败,丢弃这一包数据   
                        {
                            buffer.RemoveRange(0, len + 4);//从缓存中删除错误数据   
                            continue;//继续下一次循环   
                        }
                        //至此,已经被找到了一条完整数据。我们将数据直接分析,或是缓存起来一起分析   
                        //我们这里采用的办法是缓存一次,好处就是如果你某种原因,数据堆积在缓存buffer中   
                        //已经很多了,那你需要循环的找到最后一组,只分析最新数据,过往数据你已经处理不及时   
                        //了,就不要浪费更多时间了,这也是考虑到系统负载能够降低。   

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有