LabVIEWForum.de
Jeweiliges High und Low Byte richtig zusammenfügen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Jeweiliges High und Low Byte richtig zusammenfügen (/Thread-Jeweiliges-High-und-Low-Byte-richtig-zusammenfuegen)



Jeweiliges High und Low Byte richtig zusammenfügen - rookieNo.x - 25.10.2012 15:31

Hallo zusammen,

ich bin Labview Anfänger und beschäftige mich mit Folgendem.
Über USB-Port (RS232 to USB-Converter) erhalte ich kontinuierlich 8N1 Daten (High und Low Byte im Wechsel).
Hierbei handelt es sich um 12Bit-Daten im Zweierkomplement rechtsbündig.
D.h. das LSB liegt im Low Byte Bit0 und das MSB liegt im Highbyte Bit 3.

Diese werden dann zusammengesetzt und visualisiert.
Funktioniert wunderbar, doch leider fehlen bei den gesendeten Daten ab und zu das High, bzw. Low-Byte.
Demzufolge setzt mein derzeitiges VI dann z.B. 2 High Bytes zusammen was schlecht ist und zu falschen Werten führt.

Um dies zu lösen habe ich jetzt meine 8N1 Daten anders zusammengesetzt damit eine Unterscheidung zwischen High und Low Byte möglich ist. Ein High Byte bekommt als MSB eine 1 und ein Low Byte dementsprechend eine 0. Im High Byte nutze ich zusätzlich noch die 2 freien Bytes für Status Meldungen später.

Wenn ein Fehler Auftritt soll mein Programm den Wert wegwerfen und dann den nächsten auf Richtigkeit prüfen und erst dann zusammensetzen/visualisieren. Ausserdem soll es so sein, dass die beiden falschen Bytes verworfen werden.

Mir stellt sich an dieser Stelle die Frage, wie ich es am besten löse, dass mein VI Die einzelnenen Bits quasi verarbeitet, also die High Low Kennung rausmaskiert, die 2 Status Bits verarbeitet und dann die Daten richtig zusammen setzt.

Kennt jemand vielleicht eine einfache Lösung, gibt es vielleicht besondere Bausteine?
Besteht vielleicht die Möglichkeit Bits zu shiften und zu maskieren?

Mein VI habe ich hier als png angehängt.

Wenn ich mit meiner derzeitigen Methode "Case und Vergleichoperatoren" weiterarbeite schleichen sich sicher schnell Fehler ein, es wird richtig kompliziert und unübersichtlich.

Ich bin für jede Hilfe dankbar.


RE: Jeweiliges High und Low Byte richtig zusammenfügen - GerdW - 25.10.2012 16:10

Hallo rookie,

so könnte man die Daten (deiner Beschreibung nach) auswerten:
[attachment=42001]
Um das richtige Zuordnen von Hi/Lo-Byte musst du dich aber noch selbst kümmern, im Bild ist nur das Maskieren und Shiften von Bits gezeigt...

Wenn du wirklich Bytes zwischendrin "verlierst", ist es wenig sinnvoll, den erhaltenen Datenstrom stur nach I16 zu typecasten. ich würde besser den U8-Datenstrom filtern und bei "fehlenden" Bytes dort nach einer gültigen Folge von Lo/Hi-Bytes suchen...


RE: Jeweiliges High und Low Byte richtig zusammenfügen - rookieNo.x - 29.10.2012 18:43

Hallo GerdW,

danke für die schnelle Antwort.
Habe nicht mit so einer schnellen Antwort gerechnet.

Das Maskieren klappt wunderbar, aber mit dem Filtern der richtigen High-Low-Byte Folge tue ich mich noch etwas schwer.

Habe Deinen Rat befolgt und den Type-Cast verworfen.