Int-Werte per C# an Arduino UNO senden

Ich habe eine C# Application, die serielle Daten an den Arduino senden und von ihm empfangen kann. Allerdings kann ich bislang nur einen char-weisen Empfang der seriellen Daten im Arduino darstellen:

while(Serial.available())
{
 incomingChar = (char) Serial.read();
 ...
 buf[i++] = incomingChar;
 ...
 delay(1);
}

Mir geht es darum, auch andere Daten als Strings empfangen zu können, also auch Zahlwerte wie zB 225 (int) oder 2.659 (float) etc.
Imgrunde fehlt mir die Möglichkeit, wie in anderen Programmiersprachen einen ganzen String auszuwerten und diesen in einen Integer-Wert o.a. zu konvertieren.
Wenn ich z.B. 225 sende, erhalte ich im Bufferarray [2,2,5] aber wie mache ich daraus 225 (int)?
Gibt es eigentlich nicht die Möglichkeit in avr-gcc auch komplexere Daten eleganter zu verarbeiten mit entspr. System-Klassen wie in C++ oder C#?

so:

long incomingByte;   
char Data[8];
int i;
unsigned long Tempo;

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

void loop(){ 
   do {
     if (Serial.available()) {       
       Data[i] = Serial.read();
       i++;
       }     
     if(i<1)Tempo = millis(); 
     } while (i<7&&(millis()-Tempo) < 500);  
   Data[i] = 0;    
   incomingByte = atof(Data);  
   i=0;
   Serial.print(incomingByte);
}

Liest max 7 Stellen und wartet 0,5 Sekunden bis die Übertragung fertig ist.

Grüße Uwe

Danke Uwe, das sieht ja schon mal ganz gut aus und hilft mir weiter.
Ich möchte allerdings eine ganze Reihe von Daten senden, sowohl zum als auch vom Arduino Board und überlege, wie ich das am besten anstelle.
Am besten wäre ein Schema wie:
Name,Wert;Name,Wert;Name,Wert;Name,Wert;Name,Wert;\n
Die Daten kämen dann als Char an, müßten dann aber 1. Zerlegt werden in Wertepaare: Bezeichner/Wert und 2. könnte der Wert sowohl ein string, aber auch int, long oder float sein. Das in C# umzusetzen ist denke ich kein Problem. Aber wie in Arduino-C?
Ich kann natürlich alle Zeichen in ein Array schreiben. Doch das hilft mir noch wenig. Gut wäre eine Methode, die Daten schon beim Empfangen in ein 2 dimensionales Array (Schlüssel/Wert) zu schreiben.
:-? Doch, da ich von C nur wenig Ahnung habe fehlt mir eine Idee, wie ich das umsetzen könnte, da ich nicht weiß, wie ich Strings verarbeiten kann, sondern nur einzelne Zeichen.
Die Serial.print Methode übergibt zwar alle möglichen Werte aus Arrays als Char-kodierten Wert aus, doch wie kann ich das in umgekehrt statt auf die serielle Schnittstelle in eine Variable schreiben, eine nachträgliche Konvertierung wäre dann ja machbar.

Danke für die Hilfe,

Gruß Tom

Hallo Tomybyte

Du liest die ganze Antwort in ein großes String und teilst sie dann auf. Wenn Du ein Trennzeichen (Strichpunkt wie Du vorschlägst) verwendest kannst Du auch einzele Substrings erhalten.

Lies mal PString | Arduiniana bzw String() - Arduino Reference

Grüße Uwe