Nemesis007
Messages postés4Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention 7 avril 2007
-
13 févr. 2007 à 18:27
mrbozzo
Messages postés11Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention 4 avril 2007
-
2 avril 2007 à 18:00
Bonsoir à tous !
Voila, je fais appel à votre aide car j'ai un gros problème pour mon programme mais tout d'abord, je vais vous définir le but de ce programme :
Le programme en question doit être capable de recevoir des trames envoyés par un réseau rs485 modbus (Je suis l'esclave) passant par un adaptateur rs232 pour être branché au PC. En recevant ces trames, je dois les analyser et en extraire certaines données en voici un exemple 0306000020001E828 (2 chiffres = 1 octet)
En décomposant cette trame :
-> 03 : Adresse du module
-> 06 : Fonction (que je ne touche pas)
-> 00 02 : Marche ou 00 01 : Arrêt
-> 00 01 : Adresse du registre
Une fois décomposée, je dois comparer ces valeurs à celles deja contenues dans le programme (en fait c'est comme si je remplacais le régulateur, il a une adresse déjà implémenté et je ne peux pas y toucher [j'espère que je suis clair]). Si les adresses concordent, suivant l'état (Marche ou Arrêt), je dois afficher dans mon IHM un voyant (vert pour Marche et rouge pour Arrêt).
Pour en revenir au problème, j'ai une classe LiaisonRS232 avec toutes les fonctions pour dialoguer mais on m'a dit que j'avais besoin de thread pour pouvoir analyser une trame dès que j'en recois une.
Les spécifications du programme :
- Langage C++
- IHM en document vue
Mes principales questions sont : où dois-je placer la thread ? et comment puis je faire un voyant qui change en fonction de ce que j'ai récupéré dans la trame ?
Si vous voulez voir le programme n'hésiter pas à me le demander (étant donné que c'est mon premier post, si quelqu'un demande mon programme, je souhaiterai qu'il me dise comme je peux l'upper :D ).
Merci par avance pour toute l'aide que vous me fournirez !
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 15 févr. 2007 à 07:37
Pour ma part je construirais un type def struct voir une classe
tu dois recevoir cette trame mais après tout depend de son type pour son traitement ...
C'est pas exactement pareil si tu recois un array, une chaine ...
En esperant que cela puisse t aider
--------------------------------------------------------------------------------------------------
Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie
mrbozzo
Messages postés11Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention 4 avril 2007 2 avril 2007 à 18:00
J'ai une proposition à te faire, tu crées une variable static, genre
static bool voyant rouge = false;
tu crée un thread qui fait ça (je ne sais pas comment on cré un thread :P
void monThread(){
while(true){
timer.pause(100); // là tu mets un timer qui bloque ton thread tout les 100 ms, enfin, tu mets la valeur que tu veux, c'est pour ne pas que toutes ta ressource soit bouffé par ce thread
if(voyant_rouge) IHM.allumeRouge();
else IHM.allumeVert();
}
}