LabVIEWForum.de - Case-Struktur, in best. Fall andere Aktion ausführen

LabVIEWForum.de

Normale Version: Case-Struktur, in best. Fall andere Aktion ausführen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo.

Ich bin mal wieder mit einer Anfänger-Frage hier.

Es geht um Folgendes:

Ich habe ein boolsches Array vorliegen.

Dieses muss manchester-decodiert werden, und zwar soll das wie folgt stattfinden:

Ich hole mir immer zwei Werte aus dem Array heraus, dann die nächsten beiden, und wieder die nächsten beiden usw.
"01" soll für 0 stehen
"10" soll für 1 stehen
soweit so gut, das ist auch kein problem, WENN alles passt.

Aber die werte "00" und "11" lassen ja logischerweise auf einen Fehler schließen, oder zeigen dass ich genau um ein Bit versetzt angefangen habe.

Für den Fall das die Schleife um ein Bit "versetzt" angefangen hat, würde ich einfach die Schleife nochmal neu starten lassen, allerdings würde ich dann gerne das Array um eine Stelle rotieren lassen,das selbiges nicht nochmal auftritt. Und genau da ist mein Problem.
Will ich in den Fall 0 für 00 oder 3 für 11 das rotieren "einbauen" bekomme ich Fehler, dass ich unverbindete Tunnel hätte.

Jetzt bin ich am überlegen wie ich das, ich nenne es mal "synchronisieren" der Decodierung, hinbekomme.

Allerdings fehlen mir dazu die Einfälle.

Wäre gut wenn mir jemand einen Denkansatz geben könnte.

MFG

Das programm OHNE die Fehlererkennung ist dabei.
LV-Version 8.6
Ich würd's so machen (wenn ich Dein Problem richtig verstanden habe):

[attachment=23327]
Lv86_img

Gruß Markus
Rotieren lassen wäre keine gute Idee. Denn dann kämen erstes und letztes bit zusammen und würde verglichen, obwohl sie doch gar nicht zusammen gehören. Du kannst nur wahlweise die Dekodierung bei Bit 0 oder bei Bit 1 beginnen lassen und nachschauen, wo es weniger Fehler gibt. Z.B so:
[attachment=23332]
Edit: false und true müssen vertauscht werden.
Danke schonmal an euch beide!

Ich löse es jetzt anders, simple aber effektiv.

Um den DAQ - Assistenten " zu aktivieren" also dass er die von mir gewünschte Anzahl von Samples macht, habe ich einen Taster.
Es wird quasi pro Tastendruck eine "Sequenz" gemessen.

Wenn beim decodieren 00 oder 11 ansteht, ergibt die = verknüpfung ein true, dieses true verwende ich um neben dem Start taster (mit einer Oder verknüpfung) eine neue messung mit dem DAQ - Assistenten auszulösen. Dann hab ich zwar ab und an "Fehlmessungen" aber das stört nicht weiter. So bekomm ich immerhin ständig das "richtige" Ergebnis.
Referenz-URLs