各位大佬们好,最近在学习modbus通信协议,废了老大劲终于把数据从传感器里面读出来了,但是卡在数据处理这一步了处理方法说明书上写的很详细,可是这部分代码实在是不会写,希望有大佬指点一二。
比如这个例子,读到的数据顺序为 66 66 42 7B,需要将其转为二进制后分成1位符号位、8位指数位和23位尾数,然后分别化为整数后再计算===========================================
步骤1:66 66 42 7B对应0x427B6666
将二进制数分成符号、指数和尾数
0 10000100 11110110110011001100110
1为符号+ 8位指数+ 23为尾数
S:0 二进制 = 0 (正符号)
E:10000100 二进制 = 1*27 + 0*26 + 0*25 + 0*24 + 0*23 + 1*22 + 0*21 + 0*20
= 128 + 0 + 0 + 0 + 0 + 4 + 0 + 0
= 132
M:11110110110011001100110 二进制 = 8087142
步骤2:计算十进制数
D = (-1)S * (1.0 + M/223) * 2E-127
= (-1)0 * (1.0 + 8087142/223) * 2132-127
= 1 * 1.964062452316284 * 32
= 62.85
===================================
如果有大佬愿意指点一下,小弟感激不尽
|