Je dois envoyer une version modifiée d'une commande hexadécimale Airbus (une version modifiée bizarre de Modbus) via RS485 à un périphérique série. La commande que je veux envoyer est 0x8181521500005315. Je suis en mesure d'envoyer avec succès la commande comme littérale sous la forme:Conversion d'un int en octets pour une communication série
b'\x81\x81\x15\x21\x00\x00\x53\x15'
mais je voudrais convertir en quelque sorte une variable int dans le même format.
Voici ce que j'ai jusqu'à présent:
def advancedWriteR(param):
command = (0x818152*0x10000000000 + param*0x100000000 + genECC('r', param))
msg =command.to_bytes(8, byteorder='big')
ser.write(msg)
La chose étrange est que msg devient:
b'\x81\x81R\x15\x00\x00S\x15'
Toute aide est grandement appréciée!
Quelle est votre 'valeur param'? Et que fait la fonction 'genECC()'? – JohanL
Si vous remplacez "R" par son équivalent hexadécimal "\ x52" et "S" par "\ x53", vous verrez que b '\ x81 \ x81R \ x15 \ x00 \ x00S \ x15' est exactement le même que b '\ x81 \ x81 \ x52 \ x15 \ x00 \ x00 \ x53 \ x15'. Cela vous aide-t-il à comprendre ce qui se passe? –
La valeur param et la fonction genECC permettent de créer la variable int. – egemnay