Fermer un port COM

Signaler
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Bonjour,



voilà je souhiaterais pouvoir forcer la fermeture d'un port COM, dont
je connais le _handle, mais qui est en train d'être accédé par une
boucle de lecture.



Voilà le style de la boucle de lecture :

while (true)

{

ReadFile(_portHandle, buffer, 1, ref nb_bytes_read, IntPtr.Zero);

}



Certains vont peut être me dire que le problème vient du while(true),
et bien je ne pense pas. Car lorsque le programme arrive à
l'instruction ReadFile, il y reste tant qu'il n'a pas quelque chose à
lire.



Et donc, cela m'empêche de fermer le port, et aussi mon programme entre parenthèses.

2 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
ReadFile est complexe, y'a plusieurs cas de figures qui sont détaillés dans la MSDN, ca donne quoi ca:

while ( ReadFile( ... ) ) { ... }
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
Bah ca ne correspond pas à ce que je veux ta méthode. Je voudrais faire
de la lecture en boucle sur le port, ce que je fais grâce à



while(true)

{

readfile(...



Si je fais while(readfile(...)>0) cela va lire le port tant que je
recois qqch, si je fais while(readfile(...)==1) ca va arréter dès que
je ne recevrais plus rien.



Mais cela me donne une idée. Il n'y aurait pas une exception qui est
levée lorsque l'on recoit un caractère sur le port série ? Cela
m'arrangerait bien. Dans ce cas, je ferais ta méthode. Si je recoit un
caractère, c'est qu'un message arrive, donc tant que tu recois, fais
ReadFile, puis apèrs vu qu'on quitte le readfile, je peux fermer le
port qui n'est plus accéder par ReadFile.