Trasferimento seriale Arduino/Raspberry

E' da un paio d'ore che mi sto scervellando per risolvere questo problema ma non riesco ad arrivare ad una conclusione.
Quindi, prima di andare a dormire vi chiedo un aiuto.

Voglio inviare dati tra raspberry e arduino in entrambe le direzioni, però il Serial.read() permette di leggere un byte alla volta quindi ho pensato inviare una stringa di dati separati da una virgola. Per fare ciò ho bisogno di trasformare i dati che ricevo in decimali (ovvero per inviare 21 invio il 2 e poi l'1 e poi li unisco facendo ((2*10)+1) ).
Ho pensato di accumulare i dati in un vettore fino a quando non viene premuto invio (stavo simulando la virgola) ma non riesco nel mio tentativo.

int LED_1=11,LED_2=12,LED_3=13,x,y,z;
int SerialTotal,c=0,buf[3];
void setup(){
  Serial.begin(9600);
  pinMode(LED_1,OUTPUT);
  pinMode(LED_2,OUTPUT);
  pinMode(LED_3,OUTPUT);
}

void loop(){
  if (Serial.available() > 0){ 
      buf[c] = Serial.read()- '0';
      c=c+1;
      Serial.println(buf[c];
   }
//Vedo se l'ultimo dato corrisponde ad un invio
   if(buf[c]==-38){
     c=0;
     SerialTotal = ((buf[2]) + (buf[1]*10) + (buf[0]*100) );
     Serial.print("I received: ");
     Serial.println(buf[0]);
     Serial.println(buf[1]);
     Serial.println(buf[2]);
     Serial.println(SerialTotal);
   }
}

C'è una strada più veloce per quello che voglio realizzare?
Altrimenti, potreste dirmi gentilmente dove sbaglio? Grazie

Guarda l’ultimo esempio qui → Gammon Forum : Electronics : Microprocessors : How to process incoming serial data without blocking
Ci sono anche funzioni già pronte → http://arduino.cc/en/Reference/ParseInt e http://arduino.cc/en/Serial/ParseFloat
Esempio → http://arduino.cc/en/Tutorial/ReadASCIIString (lo trovi nell’IDE negli sketch di Esempio)

Grazie PaoloP per il tuo suggerimento, ho cercato dove mi hai detto e in più ho girato in giro per internet e sono giunto a ciò che cercavo.
Posto il codice per chi in futuro dovesse incontrare il mio stesso bisogno:

//Alex96T   23/04/2014
//Streaming data with delimiters.
//After uploaded the code on your Arduino try to type:
// <125,25,3654,487,598,63>
const char sdel = '<'; //starting delimiter
const char edel   = '>'; //starting delimiter

const int n_el = 6;  //number of element to acquire
int el[n_el];

void processdata(){
    if (Serial.read() == sdel){ 
      for(int i=0;i<n_el;i++){
        el[i]= Serial.parseInt();
      } 
      if (Serial.read() == edel){
        for(int i=0;i<n_el;i++){
          Serial.println(el[i]);
        } 
      }
    }
}

void setup(){
  Serial.begin(115200); 
}

void loop(){
  while (Serial.available() > 0){
    processdata(); 
  }
}

Invece mi si presenta un altro problema, ovvero non riesco a inviare e trasmettere dati dal raspberry ad arduino.

Questo è il codice in python:

import serial
ser = serial.Serial('/dev/ttyACM0',115200)

while True :
        ser.write('34')   #invio un dato
        ser.readline()    #leggo la seriale

Su arduino è caricato un semplice programma che legge la seriale e printa carattere dopo carattere (sempre in seriale).
La velocità è impostata su entrambe le schede a 115200... non so proprio dove sto sbagliando..

Se usi il sistema di prima, forse dovresti usare

ser.write ('<34>')

La butto li, non sò se questo può essere il problema. Raspberry di solito usi un sistema Linux, la seriale potrebbe avere i permessi di lettura per il tuo utente e non quelli in scrittura. E' solo una idea.

paulus1969:
Se usi il sistema di prima, forse dovresti usare

ser.write ('<34>')

No, prima di provare quella tecnica ho caricato un semplicissimo programma che ricevuto in input dei dati li riscrive su seriale (legge seriale /scrive seriale). ho provato a fare delle prove sull’emulatore della seriale da pc e funziona (com3)

nid69ita:
la seriale potrebbe avere i permessi di lettura per il tuo utente e non quelli in scrittura. E’ solo una idea.

Ho già provato a fare un test sola scrittura/sola lettura e funzionava…

Come hai collegato fisicamente i due dispositivi ?

nid69ita:
Come hai collegato fisicamente i due dispositivi ?

per ora sono collegati tramite usb

EDIT:
Ho risolto, cercando su internet ho scoperto che il ser.readline() aspetta finché non trova uno /n che nel mio caso mancava