备份原来的数据接收(Backup original data receive).docVIP

  • 1
  • 0
  • 约3.6千字
  • 约 8页
  • 2017-10-06 发布于河南
  • 举报

备份原来的数据接收(Backup original data receive).doc

备份原来的数据接收(Backup original data receive)

备份原来的数据接收(Backup original data receive) 尝试 { 听= true;/ /设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。 int n = comm.bytestoread;/ /先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 字节[] buf =新的字节的[ ];//声明一个临时数组存储当前来的串口数据 received_count + = N;/ /增加接收计数 comm.read(buf,0,n);/ /读取缓冲数据 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// 协议解析 / 布尔data_1_catched = false;//缓存记录数据是否捕获到 / / 1。缓存数据 AddRange(BUF)的缓冲区; / / 2。完整性判断 而(buffer.count>=2)/(2字节至少要包含头)+长度(1字节)+校验(1字节) { / /请不要担心使用 =,=已经和因为 ,,=一样,是独立操作符,并不是解析成和= 2个符号 / / 2.1查找数据头 如果(缓冲区= 0 = 43和缓冲区。计数= 10) { / / 2.2探测缓存数据是否有一条数据的字节,如果不够,就不用费劲的做其他验证了 / /前面已经限定了剩余长度 = 4,那我们这里一定能访问到缓冲[ 2 ]这个长度 int len = 8;//数据长度 / /数据完整判断第一步,长度是否足够 / /长度是数据段长度,4个字节是而行注释的3部分长度 如果(buffer.count len + 2)/数据不够的时候什么都不做打破; / /这里确保数据长度足够,数据头标志找到,我们开始计算校验 / / 2.3校验数据,确认数据正确 / /异或校验,逐个字节异或得到校验码 *字节校验和=0; 为(int i = 0;i len + 3;i++)/ /长度+ 3表示校验之前的位置 { 校验和=缓冲区[ i ]; } 如果(校验和!=缓冲[ len + 3 ])/如果数据校验失败,丢弃这一包数据 { 缓冲区。RemoveRange(0,len + 4);//从缓存中删除错误数据 继续;/ /继续下一次循环 } /* / /至此,已经被找到了一条完整数据我们将数据直接分析,或是缓存起来一起分析。 / /我们这里采用的办法是缓存一次,好处就是如果你某种原因,数据堆积在缓存缓冲中 / /已经很多了,那你需要循环的找到最后一组,只分析最新数据,过往数据你已经处理不及时 / /了,就不要浪费更多时间了,这也是考虑到系统负载能够降低。 缓冲区。CopyTo(0,0,binary_data_1,len + 2);//复制一条完整数据到具体的数据缓存 data_1_catched =真; 缓冲区。RemoveRange(0,len + 2);//正确分析一条数据,从缓存中移除数据。 } 其他的 { / / here is very important, if the data is not the beginning of the head, delete data Buffer.RemoveAt (0); } } / / data analysis If (data_1_catched) { / / we are given good data format, so when we find the data 1, the fixed position is that these data, as long as we can show String, data = binary_data_1[1].ToString (X2) + binary_data_1[2].ToString (X2) + binary_data_1[3].ToString (X2) + binary_data_1[4].ToString (X2) + Binary_data_1[5].ToString (X2) + binary_data_1[6].ToString (X2) + Binary_data_1[7].ToString (X2) + binary_data_1[8].ToString (X2); String M = HexToString (data, System.Text.Encoding.GetEncoding (GBK)); Update / interface ((EventHandler) / this.Invoke (delegate {tex

文档评论(0)

1亿VIP精品文档

相关文档