Pages: [1]   Go Down
Author Topic: décomposer les données du buffer série  (Read 836 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

France
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3538
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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); ....
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



Ici
Logged

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
Logged

Pages: [1]   Go Up
Jump to: