LabVIEWForum.de
speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array (/Thread-speichern-von-hexadezimalen-Befehlen-verschiedener-Laenge-in-2D-Array)



speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - mrstrom - 02.05.2011 17:51

Hallo LabViewforum,

Ich habe folgendes Problem: Ich möchte Befehle für einen Sensor in hexadezimalen Zahlen in einem 2D A speichern und übergeben. Pro Zeile des Arrays soll ein Befehl gespeichert werden. Ein Befehl kann aus drei oder vier Bytes bestehen. Jedes Byte eines Befehls wird in einer extra Spalte gespeichert. Mein Problem ist nun das LabVIEW bei den Befehlen mit 3 Byte in das 4 Byte eine 0 ergänzt und nicht unbelegt lässt. Das bringt den Sensor aber durcheinander weil er einen 3 Byte Befehl erwartet und keinen 4 Byte Befehl. Ich kann die nullen aber auch nicht grundsätzlich herausschneiden da bei dem 4 Byte Befehl im 4 Byte unter umständen eine 0 stehen kann.

Im angehängten Bild ist diese Problematik noch einmal veranschaulicht.
Kann ich dieses Problem mit einem numerischen Datentyp lösen oder muss ich auf Strings ausweichen, was ich aber auf Hinblick des restlichen Programms nur ungerne tun würde, was würdet ihr machen?

Viele Grüße mrstrom
[attachment=33605][attachment=33605]


RE: speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - Lucki - 02.05.2011 18:13

Die Lösung ist z.B:
Verwende statt des Formates "2D-Array" das Format
"1D-Array of [Clusters of 1D Array]".
[attachment=33606]


RE: speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - mrstrom - 03.05.2011 10:39

Ja, danke für die Idee, es funktioniert soweit auch schon ganz gut. Ein Problem bleibt aber noch:
Ich habe mein Cluster nun mit 10 Arrays definiert, da maximal eine Befehlsfolge von 10 Befehlen vorkommen kann.
Übergebe ich nun eine Befehlsfolge mit z.B 8 befehlen funktioniert alles. Möchte ich danach nochmal eine andere Befehlsfolge mit weniger Befehlen übergeben, bleiben die nicht überschriebenen Befehle erhalten. Nun kann ich ja die Arrays nicht vor dem Schreiben komplett mit nullen initialisieren, da sonst wieder das Anfangsproblem (Mein erster Beitrag) auftritt. Kann ich vor dem Schreiben mein Cluster über Eigenschaftsknoten so initialisieren das in keinem Array des Clusters wirklich nichts drinsteht auch keine 0?

Vielleicht habt ih ja noch eine schlaue Antwort parat.

mrstrom


RE: speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - Lucki - 03.05.2011 12:46

Die Null ist ein Wert wie jeder andere, damit sollte man nicht initialisieren. Initialisieren mit
Array of [Cluster of [leeres Array of U8-Elementen]]

[attachment=33619]


RE: speichern von hexadezimalen Befehlen verschiedener Länge in 2D Array - mrstrom - 03.05.2011 13:58

Vielen Dank es läuft!!
Gut, dass es das LV Forum gibt