begin process at 2008 07 05 07:24:04
1 205 054 membres
40 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Comment 'flusher' un port serie ? [ Windows / Réseau & Internet ] (pyr0123)

Comment 'flusher' un port serie ? le 08/04/2008 14:06:01

pyr0123
Bonjour,
Je fais un projet en C++ .net (managed)
Mon programme affiche ce qui arrive sur le port série dans une richTextBox. (en gros un hyperterminal)

Le probleme est que si je 'read' mon port serie dans une boucle while(1), je n'ai jamais rien qui s'affiche.
En effet c'est d'abord stocké en mémoire puis envoyé à la textBox une fois le while terminé. Or mon while ne se termine jamais.

Je me suis renseigné, j'ai vu qu'on pouvait faire un Flush du port serie, qui dans mon cas viderai le buffer pour l'afficher.
Mais ce membre 'flush' n'apparait pas dans la liste (IntelliSense de VC++), et si je le met 'à la main', le compilo me dit que ce n'est pas un membre. Or Flush est référéncé par la msdn !
Je ne comprends pas pourquoi je ne peux pas utilisé ça...

Merci de votre aide


Re : Comment 'flusher' un port serie ? le 08/04/2008 14:23:26

Arnotic
(Admin CS)
Utilise donc des threads.

@+
Arnotic,
Admin CS

Re : Comment 'flusher' un port serie ? le 08/04/2008 14:54:51

DeAtHCrAsH
Essaye de regarder cet article :
[ Lien ]

Shell

Re : Comment 'flusher' un port serie ? le 08/04/2008 15:08:00

pyr0123
Arnotic > merci mais ca serait quand meme plus simple si j'avais access à la méthode flush..

Deathcrash > Merci, j'avais déjà vu cette classe. Mais j'ai fais tout mon code avec System::IO::Ports::SerialPort...

Ce n'est pas bizarre que la MSDN propose une méthode que le compilo VSC++ 2005 ne prend pas en charge ?!

j'ai essayé ça dans mon while(1) :

// tentative de flush...
serialPort1->BaseStream->Flush();
richTextBox1->Refresh();
serialPort1->DiscardOutBuffer();


Mais rien... le Refresh() afiche bien mes données au fur et à mesure mais la fenetre reste 'freezée', je ne peux pas appuyer sur le bouton stop par exemple.


Re : Comment 'flusher' un port serie ? le 09/04/2008 12:07:20

DeAtHCrAsH
Comme Arnaud te l'a conseiller utilise des threads.
En C++/CLI tu dois avoir le namespace System.Threading qui permet de faire cela.
Tu n'aura ainsi plus besoin de flusher ton port série pour forcer la mise à jour des data.

Shell


Classé sous : port, serie, while, flush, flusher

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS