Go Down

Topic: décomposer les données du buffer série (Read 875 times) previous topic - next topic

antoine

Slt, je souhaiterais décomposer les données reçus du port USB pour pouvoir les exploiter avec arduino. Voici un exemple concret :

le buffer de l'arduino reçoît un nombre : 123456789

je veux que ma première variable soit composée des 4 premiers caractères : nb_1 = 1234
la seconde des 3 suivant : nd_2 = 567
et la troisième des deux derniers : nb_3 = 89

merci pour votre aide

fdufnews

Il faut compter les caractères reçus et les ranger dans une chaine de caractères.
Mais le problème c'est d'identifier le début du message, il faut mettre en place un minimum de protocole. Définir par exemple un caractère particulier qui indique où commence la première variable.
Il faut faire un petit automate qui guette l'arrivée du caractère de début de chaine et ensuite compter les n premiers caractères pour les ranger dans une chaine variable1, puis les k suivants dans une autre chaine variable2, et ainsi de suite. Ne pas oublier de mettre un terminateur (\0) à la fin des chaines.
A la fin on convertit les chaines en valeurs numériques avec la fonction atoi(): v1 = atoi(variable1); v2=atoi(variable2); ....

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

antoine

Merci beaucoup, en fait ce que je viens de comprendre c'est que si on fait plusieurs fois de suite un Serial.Read(); et bien le premier renvoie le premier caractère (ou octet) du buffer, le deuxième renvoie le second et ainsi de suite. Il suffit donc bel et bien d'interposer pour chaque variable un caractère de début et de fin.
Merci beaucoup de votre aide ;)

Go Up