数据位设置不正确导致数据传输不正确(串口通讯)

一、开发环境

C#、Visual Studio、控制台程序;

二、问题描述

在进行串口编程时,打开串口的参数为"COM1", 115200, Parity.Even, 6, StopBits.One。其中6是数据位;

结果在7E这个十六进制字节时,另一端接收到的是3E

三、分析

1、串口通讯协议基本格式(总长度10bit):

     1)、串口传输是按每字节进行传输,每个字节用10个bit进行打包;

     2)、10个bit具体格式如下:

               起始位(1bit)   有效数据位(7/8bit)   校验位(1bit,可变)    停止位(1bit)

               注:有效数据位和校验位总共8bit,当有校验位时,有效数据位为7bit,否则有效位未8bit

2、其中打开串口是数据位参数代表取有效数据位中几个bit(从低位到高位);

     7E  的二进制 是 0111 1110,当数据位参数为6时,取6个bit进行传,其值为11 1110,高位01 给忽略了,而二进制11 1110 其       十六进制值为3E,故此接收端收到的是3E。

 

四、解决方法和总结

       将数据位参数改成8即可,这样串口传输时,会取8bit进行传输,完整的将7E的所有二进制位都传输过去;

       总结:在进行串口传输时,数据位设置务必保证能够将一个完整的字节传输过去。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值