LabVIEWForum.de - Textfile Zeile unterschiedl. Länge in Bytearray umwandeln

LabVIEWForum.de

Normale Version: Textfile Zeile unterschiedl. Länge in Bytearray umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=50954][attachment=50955][attachment=50956][attachment=50957]

Hallo zusammen,

ich stehe gerade beim Versuch Hex-Werte aus einem File einzulesen und Zeilenweise als 1D- ByteArray an Hardware weiterzugeben auf dem Schlauch.
Es ist ein Konfig-File mit dem I2C Register gesetzt werden. Die ersten zwei Werte sind die 16bit Adresse, anschließend kommen Werte unterschiedlicher Länge

Das Konfig-File im Textformat liegen in folgendem Format vor:

02 A3 00
00 1E 00 00
00 26 00 00
00 2D 12
00 25 FF
00 96 00 54
00 11 30
00 1C 32
00 22 00 77
00 2D 10
00 B8 00 00 00 28
00 22 00 77
00 15 07

Probleme bereitet mir bei meiner jetzigen Lösung das automatische auffüllen des Arrays mit Nullen entsprechend der längsten Zeile.
Die Werte werden also so weitergegeben:

02 A3 00 00 00 00
00 1E 00 00 00 00
00 26 00 00 00 00
00 2D 12 00 00 00
00 25 FF 00 00 00
00 96 00 54 00 00
00 11 30 00 00 00
00 1C 32 00 00 00
00 22 00 77 00 00
00 2D 10 00 00 00
00 B8 00 00 00 28
00 22 00 77 00 00
00 15 07 00 00 00

Da ich hier I2C Register mit Werten befülle ist die Ausgabe der aufgefüllten Nullen ungeschickt.

Die Anforderungen sind also:

- Die Zeilen nacheinander als Bytearray weiterzugeben und die ursprüngliche Länge beibehalten

- Die Reihenfolge der Zeilen steht nicht fest, da die Möglichkeiten zur Konfiguration flexibel sein müssen.
Man weiß also nicht wann 3 Byte kommen und wann 4 oder 6 Byte.

- Nullen die zu den Werten gehören solen natürlich nicht gelöscht werden

-Die momentane Tabulatortrennung im Textfile ist nicht zwangsläufig nötig, dies war nur der erste Versuch mit übersichtlicher Darstellung.
Eine Lösung ohne Tabs ist auch ok.

Angehängt das VI in Labviewversion 2014 und 8.0
sowie zwei Screenshots

Vielen Dank für eure Hilfe,

Jörg
So z.B.:
[attachment=50959]
Gruß, Jens
Hallo Jörg,

Arrays sind in LabVIEW immer "rechteckig", d.h. alle Zeilen haben gleich viele Spalten! Du kannst also nicht einmal Zeilen mit 3 Elementen haben und dann welche mit 5…

Lösung:
Datei zeilenweise einlesen und/oder nur zeilenweise auswerten!
Es geht, wenn Du jede Zeile in einen Cluster verpackst. Als nicht "2D-Array", sondern "1D-Array of Cluster", wobei die Cluster als Element jeweils einen Zeilenarray enthalten. Dann können die Zeilen alle unterschiedliche Längen haben. Rein Äußerlich, wenn man die Cluster transparent macht, sieht das dann genau so aus wie ein "2D-Array mit unterschiedlichen Zeilenlängen"
Ein andere Möglichkeit ist, für die Darstellung der Zahlen eine 2D-Texttabelle oder ein 2D-Textarray zu verwenden. Echte Nullen bleiben dann Nullen, die angehängen unerwünschten Elemente sind hingegen unsichtbare Leerzeichen.
(01.10.2014 21:04 )Lucki schrieb: [ -> ]Es geht, wenn Du jede Zeile in einen Cluster verpackst.
vgl. Beitrag #2. Big Grin
(01.10.2014 21:12 )jg schrieb: [ -> ]vgl. Beitrag #2. Big Grin
Antwort 1:
Vgl. Beitrag #2 hier
Oder Antwort 2:
Ja, ich bin langsam. Als ich anfing zu schreiben, gab es Null Antworten, als ich das abschickte, hattet ihr beiden Platzhirsche wie gewöhnlich schon die Vorderplätze belegt. Man könnte ja mit einem sofort geposteten "Moment bitte..." den Platz belegen. (So ähnlich wie die Deutschen auf Mallorca, die am Morgen vor dem Frühstück mit einem Handtuch sich ihren Strandplatz reservieren). Aber Scheiß drauf, es ist mir egal.
Hallo zusammen,

vielen Dank für die schnelle Hilfe.
Die Lösung von Jens erledigt alles zur vollsten Zufriedenheit.

Grüße Jörg
Referenz-URLs