Bonjour,
Je code actuellement un programme qui me détecte et lit les évènements du port COM à l'aide de l'API Windows. Pas de pbs pour l'ouverture, la détection, la lecture et l'écriture mais un léger pb pour la détection de la fermeture. En effet j'utilise WaitCommEvent mais si je débranche "à l'arrache" le µC qui lui envoie les données bin il n'y a rien qui est détecté, so comment faire?
J'ai vu qu'il y a la fonction WaitForSingleObject(evenement, timeout); qui a l'air sympa pour ce que je cherche mais si je la mets, est-ce à la place du waitcommevent ou en plus (ca ferait trop d'attente dans ce cas-là...).J'ai déjà essayé de la placer dans le if(res!=0) avec un timeout de 5000ms, puis j'ai débranché le port mais nada mon programme ne détecte pas l'inactivité du port pdt les 5s, donc que puis-je faire pour remédier à cela?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 HANDLE hserial; initialisation(hserial); initialisation(evenement, hserial); res = WaitCommEvent(...) if(res!=0){ traitement ResetEvent(...) } else{ pas d'évènement }
De plus pour lire le port COM j'utilise ReadFile mais elle lit pas toujours des bons trucs les 5-10 ères itérations, dois-je laisser tourner mon code à vide pdt 5-10s au début le temps qu'il se cale ou bien purger le buffer du port com (PurgeComm ne m'a rien fait du tout avec les options PURGE_RXCLEAR et PURGE_TXCLEAR)...
Voilà si qqn est un peu plus expert que moi en la matière, je serai reconnaissant de son aide. Bonne soirée
Partager