Bonjour à tous
J'ai récemment fait l'acquisition d'un kit robot avec un micro contrôleur DFRduino (compatible arduino). J'aimerais échanger des informations entre la carte et mon pc durant l'exécution du programme chargé sur la carte.
Après quelques recherches je suis tombé sur ce site :
http://www.aqra.ca/Port-serie-en-C-sous-Linux
Le code fonctionne, j'arrive a transmettre 1 caractère à la carte. Cependant quand j'essaye d'envoyer une chaine de caractères celle ci est fractionné. Voici le résultat du moniteur série du soft pour programmer la carte :
J'ai recu : a
J'ai recu : s
J'ai recu : t
J'ai recu : est de transm
J'ai recu : ission du port serie
voici la partie du code que j'utilise pour recevoir les données sur ma carte :
D'après la doc pour Serial.available() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 i = 0; while(Serial.available() > 0) { buffer[i] = Serial.read(); i++; } if(i > 0) { buffer[i] = '\0'; Serial.print("J'ai recu : "); Serial.println(buffer); }
Valeur renvoyée :
Le nombre d'octet disponible pour lecture dans la file d'attente (buffer) du port série, ou 0 si aucun caractère n'est disponible. Si une donnée est arrivée, Serial.available() sera supérieur à 0. La file d'attente du buffer peut recevoir jusqu'à 128 octets.
Donc normalement tant qu'il y a des données en attente la boucle while devrait tourner, mais j'ai peut-être raté un truc ...
Pour envoyer les données depuis mon pc j'utilise :
De ce coté là non plus je ne vois pas ce qui cloche ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (write(srl_handle, chaine, strlen(chaine)) < 0) fputs("write() failed!\n", stderr);
Quelqu'un à une idée ?
Merci d'avance.
Partager