Je suis en communication avec l'appareil utilisant SerialPort. L'appareil a RS-485, de l'autre côté (PC) est RS-232 (port virtuel). L'appareil fonctionne, envoie et reçoit des données correctement.L'événement DataReceived ne se déclenche parfois pas
Le problème est que l'événement DataReceived n'est parfois pas déclenché. J'envoie des données à l'appareil en utilisant System.Timer, une fois toutes les 10 secondes. La plupart du temps cela fonctionne bien, mais toutes les 1-10 minutes je n'ai pas de réponse, puis, après 2-4 fois plus l'événement DataReceived est finalement déclenché et j'obtiens un groupe de données (tout ce que j'ai précédemment "demandé" car est dans le tampon). La question est: Comment est-ce possible? Je ne peux pas mettre d'exemple de code ici, je suis désolé, mais il n'y a pas de multithreading dans mon application (seulement le thread principal et les threads avec les événements Timer_Elapsed et DataReceived, je pense qu'ils sont élevés sur des threads séparés) mon événement DataReceived est traité rapidement et ne doit pas être déclenché en parallèle (10 secondes suffisent, le temps de réponse de l'appareil est inférieur à 1 seconde). Si j'utilise Thread.Sleep, c'est dans des endroits où je suis sûr que ça ne va pas interférer avec quoi que ce soit. Il peut s'agir plus d'un problème de matériel que de logiciel, car le port COM fonctionne de la même manière lorsque je le teste en utilisant d'autres applications (l'une d'entre elles, que le fabricant du périphérique a fournie pour tester la connexion, ne le fait pas). on dirait qu'il a été écrit en C#). Mais je ne suis pas très bon avec le matériel. Peut-être qu'il y a un problème avec le PC ou le port COM (ce n'est pas intégré mais externe)? Ou peut-il s'agir d'une chose liée au système d'exploitation (mon application est un service Windows fonctionnant sous Windows Server 2003).
pourquoi ne lui donnez-vous pas un upvote alors? – jgauffin
Pas de problème, @Arie. Je suis content que vous l'aillez compris. –