Zitat Zitat von Sternthaler
@harry3
Danke für deine Erklärung. Hört sich erst mal gut an.

Kleine Folgefrage(n): Wie synchronisiert du auf schwarze Bits? Soll heissen woher weißt du, wann du die weißen Bits unberücksichtigt lassen musst? Wie fährt dein Asuro über den Barcode? Feste Startposition, oder 'in freier Fahrt' und der Barcode taucht 'unverhofft' auf? Programmcode?
Asuro fährt in freier Fahrt über eine weiße(!) Fläche. Sobald der erste schwarze Strich gefunden wurde, wird er als Startbit interpretiert und nun startet die Synchronisation mit der Odometrie.

Nun werden die auftauchenden Helligkeitswerte ausgewertet und als 1 oder 0 abgespeichert. Nach einer Länge von exakt 165mm=55ticks bleibt Asuro stehen. Nun werden die im Array gesamelten Daten ausgewertet. Da wird unter anderem das Prüfbit verglichen, und außerdem geschaut ob ein Stoppbit vorhanden ist. Wenn nicht, dann nimmt Asuro an dass der Code aus der falschen Richtung überfahren wurde und gibt einen Fehlercode aus.
Gleiches gilt für das Prüfbit.
Nur wenn beide Bedingungen erfüllt sind, gibt Asuro den berechneten Dezimalwert zurück.

Code kommt sofort, ich muss nur noch die Debug Zeilen rauslöschen und das ganze in eine Funktion packen.


Grüße,
Harri