est-ce qu'il y a beaucoup de cas où tu ne passes pas dans
If stx = &H2 And etx = &H3 Then
parce que ca se trouve tu recois plein de trames aveec des défauts que tu ne traites pas
parce que normalement on ne gère pas ca comme ca, on concatène tout ce qu'il y a dans le buffer pour rechercher un début et une fin de trame (ou plusieurs comme expliqué ci après)
en plus quand l'event est levé (= des octets sont dans le buffer)
tu lis les 46 premiers octets, s'il y avait 2 trames dans le buffer, une reste en attente, et ne sera lue qu'à la prochaine réception de données, te faisant au final un décalage dans le temps
la communication série n'est pas aussi simple qu'on pourrait le penser
voir ce que je dis ici sur le tcp : http://www.developpez.net/forums/d15...p/#post8178515
sachant qu'en plus sur un port série il y a encore autre chose : autant qu'en tcp si j'envoie 8 et 20 je suis sur que l'autre côté va recevoir 8 et 20, en liaison série rs232 si j'envoie 8 et 20, de l'autre côté on peut recevoir 16 20 et 43
en cas d'interférence les bits peuvent se transformer, certains peuvent même apparaitre ou disparaitre
(il y peut etre de la correction d'erreur sur le nombre de bits, mais pas sur les valeurs je pense)
il convient donc d'avoir un checksum permettant de vérifier que la trame n'a pas subi d'altération
Partager