日期:2014-05-17  浏览次数:21351 次

C#串口通信 数据解析
FF FF FF FF FF 0C 01 00 00 09 52 56 一条数据

协议:

                      开始 设备地址 卡类型及状态 卡号 数据 校验
------------------------------------------------
字节数               5        1       1      2        2      1
-------------------------------------------------
温湿度标签 一条数据 (如上面所说的一条数据)
---------------------------------------------------


缓冲区接收到的数据
FF FF FF FF FF 0C 01 00 00 09 52 56 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF 0C 01 00 00 09 52 56 FF FF FF FF FF 0C 01 00 00 00 00 00 00 00 00 00 FF FF FF FF FF 0C 01 00 00 09 52 56 FF FF FF FF FF 0C 01 00 00 09 52 56 00 00 00 00 FF FF FF FF FF 0C 01 00 00 09 52 56 FF FF FF FF FF 0C 01 00 00 09 52 56 FF FF FF FF FF 0C 01 00 00 00 00 00 00 00 00 00 FF FF FF FF FF 0C 01 00 00 09 52 56 FF FF FF FF FF 0C 01 00 00 09 52 56   


当外部设备传回来数据时(不停的传)。我们就先对这些数据解析,解析时:先从数据发回来的缓冲区中获取一条数据包。(找到 5个FF(包头)开头后跟7个字节。如果多于7个这条数据包就不要),将5个FF后的第一到第六个转换成二进制,第七个是校验。现在我怎样在这些缓冲区中去解析所有的数据 

------解决方案--------------------
暂时想不到什么好方法。。
一个字节一个字节读 如果碰到FF就进行累加 累加到5次后截取后面的六位 
然后继续读字节 碰到FF就重新计算累加。。
------解决方案--------------------
不知道正则是否适合这种情况。。。
------解决方案--------------------
根据你的协议去解析(定义的数据类型及长度)啊.