Taurnil
Messages postés48Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 2 juillet 2009
-
24 avril 2008 à 15:29
Taurnil
Messages postés48Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 2 juillet 2009
-
21 mai 2008 à 12:44
Bonjour à tous, je suis actuellement sur un projet qui vise à piloter le port série à l'aide d'une petite interface utilisateur.
Cette interface est réalisée à l'aide de la MFC de Visual C++ (je travaille avec la version 6.0).
J'en arrive à mon problème :
Dans mon programme (qui est en fait un temporisateur), je dois vérifier l'heure de l'horloge et si celle-ci est égale à l'heure rentrée par l'utilisateur dans la fenêtre, on envoie un "1" sur une des broches de mon port COM.
Je teste donc l'heure en continu avec ce bout de programme :
code :
<hr size="2" width="100%" />
while (true) {
curTime = CTime::GetCurrentTime();
heure = curTime.GetHour(); //séparation heures-minutes
minute = curTime.GetMinute();
if (heure m_heurefermeture && minute m_minutefermeture) {
// Mise à 0 DTR
EscapeCommFunction(g_hCOM, CLRDTR);
PurgeComm(g_hCOM, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
UpdateData(TRUE);
} else if (heure m_heureouverture && minute m_minuteouverture) {
//Mise à 1 DTR
PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
EscapeCommFunction(g_hCOM, SETDTR);
}
m_heure = heure; //affichage pour test
m_minute = minute;
UpdateData(FALSE);
Sleep(30000);}
return TRUE; // return TRUE unless you set the focus to a control
}
<hr size="2" width="100%" />Vous l'avez donc compris, la boucle se répète en continu toutes les 30 secondes.
Mais le problème est là : J'ai l'impression que mon programme essaie de finir la boucle avant d'ouvrir ma fenêtre alors que celle-ci ne se termine jamais.
Je sais pas comment faire, j'ai entendu parler de threads mais c'est encore un peu compliqué pour moi.
Si quelqu'un trouve quelquechose d'autre, qu'il n'hésite pas. Sinon, un lien vers un tuto sur les threads serait le bienvenu (en français si c'est possible).
A tous merci d'avance, si quelqu'un arrive à me sortir de là, je lui en serais (vraiment très reconnaissant).
Taurnil
Messages postés48Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 2 juillet 2009 21 mai 2008 à 11:50
J'ai le même problème evidemment pour m_heure et m_minute, en fait, si vous regardez bien, je les avais declarée à l'interieur de ma fonction alors que ce sont des variables membres de CFenetre1Dlg.
J'ai donc retiré la déclaration au début de ma fonction et voilà l'erreur que j'ai à la compilation :
error C2597: illegal reference to data member 'CFenetre1Dlg::m_heure' in a static member function.
Comment je fais pour que ma fonction reçoive les variables m_heure et m_minute directement du main ?
J'ai essayé comme ça mais je me doutais que ça ne marcherait pas :