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.
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.