我目前正在尝试通过 RS485 连接到电表。到目前为止,它工作得很好,除了我在读取仪表在 RS485 线路上写回的内容时遇到问题。
我知道电表的数据是正确的,因为我可以使用 Docklight 和制造商的内部程序读取它。
所以我唯一的问题是我要返回的十六进制字节的转换。
我正在接收
>>> b'\x01\x03\x04Ce/\xec\xe2'
这应该是 8 或 9 个十六进制字节。我希望收到类似的东西
>>> b'\x01\x03\x04\x43\x67\x81\xEC\x43\x68'
问题似乎是python尽可能地将它解释为“ASCII”,并且由于非十六进制数字,我无法进一步转换它。我得到的错误是
>>> binascii.Error: Non-hexadecimal digit found`
当我从另一边看它时,相当于。我正在发送
>>> data=bytearray([0x01,0x03,0x4A,0x38,0x00,0x02,0x53,0xDE])
显示为
>>> bytearray(b'\x01\x03J8\x00\x02S\xde')
当我打印它时
那么我如何告诉 python-3 我想查看 8 个十六进制字节而不是他自动做出的一些解释呢?我相信一旦您知道在哪里寻找,我就会错过一些非常容易的东西。
我想将字节 4、5、6、7 转换为浮点数。但由于它向我显示非十六进制数字,我不能这样做。