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 :

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);
	}
D'après la doc pour Serial.available() :
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 :

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);
De ce coté là non plus je ne vois pas ce qui cloche ...

Quelqu'un à une idée ?

Merci d'avance.