pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010
-
8 avril 2008 à 14:06
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
9 avril 2008 à 12:07
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...
pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010 8 avril 2008 à 15:08
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.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 avril 2008 à 12:07
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.