begin process at 2010 02 10 08:38:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

communication thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

communication thread

vendredi 18 avril 2008 à 20:14:56 | communication thread

pupuce54980

bonsoir tout le monde, j'ai un soucis technique j'aurais voulu savoir comment vous vous y prendrais
le soucis c'est que je dévellope un programme avec un chronométrage, donc mes capteurs se sont des cellule photoelectrique relié a un module arduino diciemilia. se module créer une liaison série sur l'ordinateur pour pouvoir communiquer avec celui ci, j'ai 3 capteur 1 au départ un de sécurité et un a l'arrivé, j'ai programmer ma carte entrée sortie pour recevoir un caractère spécifique en fonction du capteur. donc mon chronométrage est simple capteur 1 on enregistre le temps, capteur 3
 on enregistre le temps - le tps de capteur 1

mais bon j'ai une interface graphique, donc pour éviter de figer l'interface il faudrait que je créer un thread, créer le thread c'est pas difficile j'ai réussit a le faire, mais se qui m'ennuie c'est que les variables qui sont dans mon interface ne sont pas dans mon thread et vice versa, en fait j'ai besion d'envoyer des variables de mon interface vers le thread, et une fois le chronométrage effectué de récupérer les variables du thread vers l'interface graphique, j'ai vu que l'on pouvait créer des deléguer pour qu'a partir du thread on puisse lancer une fonction du processus principales mais en aucun cas passer une variable. si quelqu'un a une solution je suis preuneur.
vendredi 18 avril 2008 à 21:59:43 | Re : communication thread

juju12

Tu peux envoyer des messages entre threads cf PostThreadMessage()
samedi 19 avril 2008 à 03:27:11 | Re : communication thread

pupuce54980

heu c vague comme réponse, tu peu détailler un peu svp
samedi 19 avril 2008 à 14:49:58 | Re : communication thread

juju12

C'est pas vague; si tu as construit une interface graphique tu sais déjà ce qu'est un message non? A moins que tu l'ai pas faite en natif. Dans ce cas une petite explication :
à chaque thread est associée une file de messages; ceux-ci sont de nature diverses : pour la plupart ils ont trait aux événements des fenêtres (clics, affichage...) mais tu peux en créer des personnalisés.
Un petit exemple plus ou moins adapté à ton cas :

#define WM_START_CHRONO (WM_USER+0x1)
#define WM_QUIT_THREAD (WM_USER+0x2)
#define WM_CHRONO_RESULT (WM_USER+0x3)

DWORD __stdcall ThreadChrono(LPVOID idMainThread)
{
   MSG msg;
lbl_MsgLoop:
   BOOL bResult=GetMessage(&msg,NULL,WM_USER,WM_NULL); // récupère un message 
   if(bResult==-1) return 1; // si erreur dans la récupération on quitte
   if(msg.message==WM_QUIT_THREAD) return 0x0; // si message quitter on quitte le thread
   if(msg.message==WM_START_CHRONO) // si on demande le chronométrage
   {
      // ton code de chrono
   }
   PostThreadMessage((DWORD)idMainThread,WM_CHRONO_RESULT,la_valeur_résultat,0);
   goto lbl_MsgLoop; // on va attendre un autre message
}

utilisation :
HANDLE hThisThread=GetCurrentThread();
DWORD idThisThread=GetThreadId(hThisThread),idThreadChrono;
HANDLE hThreadChrono=CreateThread(0,0,ThreadChrono,(LPVOID)idThisThread,0,&idThreadChrono);
...
// quand chronométrage souhaité
PostThreadMessage(idThreadChrono,WM_START_CHRONO,0,0);

// pour recevoir la valeur : si tu as une interface graphique, tu as forcément quelque part une boucle de messages donc il suffit de traiter le message WM_CHRONO_RESULT


Voila, je sais pas si ça marche tel quel mais du moins il y a l'idée générale; reporte-toi à MSDN pour l'emploi des différentes fonctions.

samedi 19 avril 2008 à 14:51:45 | Re : communication thread

juju12

j'oubliais : pour quitter le thread chrono proprement (quand tu fermes l'application par exemple) :
PostThreadMessage(idThreadChrono,WM_QUIT_THREAD,0,0);


Cette discussion est classée dans : créer, thread, interface, capteur, chronométrage


Répondre à ce message

Sujets en rapport avec ce message

Créer un thread sous visual c++ [ par kalf2000 ] salut voila je voudrais creer un thread dans un projet ihm sous vc++.je sais qu'il faut que j'utilise la classe CWinThread mais je ne sais pas comment conception d'interface graphique [ par triton057 ] Bonjour,Je souhaite créer un outil de conception d'interface graphique multi plateformes. Quelqu'un aurait il un exemple d'interface de conception d'i comment créer une interface graphique simplement pour un programme en C sous linux [ par zarzar ] bonjourje dois écrire un programme de traitement d'image BMP en C sous linux qui pour l'instant doit tourner en "ligne de commande"j'ai des fonctions Quels outils utiliser pour créer une interface fonctionnant en C++ [ par fanny ] Bonjour, Je débute en C++ et j'aimerais créer une petite appli, avec le langage objet C++. Quel outil me conseillez-vous pour créer l'interface ? interface dynamique [ par emilia123 ] Bonjour. je souhaite dans le but de créer un chat en C++ sous builder, de créer dynamqieument l'interface. Mais je ne sais pas comment gerer les évène créer un thread sous builder [ par jhonny ] Bonjour,Malgré les cours des profs (je suis étudiant en bts informatique industrielle) je n'arrive pas à faire mes threads sous builder pour créer 3 c Interface graphique style Windows [ par eliot5 ] Je viens de créer sous windev un petit logiciel qui fonctionne bien mais j'aimerais connaitre la manière de procéder pour créer une interface graphiqu Créer un thread et recevoir le résultat [WIN32] [ par Alx1x ] Bonjour. J'ai fait un programme sous Windows en C (avec uniquement l'API windows) avec plusieurs fonctions dont une est blocante. Je voudrais y rajout Créer une interface... [ par winwarrior ] Bonjour,Je cherche comment créer une interface avec vc++ 6qq1 peut m'éclairer plz ?win comment créer un thread sous vc++, ou est définie pthread.h [ par saerlo ] GORDON


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales