Bonjour,
Je suis en train de faire un programme sous LabVIEW qui doit communiquer avec une brique Lego Mindstorms (brique qui sert à contrôler un robot fait en Lego) (La communication labview/brique se fait par infrarouges). Cette brique contient un programme esclave (programmé en C). Pour communiquer avec cette brique, je dois lui envoyer des ordres sous forme de chaînes de caractères depuis Labview. A chaque chaîne de caractères reçue correspond une partie du programme à exécuter (le programme esclave interprète les infos envoyées par Labview).
Explications : le programme esclave est fait de la manière suivante (en gros):
#define toto "AVANCE" /* toto est le nom de la chaîne lorsque la brique reçoit l'orde AVANCE depuis labview */
#define tata "STOP"
int variable;
...blablabla...
if ( strcmp(msg, toto) == 0 ) /* là on test si le message reçu est toto (ou AVANCE c'est pareil) */
{
variable = 0;
}
int main (void) /* programme principal */
{
if (variable == 0)
{
le robot va en avant;
}
}
Bon, ça c'est pas un problème.
Maintenant je voudrais envoyer non seulement des ordres (avance, stop, tourne à droite,…) mais aussi des consignes (ex: stop quand distance parcourue = 15mm). Le problème est que la brique ne doit recevoir que des chaînes de caractères. Faudrait donc que je convertisse cette distance en chaîne (sous labview). Le problème c'est que je n'ai pas envie de déclarer une chaîne (dans mon programme esclave) pour chaque distance à parcourir…
Comme solution, je pensais à ça : je décompose la distance en unités, dizaines, centaines… je converti les unités en chaîne (ex: 0=A, 1=B,…,9=I) que j'envoie à la brique. Le programme esclave se charge ensuite de reconvertir cette chaîne en nombre décimal. Idem pour les dizaines et centaines. Ensuite je fais la somme et je retrouve ma distance à parcourir.
Que pensez vous de cette idée ?
Y'a pas moins farfelu ?
Merci
(si j'ai pas été assez clair sur certains détails, dites le moi).
-----