Bonjour ici!
J'ai un probleme en c et avec des lego! ( oui, bah, fallait s'en douter, je comptais pas creer un post racontant mon week end a Chicago)
Donc, pour mettre dans le contexte, je fais mumuse avec des lego mindstorm (des lego programmables), mon pc tourne sous winXP, j'utilise BrickOS (ca permet de de programmer les lego en C). BrickOS tourne sous cygwin.
jusque là, tout est bon
pour faire tourner un programme qui utilise la tour USB pour faire de la communication PC->lego, j'utilise LNPHost qui est une librairie faite pour ca... mais j'ai un ti probleme avec...
Voila, j'ai fini la mise en situation...
La fonction qui permet d'envoyer des messages par la tour USB fonctionne... mais pas tout le temps: par fois, la fonction bloque et je dois arreter et relancer le programme, et... ca m'embete beaucoup...
J'ai pensé à trois solutions
1) je regarde la fonction et je la corrige... j'ai regardé, mais j'suis incapable de la corriger alors on va faire avec...
2) Je sauvegarde dans un fichier a coté l'etat de mon programme, quand ca bloque... j'arrete et relance mon programme et il reprends comme c'est indiqué dans le fichier... mais bon, je sais pas le faire et j'aimerai que le programme ai pas besoin de moi (c'est con de vouloir faire des robots autonomes si je dois intervenir de temps en temps...)
3) j'utilise un thread (bon je sais pas faire non plus, d'ou mon post ici ) Mon idée, c'est de: lancer le thread avant que j'appel la fonction de communication et je le tue une fois que cette fonction est finie. c'est à dire en gros:
avec mon thread qui doit chronometrer son temps d'exécution, si le temps est trop long, le thread arrete la fonction de communication et la relance...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3je lance mon thread je lance ma fonction communication j'arrete mon thread
Donc voila mon idée... pour faire ca, je pensais mettre un goto dans mon thread, un peu dans ce style là:
avec le goto qui pointe vers une etiquette sur mon main au niveau de ma ligne "je lance mon thread"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void thread(void) attendre deux secondes goto ... fin de la fonction thread
mais là, d'abord, je sais pas trop comment arreter ma fonction communication qui est bloquée, et je ne sais pas si le goto empeche mon thread de se finir (par ce que moi, j'aimerai que mon thread se finisse...) ?
Bon, je sais pas trop comment rédiger ca en C, mais avant, j'aimerai savoir si quelqu'un a pas d'autres idées pour une solution un peu moins "bricolage" ou bien si il existe des choses toutes faites ou bien si... je sais pas, moi, si vous avez quelque chose à en dire
Haha, je suis pas sur d'avoir été clair en expliquant ma solution bricolage... si vous avez rien compris, levez la main, je ré expliquerai.
Merci
JuuL
Partager