我需要通過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