Du liest einfach 12 Zeichen von der SoftwareSerial ein, ohne zu wissen, dass die dort überhaupt angekommen sind. Da Du das überaus langsam machst (und damit Deinen ganzen Sketch blockierst), funktioniert es in den meisten Fällen, trotzdem ist es sehr unschön und kann zu Race-Conditions führen. Der Timeout ist eingebaut, damit der Sketch nicht gleich stehen bleibt, wenn Dein Reader, aus welchen Gründen auch immer, mal nicht die gewünschten 12 Zeichen liefert.
Kleiner Einspruch: Sicher können auf seriellen Leitungen Zeichen verloren gehen.
read() blockiert aber nicht, sondern liefert -1, was zu einem ungültigen Code führt und sich mit der nächsten Start-Kennung ( 0x02 ) wieder synchronisiert.
while (inChar = Rfid.read() != 2)
{
}
Vermutlich weiss Lorenz gar nicht, dass dies der beste Teil seines Codes ist
(Zusammen mit der Tatsache, dass der rfid-Reader ein Start-Zeichen hat und irgendwann aufhört zu senden, wenn kein Tag in der Nähe ist.)