125khz rfid Reader - char* / char[]

pylon:
Stimme ich grundsätzlich zu, aber die ungültigen Codes sind ja gerade sein Problem (deshalb die mehrfachen roten Blinksignale). Oder habe ich das immer noch falsch verstanden? Wenn ein Byte als -1 eingelesen wird, ...

Damit hat er überhaupt keine Probleme, denn in seinem Code wartet er immer auf das Startzeichen (ASCII-2) vom Reader, busy waiting bis das erste Zeichen mit dem Startcode da ist. Und nach dem Senden des Startcodes macht der Reader ja keine Pause, sondern sendet hintereinander weg insgesamt 14 Zeichen.

Der gepostete Code wartet einfach jedesmal 10ms auf jedes weitere der 12 folgenden Zeichen. Damit ist er ganz weit auf der sicheren Seite, denn der Reader sendet seine 14 Zeichen natürlich nacheinander weg mit 9600 Baud, d.h. ca. 960 Zeichen pro Sekunde oder fast 10 Zeichen in 10 Millisekunden. Sobald er den Startcode am Arduino detektiert hat ist ca. 20 Millisekunden später der gesamte Readercode im seriellen Eingangspuffer angekommen. Wenn er sein Programm beschleunigen wollte, könnte er statt vor jedem der 12 Zeichen 10 ms mit dem Auslesen zu warten (Gesamt-Wartezeit 120ms) auch einmalig 25ms (mit ausreichend Zeitpuffer) warten und dann sogar alle Zeichen auf einen Rutsch auslesen, weil sie dann bei 9600 Baud Datenrate bereits im seriellen Eingangspuffer vorhanden sind.

while (inChar = Rfid.read() != 2)    
{
}  
delay(25);
for (x = 0; x < 12; x++)
{  
    inChar = Rfid.read();
    msg[x] = inChar;
}
msg[12] = 0;