社区
VB
帖子详情
关于串口编程的新手问题,求教
crolice
2010-05-15 03:48:12
刚刚拿到的学校实践课程的课题,要用vb.net制作一个串口通信的工具,现在有个问题还没明白,任务书上说子站向主机发送数据的编码都是用压缩的bcd码,但我手头只有一个串口调试助手,发送的是十进制或者十六进制的数,不知道用serialport的readbyte()和readto()两个方法去读取数据,得到的结果和bcd码的结果是否相同?如果不同那是什么结果呢?
...全文
66
6
打赏
收藏
关于串口编程的新手问题,求教
刚刚拿到的学校实践课程的课题,要用vb.net制作一个串口通信的工具,现在有个问题还没明白,任务书上说子站向主机发送数据的编码都是用压缩的bcd码,但我手头只有一个串口调试助手,发送的是十进制或者十六进制的数,不知道用serialport的readbyte()和readto()两个方法去读取数据,得到的结果和bcd码的结果是否相同?如果不同那是什么结果呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Forrest23
2010-05-16
打赏
举报
回复
帮顶 不懂
zdingyun
2010-05-16
打赏
举报
回复
参阅:
串口技术 BCD码
crolice
2010-05-15
打赏
举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
貌似就是10禁止数按位存储,十进制的每一位存储为4个位,每2个十进制位存储一个字节。你读取到的字节分别取高4位和低4位转换成数字,再按顺序拼接起来就可以了。
[/Quote]
那就是说发送端发送11001001和发送0xC9接收到的一个字节,里面的内容没什么区别的咯?
兔子-顾问
2010-05-15
打赏
举报
回复
貌似就是10禁止数按位存储,十进制的每一位存储为4个位,每2个十进制位存储一个字节。你读取到的字节分别取高4位和低4位转换成数字,再按顺序拼接起来就可以了。
兔子-顾问
2010-05-15
打赏
举报
回复
BCD码
定义:用4位二进制数来表示1位十进制数中的0~9这10个数码,简称BCD码
即BCD代码。Binary-Coded Decimal,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。
由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。
常用BCD编码方式
最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:
有权BCD码,如:8421(最常用)、2421、5421…
无权BCD码,如:余3码、格雷码…
以下为三种常见的BCD编码的比较。
十进数 8421-BCD码 余3-BCD码 2421-A码
(M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0
0 0 0 0 0 0 0 1 1 0 0 0 0
1 0 0 0 1 0 1 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 0 1 0
3 0 0 1 1 0 1 1 0 0 0 1 1
4 0 1 0 0 0 1 1 1 0 1 0 0
5 0 1 0 1 1 0 0 0 0 1 0 1
6 0 1 1 0 1 0 0 1 0 1 1 0
7 0 1 1 1 1 0 1 0 0 1 1 1
8 1 0 0 0 1 0 1 1 1 1 1 0
9 1 0 0 1 1 1 0 0 1 1 1 1
常用BCD码
十进制数 8421码 5421码 2421码 余3码 余3循环码
0 0000 0000 0000 0011 0010
1 0001 0001 0001 0100 0110
2 0010 0010 0010 0101 0111
3 0011 0011 0011 0110 0101
4 0100 0100 0100 0111 0100
5 0101 1000 1011 1000 1100
6 0110 1001 1100 1001 1101
7 0111 1010 1101 1010 1111
8 1000 1011 1110 1011 1110
9 1001 1100 1111 1100 1010
-----------------------
特点:
8421编码直观,好理解。
5421码和2421码中大于5的数字都是高位为1,5以下的高位为0。
余3码是8421码加上3,有上溢出和下溢出的空间。
格雷码相邻2个数有三位相同,只有一位不同。
————————————————————
什么是BCD码
bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,着十个数每个数都有自己的8421码:
0=0000
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
举个例子:
321的8421码就是
3 2 1
0011 0010 0001
原因:0011=8x0+4x0+1x2+1x1=3 0010=8x0+4x0+2x1+1x0=2. 0001=8x0+4x0+2x0+1x1=1
具体:
bcd码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000
举例:
某二进制无符号数11101010,转换为三位非压缩BCD数,按百位、十位和个位的顺序表示,应为<U>__C</U>__。
A.00000001 00000011 00000111 B. 00000011 00000001 00000111
C.00000010 00000011 00000100 D. 00000011 00000001 00001001
解:(1)11101010转换为十进制:234
(2)按百位、十位和个位的顺序表示,应为<U>__C</U>__。
附注:压缩BCD码与非压缩BCD码的区别—— 压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000B表示十进制数8.
--------------------------------
貌似学校里学过。
xlh0053
2010-05-15
打赏
举报
回复
太tm深奥了
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗? 1/ 比网红函数VLOOKUP还全面的功能。——查(查询) 2/ 取其精华,去其糟粕。...——聚(聚合) 9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
飞控学习常见典型
问题
集Q&A——无名创新(2022年4月15日)
飞控学习常见典型
问题
集Q&A——无名创新
vb/vb.net开发技巧荟萃(九)
VBA如何获取控件句柄? 各位大侠看看我这程序 求解 小白向各位请教下VB过滤广告的
问题
关于回调函数的
问题
新手
请教ocx文件创建的
问题
如何用vb自动填写、选择下拉框选项并提交网页表单?? 如何恢复最大化 如何写外接程序启动路径? 标尺控件 各位大侠帮忙啊,纠结好几天了 如何规定TEXT里面只能输入数字? 悲剧的时钟 各位大侠帮帮忙 这样...
服务器组态文件已保护,组态王使用
问题
解答4
感谢“楚天白云”提供,中国工控网整理。61 组态王如何与多台PLC通讯 我有四台SZ-4的PLC,各自都有通讯模块,然后通过一根RS-422 电线连接 到上位机的
串口
,我想在组态王中定义四个变量分别与四台PLC的数据寄存器R2000连接,
问题
是定义变量时只能指定寄存器的类型,不能选择局号,那变量倒底连接哪一台PLC的R2000呢 每台PLC都可设定他的地址。RS422是可以进行多联的,具体设...
vb/vb.net开发精粹(14)
VBA如何获取控件句柄? 各位大侠看看我这程序 求解 小白向各位请教下VB过滤广告的
问题
关于回调函数的
问题
新手
请教ocx文件创建的
问题
如何用vb自动填写、选择下拉框选项并提交网页表单?? 如何恢复最大化 如何写外接程序启动路径? 标尺控件 各位大侠帮忙啊,纠结好几天了 如何规定TEXT里面只能输入数字? 悲剧的时钟 各位大侠帮帮忙 这样的功能在MSHFlexGri
VB
16,554
社区成员
110,527
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章