- 0
- 0
- 约9.3千字
- 约 14页
- 2021-04-12 发布于天津
- 举报
C# 串口操作系列 (3)
C# 串口操作系列 (3) -- 协议篇,二进制协议数据解析
转自 CSDN
转自 CSDN 作者 兔子党逍遥
我们的串口程序,除了
通用的,进行串口监听收发的简单工具,大多都和下位机有 关,这就需要关心我们的通讯协议如何缓存,分析,以及通 知界面。
我们先说一下通讯协议。通讯协议就是通讯双方共同遵
循的一套规则,定义协议的原则是尽可能的简单以提高传输 率,尽可能的具有安全性保证数据传输完整正确。基于这
点规则,我们一个通讯协议应该是这样的:头 +数据长度 +数
据正文 +校验
例如: AA 44 05 01 02 03 04 05 EA
这里我假设的一条数据,协议如下:
数据头:AA 44数据长度:05数据正文:
数据头:
AA 44
数据长度:
05
数据正文:
01 02 03 04 05
EA校验:
EA
般数据的校验,都会采用常用的方式,
CRC16,CRC32,Xor 。
有的数据安全要求高的,不允许丢包的,可能还要加入
重发机制或是加入数据恢复算法,在校验后根据前面数据添
加恢复字节流以恢复数据。我这里采用的是简单的异或校验, 包含数据头的所有字节,依次异或得到的。
协议很简单,我也认为分析协议是很简单的事情,下面
我们就如何分析协议来实际的结合 c# 看一下。
er…再等等,在我们实际开始编码之前,还有一个规则
需要了解, 我们有了通讯协议, 如何结合串口的协议来分析, 需要关心什么呢?哦。一般就是 4 个问题:缓存收到的所有 数据,找到一条完整数据,分析数据,界面通知。
如果分的更详细一点,缓存收到的所有数据,我们想到
最高效的办法就是顺序表,也就是数组,但数组的操作比较 复杂,当你使用完一条数据后,用过的需要移除;新数据如 果过多的时候,缓存过大需要清理;数据搬移等等,很有可 能一个不小心就会丢数据导致软件出些莫名其妙的小问题。
个人建议,使用 Listlt;bytegt; ,内部是数组方式实现,每 次数据不足够的时候会扩容 1 倍,数据的增删改都已经做的 很完善了。不会出现什么小问题。
找到一条完整数据,如何找到完整数据呢?就我们例子
的这个协议, 首先在缓存的数据中找 AA 44,当我们找到后,
探测后面的字节, 发现是 05 ,然后看缓存剩下的数据是否足 够,不足够就不用判断, 减少时间消耗, 如果剩余数据 gt;=6
个(包含 1 个字节的校验) ,我们就算一个校验,看和最后 的校验是否一致。
分析数据:鉴于网络的开放性,我无法确定读者对c#
分析数据:鉴于网络的开放性,我无法确定读者对
c#
的了解程度, 介绍一下, 常用的方式就是 BitConvert.ToInt32
这一系列的方法,把连续的字节(和变量长度一样)读取并 转换为对应的变量。 c++ 下使用 memcpy ,或直接类型转换 后进行值拷贝, vb6 下使用 CopyMemory 这个 api 。
校验:前面说过了。 完整性判断的时候需要和校验对比,
大多系统都不太严格,不支持重发,所以数据错误就直接丢 弃。导致数据错误的原因很多,比如电磁干扰导致数据不完 整或错误、硬件驱动效率不够导致数据丢失、我们的软件缓 存出错等。这些软件因素数据系统错误,需要修改,但是电 磁干扰么,有这个可能的。虽然很少。
其实我知道,就算是我,看别人的博客也是,喜欢看图
片,看代码,文字性的东西,一看就头大。那我接下来贴出 基于上一篇文章的改进版本, 支持协议分析 (协议不能配置, 可配置的协议不是我们讨论的范畴。可以看看有 DFA( 确定 性有限状态机 ))
我们修改一下界面,以便能显示收到后分析的数据
红色部分是新增的代码如下:
using[c-sharp] view plaincopyusing System;
using
System.Collections.Generic; using
System.ComponentModel; using System.Data; using
System.Drawing; using System.Linq; using
usingSystem.Text; using System.Windows.Forms;
using
System.IO.Ports; using
namespaceSystem.Text.RegularExpressions;
namespace
SerialportSample {public partial classSerialportSampleForm : FormprivateSerialPort comm = new SerialPort();
SerialportSample {
public partial class
Serialpo
您可能关注的文档
最近下载
- 2024-2025学年初中劳动七年级下册浙教版教学设计合集.docx
- 数据库技术与应用-全套PPT课件.pptx
- 现制茶饮行业深度报告.pptx VIP
- 高级会计学第9版耿建新习题答案.docx VIP
- 联通集团专线营销方案.docx VIP
- 2025年AWS认证解决方案架构师-专业级:大规模企业环境下RAM的治理与自动化策略专题试卷及解析.pdf VIP
- 2025年演出经纪人国际演出保险ESG因素整合专题试卷及解析.pdf VIP
- 110kV〜750kV架空输电线路施工及验收规范.docx VIP
- 2025年房地产经纪人房地产抵押登记政策法规新旧对比与影响专题试卷及解析.pdf VIP
- 2025年单招考试数学卷(含答案解析) 完整版2025.pdf VIP
原创力文档

文档评论(0)