Case-Struktur, in best. Fall andere Aktion ausführen
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
22.12.2009, 16:00 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2009 19:21 von jg.)
Case-Struktur, in best. Fall andere Aktion ausführen
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
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Case-Struktur, in best. Fall andere Aktion ausführen
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:
Edit: false und true müssen vertauscht werden.
Case-Struktur, in best. Fall andere Aktion ausführen
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.