Bonjour,
Afin de vous faire un retour, l'envoi de trames ainsi que la récéption d'une réponse du tiroir sont bien établis grâce à votre aide aux lignes suivantes

:
Code : Tout sélectionner
def test_serial():
#Envoi de la trame du Terminal vers tiroir électronique
Trame_connect = "1002010000000000000000008000000010101003"
ser.write(bytearray.fromhex(Trame_connect))
time.sleep(1)
#Décriptage trame reçue Tiroir électronique vers Terminal
#while True:
retour_MPU_connect = ser.read()
print hex(int(retour_MPU_connect.encode('hex '),16)),
Il me reste cependant une question, le tiroir électronique genère un checksum de 4 Bytes en fin de trame.
Afin de valider l'intégrité des données, je souhaiterai établir le calcul de ce checksum avec la trame reçue.
Le checksum portant sur 4 Bytes, je ne peux pas utiliser la fonction hashlib.md5 ...
J'ai réussi à établir le calcul via Vbscript, mais j'ai du mal à l'établir en python..
Code : Tout sélectionner
#########
#VBScript#
#########
somme_trame = 0
For Offset = 1 To Len(trame_totale) Step 8
' inversion MSB LSB
Mot = "&h" + Mid(trame_totale, Offset + 6, 2) + Mid(trame_totale, Offset + 4, 2) + Mid(trame_totale, Offset + 2, 2) + Mid(trame_totale, Offset, 2)
somme_trame = somme_trame + Val(Mot)
Next Offset
checksum_trans = Modulo(((16 ^ 8) - somme_trame), 16 ^ 8)
Checksum_Transport = checksum_trans
Auriez-vous des pistes svp afin de trouver une équivalence en Python, ou quelque chose de plus simple ?
Merci d'avance !