INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Seriellen Datenstrom in hierachischen Cluster parsen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.08.2010, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 11:27 von tanka.)
Beitrag #11

tanka Offline
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 11:41
Beitrag #12

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
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).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 12:34 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 12:42 von Lucki.)
Beitrag #13

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 13:14 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 13:30 von jg.)
Beitrag #14

tanka Offline
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:

Lv86_img
Sonstige .vi  Bytestream_U8_14__2_Cluster.vi (Größe: 5,44 KB / Downloads: 154)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 13:42
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
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).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 13:55
Beitrag #16

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2010, 15:09 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 15:41 von Lucki.)
Beitrag #17

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Seriellen Datenstrom in hierachischen Cluster parsen
Habe gesehen, daß immerhin die Werte in das VI mit hineingeschrieben wurden. Damit ließ sich etwas machen. Das Ergebnis sieht so aus:
   
Des VI enthält enthalt noch etwas Hilfscode zur Erzeugung der Typbeschreibung und wie man herausfindet, wo die Arraylänge in den Bytestrom eingefügt werden muß. Das kann aber alles gelöscht werden, wenn Die Konvertierung so wie in der Graphik abgebildet funktioniert. Der zusätzliche Code soll nur verständlich machen, wie das VI entstanden ist.
Lv09_img2
Sonstige .vi  Bytestream_U8_14__2_ClusterWA.vi (Größe: 15,34 KB / Downloads: 170)

Anmerkung: Da die Arraylänge mit 2 Elementen immer konstant ist, wäre es sinnvoller, wenn man statt des SGL-Arrays ein Cluster hätte. Damit entfällt die Arraygrößenangabe im Bytestrom. d.h man könnte direkt den Originalstream zur Konvertierung benutzen und alles würde viel einfacher. Und das ist sogar untertrieben: Das ganze Problem schrumpft dann zu enem Nichts zusammen.
   

Edit: Und wenn das nicht sein soll, dann geht es auch so:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Elemente Cluster in Cluster ansprechen simcum 3 2.683 02.10.2023 10:49
Letzter Beitrag: th13
  XML dynamisch parsen? C.Maier 3 4.215 11.10.2016 10:30
Letzter Beitrag: C.Maier
  Element in Cluster of Array of Cluster ausblenden R.Fuertig 4 6.493 26.09.2016 07:47
Letzter Beitrag: GerdW
  String parsen homerjay88xx 9 6.976 16.07.2016 19:11
Letzter Beitrag: ITScotty
  XML Datei parsen Lucki 4 4.654 06.06.2015 11:12
Letzter Beitrag: Lucki
  Cluster - Elemente ausblenden und Größe des Cluster anpassen? dragonos 13 17.735 01.06.2014 18:43
Letzter Beitrag: "Chris"

Gehe zu: