Je me pose plusieurs question suite à des observations sur le comportement de mon application.
Cette application permet de stocker dans un fichier les données en provenance d'un port série. Ceci est réalisé par le biais d'une fonction ("dataReceived") appelée à chaque réception sur la liaison série utilisée. Cette fonction appelle elle même une autre fonction (qui elle va mettre en mémoire les données), en safe-thread. Voilà pour le fonctionnement général.
L'autre comportement de cette application est que :
Chaque fois qu'une erreur de réception est signalée on revient à la ligne dans le fichier. Bien que (à priori, et c'est également une de mes questions) l'on ne puisse pas faire correspondre (temporellement) l'événement ErrorReceived à l'événement DataReceived, je les ai entrelassés pour pouvoir à peu près savoir quelle donnée reçue à fait l'objet d'un ErrorReceived.
Note : le fichier est également affiché dans une TexBox pour voir son avancement en temps réel.
Voilà ce qui me trouble :
Le transfert que j'effectue, je le connais. C'est-à-dire que je connais exactement où vont se trouver les erreurs de récepetion du côté pc, ainsi que le nombre et la valeur des données.
Et bien, se transfert qui prend 4s en temps réel, en prend 8 à la réception. Bon OK on peut se dire que c'est le buffer de réception (matériel) du port série qui se remplit. Mais dans ce cas lors du traitement on ne devrait plus avoir de ErrorReceived, puisque c'est un événement ponctuel qui n'a pas de lien directe avec les données lues.
Bref je me demande simplement qu'est-ce qu'il se passe du côté windows, qu'est-ce qu'il met en mémoire tempon, met-il également toutes les occurences de ErrorReceived ? Où est-ce qu'il met ça ... ? Est-ce possible de savoir exactement qu'elle donnée reçue a généré l'ErrorReceived ?
Merci d'avance. Si je n'e suis pas assez clair, n'hésitez pas à me demander des précisions ...
Partager