您现在所在的是:

人机界面

回帖:8个,阅读:1045 [上一页] [1] [下一页]
567
Treasure丶
文章数:74
年度积分:50
历史总积分:567
注册时间:2018/11/29
发站内信
发表于:2019/1/18 13:01:32
#0楼
附件 image.jpg



如上图所示,这个是我使用成功的一个案例,把can报文的一个byte中的八个字分别解析到HDW0-7上

现在问题是,我应该如何编程才能把八个字中的 1-2 解析到hdw1 3-8解析到HDW3-7上呢?
提前感谢大佬的帮助!
5476
121111115
文章数:1400
年度积分:559
历史总积分:5476
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2019/1/18 13:49:04
#1楼
首先你要知道这句是啥意思,他们的意思是HDW0里面放的是CDATA0的第零位数据
HDW1里面放的是CDATA0的数据右移1位后&上0x01,也就是CDATA0的第一位数据
HDW2里面放的是CDATA0的数据右移2位后&上0x01,也就是CDATA0的第二位数据
..........
HDW7里面放的是CDATA0点数据右移7位后&上0x01,也就是CDATA0的第七位数据
然后你想要的答案会自己操作了吗?
567
Treasure丶
文章数:74
年度积分:50
历史总积分:567
注册时间:2018/11/29
发站内信
发表于:2019/1/18 14:10:48
#2楼
回复 #1楼 121111115
你好!万分感谢你的回答!但是这个&0x01 我还是不明白啊!&0x01的实际作用是什么呢? 如果我用0x02得到的是什么结果?
567
Treasure丶
文章数:74
年度积分:50
历史总积分:567
注册时间:2018/11/29
发站内信
发表于:2019/1/18 14:14:39
#3楼
回复 #1楼 121111115
我这里还有一段程序是这样的,这个应该就是把CDATA的0和1位放进HDW170里 如此类推,但是为什么后面是&0x03了呢?
附件 image.jpg
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/1/18 14:23:18
#4楼
&那叫按位与运算.
假设你的字是16位,&0x03是与十六进制3,就是二进制0000 0000 0000 0011,按位与,前面与0都等于0了,后面两位,与1,该是啥就是啥了.
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/1/18 14:28:07
#5楼
另外,这应该不是vb.类c.&就是and的意思.
567
Treasure丶
文章数:74
年度积分:50
历史总积分:567
注册时间:2018/11/29
发站内信
发表于:2019/1/18 14:40:15
#6楼
回复 #5楼 pqsh
哦哦哦好的!大概是能理解了,那我这边改了一下,请问这样的 是不是把CDATA0的1、2字放到HDW0  3-8字放到了HDW1里面了?
附件 image.jpg
5476
121111115
文章数:1400
年度积分:559
历史总积分:5476
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2019/1/18 16:38:29
#7楼
以下是引用Treasure丶2019/1/18 14:14:39的发言:
我这里还有一段程序是这样的,这个应该就是把CDATA的0和1位放进HDW170里 如此类推,但是为什么后面是&0x03了呢?
附件 image.jpg
这一段的意思就是HDW170里面是CDATA的第0位和第1位
HDW171里面是CDATA里的数据往右移动两位后再&上0x03,也就是CDATA的第二位和第三位。
......
0x03的BCD码是0000 0011   所以保留了低两位。这个我以前写过规律,不重复了。
之前的0x01的BCD码是0000 0001  所以保留了最低位。
567
Treasure丶
文章数:74
年度积分:50
历史总积分:567
注册时间:2018/11/29
发站内信
发表于:2019/1/18 17:28:48
#8楼
回复 #7楼 121111115
好的好的谢谢

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004