11.08.2010, 11:23
(Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 11:27 von tanka.)
|
tanka
LVF-Grünschnabel
Beiträge: 39
Registriert seit: Jul 2009
8.6
-
de
95541
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
' schrieb:daß er nicht Lust hat, auf der Sendenseite einen Header zu programmieren, ...
Leider geht es hier nicht nach er Lust. Ich KANN gar nicht, denn die Senderseite habe ich nicht in der Hand.Es handelt sich um ein fertiges Gerät. Die Kommunikation ist schon ja auch schon fertig und funktioniert bestens.
Ich versuche nochmal mein Problem zu erleutern:
Ich habe einen großen Cluster im Frontpanel und Knöpfe mit "Senden" und "Empfangen". Ich erhalte von diesem Teil Daten im Datentyp 1D-U8-Array (Bytestream) mit bestimmter Länge.
Diesen Bytestream möchte ich nun an meinen Cluster im Frontpanel weitergeben und ihn gerne korrekt angezeigt haben.
D.h. die ersten 4Bytes (des Bytestreams) sollen ein Float werden weil auch das 1. Element im Cluster ein Float ist.
die nächsten 2 Byte (des Bytestreams) sollen als String interpretiert werden weil das 2. Element im Cluster ein...
Weiterhin soll von meinem Labviewprogramm auch ein selbiger Bytestream erzeugt werden können.
Ich suche nun nach einer Lösung,bei der ich...
...nicht jedes Element einzeln in/aus den/m Cluster geben muss
...nicht die "Zusatzinformationen"(Header) händisch in den Bytestream ein-/ausstricken muss.
Mehr nicht.
' schrieb:Ja, richtig, es befinden sich Zusatzinformationen im String, von mir aus nennen wie sie Header. Aber das Entscheidende ist doch, daß niemand (Programmier-) Arbeit damit hat.
Falls Du aber Recht haben solltest, dann kann ich nur sagen: Dann ist das eine willkürliche, schikanöse Vorgabe von tanka, und ich hätte mir nie die Mühe gemacht, auf diesen Beitrag zu antworten..
Ich hoffe du kannst mir trotzdem helfen.
|
|
|
11.08.2010, 11:41
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
Hinweis:
Bei kaskadierten, komplexen Datentypen ist das mit hart typcast nicht mehr so einfach.
In LV gibt es nur dynamische Arrays. Die aber werden im Cluster als Pointer auf die Daten gehandhabt, nicht mit ihren Daten selbst. In einem Datenstream aber steht das (fixed-sized) Array mit seinen Daten. Woher soll der Cluster jetzt wissen, dass das dynamische Array eine bestimmte Länge haben soll. Bei Strings tritt ein analoges Problem auf.
Es wird dir also mit einem Typcast nicht gelingen, das 1DArrOfU8 in einen Cluster zu wandeln - solange nicht vor dynamischen Typen die Länge steht.
Ohne explizite Längenangaben im Stream bleibt dir nur die Möglichkeit, das 1DArrUfU8 abschnittsweise in die Elemente des Cluster zu typcasten.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
11.08.2010, 12:34
(Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 12:42 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
' schrieb:Ich hoffe du kannst mir trotzdem helfen.
Ja, gern, aber es wäre viel einfacher, wenn Du dazu das hier beitragen würdest:
Ein VI posten, welches nur diese beiden Elemente enthält
1. Einen Beispielstring oder das entsprechende U8-Array. (als Konstante oder als Anzeige/Bedienelement)
2. Ein Clusterelement mit genau den Daten, wie sie in dem Beispielstring auch enthalten sind. (Als Konstante oder als Anzeige/Bedienelement)
Beim Posten als Anzeige/Bedienelement nicht vergessen, vor dem Abspeichern des VI "Diese Werte als Standard" ankzulicken.
Wenn es sich, wie Du sagtst, nur um reine Dateninhalte ohne Zusatzinformationen handelt, dann kann das nur funktionieren, wenn es im Cluster weder Arrays variabler Länge noch Strings varabler Länge gibt.
|
|
|
11.08.2010, 13:14
(Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 13:30 von jg.)
|
tanka
LVF-Grünschnabel
Beiträge: 39
Registriert seit: Jul 2009
8.6
-
de
95541
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
' schrieb:... dann kann das nur funktionieren, wenn es im Cluster weder Arrays variabler Länge noch Strings varabler Länge gibt.
' schrieb:Hinweis:
In LV gibt es nur dynamische Arrays.
Wie jetzt? Es werden im die gleiche Anzahl an Elementen in einem Array empfangen/gesendet. Diese Anzahl ist mir auch bekannt.
Ob dieses dann dynamisch (variabel lang) ist weiß ich nicht.
Hier mal das VI:
Bytestream_U8_14__2_Cluster.vi (Größe: 5,44 KB / Downloads: 177)
|
|
|
11.08.2010, 13:42
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
' schrieb:Wie jetzt? Es werden im die gleiche Anzahl an Elementen in einem Array empfangen/gesendet. Diese Anzahl ist mir auch bekannt.
Luckis und meine Aussage widersprechen sich nicht.
Ob dir die Länge des Arrays bzw. des Strings bekannt ist oder nicht, ist für das LV-Programm unerheblich.
Gesetzt der Fall dein Datenstream hieße "00 11 22 33 44 55 66 77 88" und "22 33 44 55" seinen ein Array im Cluster. Woher soll das LV-Programm wissen, dass das Array genau diese vier Zeichen ist und nicht doch drei mehr? Man könnte meinen, wenn man an den Typeingang von TypCast oder Unflatten einen CLuster anschließt, in dem das Array vier Werte hat, dann müsste LV doch in der Lage sein, den Stream automatisch dem Cluster zuzuweisen. - Wäre schön, wenn das ginge - geht aber leider nicht.
[*ausprobier*]
Aus diesem Grunde kann man an einen harten Typcast auch keinen Cluster anschließen, der komplexe Datentypen (Arrays und/oder Strings etc.) enthält. Auch Unflatten geht nur, wenn im Stream die Arraylänge angegeben ist.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
11.08.2010, 13:55
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Seriellen Datenstrom in hierachischen Cluster parsen
' schrieb:Hier mal das VI:
Genau das hatte ich befürchtet, und damit das nicht passiert, was nun doch passiert ist (leeres U8-Array), hatte ich noch eine Bedienungsanleitung mitgegeben. Also noch mal:
ENTWEDER: rechte Maustaste/Datenoperationen/Diesen Wert alS Standard
ODER: Auswählen, Hauptmenü Bearbeiten/Markierte Werte als Standard
Dann abspeichern, posten
|
|
|
11.08.2010, 15:09
(Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 15:41 von Lucki.)
|
|
|
| |