Bonjour,
Je développe une application sur windows CE, la gestion de port série en mode asynchrone semble non supporté par Windows CE:
flag FILE_FLAG_OVERLAPPED dans la méthode CreateFile non supporté
paramètre LPOVERLAPPED dans la méthode ReadFile doit être NULL.
Donc je suis emmené à travailler en synchrone.
Lorsque j'appelle la méthode WaitCommEvent, cette dernière bloque le thread où (elle est appelée) ainsi que toutes les autres threads qui tentent d'effectuer une opération sur la liaison série (par exemple, remettre à l'état bas le signal DTR , écriture ...)
D'après les info que j'ai pu récupérer sur le web, il est impossible de définir un time out pour cette méthode WaitCommEvent.
Supposons que je prends soin de ne faire aucune autre opération sur le com lorsque WaitCommEvent est bloquée.
Mais comment faire pour fermer proprement mon application? car le thread est toujours bloquée sur WaitCommEvent et je n'arrive pas fermer le port en faisant un CloseHandle de handle de port COM.
Si il faut bannir l'utilisation de WaitCommEvent en mode synchrone, comment pourrais je gérer proprement et correctement les cas d'erreurs ( exemple cable arraché, ou équipement COM éteint => changement de l'état DSR ...).
J'aurai besoin donc
- un thread qui vérifie à chaque intervalle de temps (30ms par exemple) l'état de mes signaux de controle du port COM.
- un thread pour la lecture périoque tous les x ms
- un thread pour l'écriture
Cela fait donc 3 threads en plus de threads de traitements des données reçues, et j'ai peur pour la performance de mon appli vue qu'elle tournera sur un PDA.
Quelqu'un pourra me conseiller pour mieux gérer tout cela?
merci d'avance,
Partager