Hi,
dito...
Versuchs mal mit der Standardvariante fürs byteweise Einlesen mittels
while (Serial.available())
{
data_raw[cnt]=Serial.read();
cnt++;
}
Wäre vielleicht auch nicht verkehrt das Telegramm "sauber"
abzuschließen, z.B. mit einem "\n"?
Mein Tipp wäre auch, das Auslesen in die separate serialEvent() Funktion
zu packen. Eine Variante wie sie z.B. auch bei Bluetooh und GPS Modulen
verwendet wird ist dann:
int cnt = 0;
boolean stringComplete = false;
void serialEvent()
{
while (Serial.available())
{
data_raw[cnt]=Serial.read();
if (data_raw[cnt] == '\n')
stringComplete = true;
cnt++;
}
}
serialEvent wird lt. Beschreibung bei jedem Durchlauf von loop()
geprüft.
Daher reicht in Deiner loop() Schleife die einfache Abfrage
if (stringComplete)
{
// was immer mit data_raw[] passieren soll
}
// stringComplete = false;
// -> rücksetzen nicht vergessen
// ggf. auch gleich cnt = 0
um ein vollständiges Telegramm auszuwerten
Hoffe mal ich bringe da nichts durcheinander... ist Spät geworden heute
und es war ne anstrengende Schicht ;)
Ciao...