- 1
- 0
- 约3.6千字
- 约 8页
- 2017-10-06 发布于河南
- 举报
备份原来的数据接收(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
您可能关注的文档
- 史玉柱冲不破成败的牢笼(Shi Yuzhu can't break the cage of success or failure).doc
- 可口可乐用工悬疑(Coca-Cola labor suspense).doc
- 史记·卷107 魏其武安侯列传第四十七(Ji Wei Wuan Hou biography Vol. 107 forty-seventh).doc
- 号灯号型(Lights and shapes).doc
- 司法局法治理念教育实施方案(Judicial Bureau, rule of law concept, education implementation plan).doc
- 司炉(Fireman).doc
- 司考14门解读(Scott 14 interpretation).doc
- 司空曙(Sikiong Shu).doc
- 司考433分经验分享(Scott 433 experience sharing).doc
- 司考计划总汇(Scott plan summary).doc
最近下载
- Xikong西莱克低温机控制板SHXK814用户手册.pdf
- 爱迪生牛顿大发明攻略.doc VIP
- 重庆天齐锂电新材料有限公司新建1000吨_年高能锂电材料电池级金属锂项目环评报告.pdf VIP
- 朗文3A复习资料及垃圾分类作文8篇.doc VIP
- DB65T 3694-2015 现行哈萨克文与西里尔哈萨克文编码字符转换规则.docx VIP
- TGXAS 1044-2025《中医护理三级查房规范》(发布稿).pdf VIP
- 华为云服务登录.doc VIP
- 采砂场工业用水水资源论证论证表详解.doc VIP
- Onkyo安桥TX-NR828中文说明书.pdf
- 采砂场工业用水水资源论证论证表分析报告.doc
原创力文档

文档评论(0)