我需要通过RS485将空中巴士(一种奇怪的修改版本的Modbus)十六进制命令的修改版本发送到串行设备。我想发送的命令是0x8181521500005315。我能够成功地发送命令作为文字的形式:将int转换为用于串行通信的字节
b'\x81\x81\x15\x21\x00\x00\x53\x15'
但我想以某种方式将int变量转换为相同的格式。
这是我到目前为止有:
def advancedWriteR(param):
command = (0x818152*0x10000000000 + param*0x100000000 + genECC('r', param))
msg =command.to_bytes(8, byteorder='big')
ser.write(msg)
奇怪的是,味精变成:
b'\x81\x81R\x15\x00\x00S\x15'
任何帮助,不胜感激!
你的'param'值是多少? genECC()函数做了什么? – JohanL
如果用“\ x52”和“S”替换“R”为“\ x53”,那么你会发现b'\ x81 \ x81R \ x15 \ x00 \ x00S \ x15'与b '\ X81 \ X81 \ X52 \ X15 \ X00 \ X00 \ X53 \ X15'。这有助于你了解发生了什么吗? –
参数值和genECC函数用于创建int变量。 – egemnay