爱收集资源网

串口通信:检错与补充,让数据传输更可靠

网络整理 2023-10-01 19:06

1、上位机与下位机

上位机相当于一个软件系统,可以用于接收数据、控制数据。即可以对接收到的数据直接发送操控命令来操作数据。上位机可以接收下位机的讯号。下位机是一个控制器,是直接控制设备获取设备状况的计算机。上位机发出的命令首先给下位机,下位机再依照此命令解释成相应时序讯号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字讯号反馈给上位机。上位机不可以单独使用,而下位机可以单独使用。

2、串口通信

串口相当于硬件类型的插口。比如无线传感器节点发送讯号到凝聚节点,汇聚节点通过并口将数据传到计算机中的上位机中,上位机接收信息,并处理。

串口是按位(bit)发送和接收字节。串口通信最重要的参数是码率、数据位、停止位和奇偶校验。对于两个进行通讯的端口,这些参数必须匹配。

a,波特率:这是一个评判符号传输速度的参数。

b,数据位:这是评判通讯中实际数据位的参数。

c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。

d,奇偶校验位:在并口通讯中一种简单的检错形式。

3、C#代码

#e:d:2:9:9:c:3:7:d:1:3:6:d:3:9:4:c:9:8:d:8:f:f:5:f:8:e:6:9:7:2:1#

(以上规则均是本实验室节点内部自定义规则,测试的,外面的相应要改)

4、结果

#2:7:f:4:9:8:8:c:d:0:6:8:e:e:b:9:0:8:0:d:0:6:4:7:1:d:d:a:3:c:7:5#

#c:9:0:6:b:d:4:0:b:6:c:5:a:8:c:e:0:0:1:c:9:d:7:0:4:8:2:0:9:8:4:8#

#3:6:3:4:f:2:9:b:2:3:3:9:a:8:2:2:2:3:3:3:2:7:1:c:e:6:1:d:d:d:8:0#

5、补充四点知识

1)在程序可能会遇见错误的地方,用try+两个Tab键,将代码写入try中。比如本事例中的代码:

#8:3:5:e:3:c:4:7:4:d:e:3:f:8:f:6:c:f:6:c:b:6:2:8:c:7:3:6:7:e:e:6#

如果代码没有写入try中,则可能出现的一种情况是诸如有两个上位机,同时占用同一个并口,则都会冲突,会出错。程序都会中止,整个进程结束。而假如写入try中,并且把抛出异常的catch代码实例化,即捕获异常要实例化一个句柄,这样程序遇见error就不会中止,而会出现报错的诱因。如下图,我的这个上位机和网上下载的一个上位机同时占用COM3并口(网上下载的先占用COM3),这时我的上位机在打开并口时会出现报错。

#7:7:c:8:2:b:8:c:c:9:c:1:0:2:3:7:3:a:0:8:8:5:7:5:0:2:f:c:1:0:5:b#

2)就我这个上位机而言,需要有打开并口和关掉并口两个button按键,但是考虑到占地方,当然最重要的还是假如用两个按键来表示,当你按下打开并口,如果忘了是否打开,则是看不下来是不是打开的,所以可以合并为一个button控件。(代码还是用前面那一段的代码)。(感觉很神奇啊)。在button1_Click事件中,先点击button,如果并口是关掉的,则打开并口,然后把button1.Text的值形参为“关闭并口”,如果并口原本是关掉的,则点击按键会把button1.Text的值形参为“打开并口”,同时把接收的数据清空。感觉这个方式真的很不错!嘿嘿

3)当输入一个变量或方式哪些的,它所有有的会手动出现在一个列表,这时,“正方体”代表“方法”,“小镊子”代表“变量”,“闪电”代表“事件”。

#2:6:b:4:d:3:b:b:2:2:8:8:1:a:6:8:0:e:5:0:2:5:a:8:5:a:9:6:3:c:5:e#

4)产生对象的风波时

#5:1:7:e:3:f:f:0:0:0:7:b:c:8:7:9:3:d:e:b:3:e:d:9:7:b:3:7:6:c:a:0#

比如输入s.自动会出现DataReceived风波,再输入“+=”就会有如上图提示,按Tab键。然后又会如下图提示

#6:1:c:e:5:7:0:d:1:9:6:f:4:c:0:f:d:6:0:2:9:e:3:3:5:9:1:8:0:1:3:9#

再次按tab键,就会手动生成DataReceived事件处理函数。

c+上位机与下位机通信代