import struct
# 获得modbus前端数据, 高位value1, 低位value2
value1 = 16711
value2 = 13107
# 将高位拆分成两个字节v1, v2 将低位拆分成俩个字节v3, v4
v1, v2 = value1.to_bytes(length=2, byteorder='big', signed=False)
v3, v4 = value2.to_bytes(length=2, byteorder='big', signed=False)
print('v1:', v1, 'v2:', v2)
print('v3:', v3, 'v4:', v4)
# 定义一个函数, 将32位字节转换为float
def bytesToFloat(h1, h2, h3, h4):
ba = bytearray()
ba.append(h1)
ba.append(h2)
ba.append(h3)
ba.append(h4)
return struct.unpack("!f", ba)[0]
# 测试函数, 看结果如何
b_f = bytesToFloat(v1, v2, v3, v4)
print(b_f)
# 定义一个函数, 将float转换为32位字节
def floatToBytes(f1):
b1, b2, b3, b4 = struct.pack("!f", f1)
return b1, b2, b3, b4
print(floatToBytes(b_f))
modbus通信高位字节,低位字节转float32
最新推荐文章于 2024-05-20 23:50:35 发布