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 

PropertyNode Referenz zu Allen Array Elementen (XML schreiben)



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!

06.05.2020, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2020 12:17 von TpunktN.)
Beitrag #1

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 217
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
Servus Zusammen,

nachdem ich es jetzt geschafft habe meine XML zu lesen https://www.labviewforum.de/Thread-XML-a...rom-String, möchte ich diese gerne speichern.
An sich nicht schwer, Parameter nehmen, einklammern, schreiben fertig.

Aber einfach kann ja jeder und ich will auch was lernen, also die Tags aus den Label.Text erstellen. Jens hat mir mal was tolles gezeigt (über PropertyNodes https://www.labviewforum.de/Thread-Wann-...#pid195985) Ich hatte damit mal rumgespielt https://www.labviewforum.de/Thread-Wann-...#pid195992 um universell in Excel zu schreiben. Mit den PropertyNodes habe ich es dann aber aufgegeben, ich wollte zu viel für mein Wissensstand..
Jetzt mit kleinerem nicht ganz so universellem Umfang klappt es an sich ganz gut, nur ein Schritt fehlt mir und ich habe keine Ahnung wie ich das machen kann.

Im angehängten Bild will ich jetzt alle Elemente aus diesem Array die Referenzen haben und in einer For-Loop weiterarbeiten. Wenn ich die property Value mit Variant to Data mache bekomme ich zwar den Inhalt, davon bekomme ich aber keine Referenz mehr (zumindest finde ich es nicht), so wie es angehängt ist, bekomme ich den Wert (ein Cluster) des ersten Elements. (in dem Cluster sind alles Integer)
Somit meine Fragen:
1. Bekomme ich aus dem Array auch ein Array mit allen Element-Referenzen?
--a. oder muss ich den Index manuell an der PropertyNode selbst hochzählen, für jedes Element?
2. Kann man PropertyNodes auch an eine beliebige Verbindung anschließen? (Nach dem Variant to Data)

Schöner wäre eine While Loop, die beim Tiefer gehen das Label.Text ließt und in Klammern mit dem Wert formatiert, am Ende dann wieder hoch springt, aber da habe ich nichts zu in der Hilfe gefunden und meine Kenntnis in LabVIEW ist da nicht tief genug Sad Oder ich seh den Wald vor lauter Bäumen nicht.

Danke, Timo


Angehängte Datei(en) Thumbnail(s)
   

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.05.2020, 12:48
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
Nein, das wird über diesen Weg nicht funktionieren. Die Array-Element Referenz geht immer nur auf 1 Element des Arrays (wenn ich es richtig im Kopf habe, auf das zuletzt angeklickte, aber nagel mich nicht darauf fest).

Du könntest damit natürlich das Label und den Control-Typ des Array-Elements ermitteln, aber nicht die Werte von allen Array Elementen.

Wenn du etwas lernen willst, schau dir an, wie die GXML-Library einen XML-File aus einem Variant erstellt.

Wenn du unbedingt mit deinem Ansatz weiter machen willst, dann würde ich den "Variant-Value" des Gesamt-Array nehmen und dann mit Hilfe der Datentyp-Info aus dem Array-Element per Variant to Data auf den richtigen Datentyp umwandeln. Danach kannst du die Werte korrekt parsen.

Und zur besseren Erklärung noch ein Bild:

   

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2020, 14:10
Beitrag #3

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 217
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
(06.05.2020 12:48 )jg schrieb:  Nein, das wird über diesen Weg nicht funktionieren. Die Array-Element Referenz geht immer nur auf 1 Element des Arrays (wenn ich es richtig im Kopf habe, auf das zuletzt angeklickte, aber nagel mich nicht darauf fest).
Was ich bis jetzt gelesen habe ist es wohl genau so, oder ein zufälliges in dem aktuellen sichtbaren Bereich (wenn mehrerer angezeigt werden und ncihts angeklickt wurde).

Zitat:Du könntest damit natürlich das Label und den Control-Typ des Array-Elements ermitteln, aber nicht die Werte von allen Array Elementen.

Wenn du etwas lernen willst, schau dir an, wie die GXML-Library einen XML-File aus einem Variant erstellt.

Wenn du unbedingt mit deinem Ansatz weiter machen willst, dann würde ich den "Variant-Value" des Gesamt-Array nehmen und dann mit Hilfe der Datentyp-Info aus dem Array-Element per Variant to Data auf den richtigen Datentyp umwandeln. Danach kannst du die Werte korrekt parsen.

Habs mir bei EasyXML angeschaut, habs nicht kapiert :/
Anbei ein Lösungsansatz, aus https://forums.ni.com/t5/LabVIEW/Accessi...anguage=en abgeleitet, dabei wird das zuletzt angeklickte gesetzt. Es funktioniert, wobei das vermutlich kritisch ist und eher eine Frage der Zeit bis es versagt.
Ich mache das einfach mit dem mir bekannten Array, wandel das mit Variant To Data,und arbeite in einer For Loop mit Unbundle By Name weiter.

Was die Frage offen lässt, kann ich auf die Property Node von einem so erstellten Cluster zugreifen? Also das Array indexieren und dem vereinzelten Cluster die Properties anschauen?

Grüße Timo

Beide Konverter (GXML und EasyXML) geben merkwürdige Zeichen aus, habe ich schon getestet :/


Angehängte Datei(en) Thumbnail(s)
   

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2020, 16:40
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
(06.05.2020 14:10 )TpunktN schrieb:  Was die Frage offen lässt, kann ich auf die Property Node von einem so erstellten Cluster zugreifen? Also das Array indexieren und dem vereinzelten Cluster die Properties anschauen?
Keine Ahnung, was du jetzt vor hast...

(06.05.2020 14:10 )TpunktN schrieb:  Beide Konverter (GXML und EasyXML) geben merkwürdige Zeichen aus, habe ich schon getestet :/
GXML funktioniert aus meiner Erfahrung super - wenn man die Fehler kennt, die dort im Sourcecode stecken, z.B.: Zahlen werden leider mit lokalem Dezimaltrennzeichen erzeugt, bei einem Datum auf das lokale Datumsformat zurückgegegriffen - nicht gerade XML-Standard.
Deshalb hab ich für meine Firma eine angepasste Version erstellt.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2020, 06:58
Beitrag #5

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 217
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
(06.05.2020 16:40 )jg schrieb:  Keine Ahnung, was du jetzt vor hast...
Also die Idee war: Wenn ich ein Array of Cluster an eine For Schleife anschließe habe ich jede interation nur ein Cluster, dessen Properties ich ja wieder abfragen kann..
Aber soweit ich mich jetzt eingelesen habe, verweißt eine Property Node immer auf ein Object, somit müsste ich das in ein Control/Indicator schreiben um damit weiter propertieren zu können Big Grin
(06.05.2020 16:40 )jg schrieb:  GXML funktioniert aus meiner Erfahrung super - wenn man die Fehler kennt, die dort im Sourcecode stecken, z.B.: Zahlen werden leider mit lokalem Dezimaltrennzeichen erzeugt, bei einem Datum auf das lokale Datumsformat zurückgegegriffen - nicht gerade XML-Standard.

Dann versuch ich es nochmal, weißt du gerade zufällig wo das mit den Dezimaltrennzeichen steckt, das müsste ich auch anpassen.

EasyXML sieht so aus, keine Ahnung warum das die Klammern verbugt:
Code:
<AlleParameter>
    <Sendecode>s</Sendecode>

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2020, 08:28
Beitrag #6

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
Hallo Timo,

XML mit dem JKI Tool EasyXML Tool erleichtert die die Aufgabe.

Du schreibst Deine Daten in ein Cluster erzeugst am Ende das XML wie in meinem Beispiel.

Rune = erzeugter XML
Daten = XML in LabView Daten

Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2020, 08:40
Beitrag #7

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 217
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
Habe mal aus beidem einfach mal nen String erstellen lassen.
GXML Schreibt den Typ und Array größe dazu, ist glaube ich im XML Format erlaubt, will ich aber nicht. Werde mich damit mal beschäftigen, ob es eine Config dafür gibt oder ob ich das rausschmeiße im Code. (Wie hast du das gemacht mit Änderungen? Speichert man dann ein eigenes Addon? Sonst wird das beim Update überschrieben, oder?)
Code:
<Parameter mems='14'>
        <LaufendeNummer type='I32'>1</LaufendeNummer>
        <Sendecode type='String'>s</Sendecode>
        <KanalnummerSensor type='String'></KanalnummerSensor>
        <Bezeichnung mems='2'>
          <Deutsch type='String'>Version</Deutsch>
          <Englisch type='String'>Version</Englisch>
        </Bezeichnung>
        <Sendelaenge type='I32'>0</Sendelaenge>
        <Empfangslaenge type='I32'>5</Empfangslaenge>
        <Typ type='Enum U16' sel='Text'>0</Typ>
        <Auswahl dim='[1]' type='String'>
          <Aw>none</Aw>
        </Auswahl>
        <Dezimal type='I32'>2</Dezimal>
        <Dezimalzeichen type='String'>.</Dezimalzeichen>
        <ParamListe dim='[1]' type='I32'>
          <P>-1</P>
        </ParamListe>
        <Kompatibel mems='2'>
          <min type='DBL'>0</min>
          <max type='DBL'>0</max>
        </Kompatibel>
        <Geraetekennung dim='[1]' type='String'>
          <A>SET</A>
        </Geraetekennung>
        <Systeminfo mems='5'>
          <Standardwert type='String'>0</Standardwert>
          <Aenderbar type='I32'>0</Aenderbar>
          <Service type='I32'>1</Service>
          <dBefehlabschluss type='I32'>13</dBefehlabschluss>
          <Info type='String'>Geraet und Version lesen.</Info>
        </Systeminfo>
      </Parameter>

EasyXML ließt nicht die Array-Element-Labels und macht mir damit das Schema kaputt. Wenn ich aber so darüber nachdenke, sind diese Subkategorien aber auch überflüssig ...
Code:
<HoentzschParameter>
    <LaufendeNummer>1</LaufendeNummer>
    <Sendecode>s</Sendecode>
    <KanalnummerSensor/>
    <Bezeichnung>
      <Deutsch>Version</Deutsch>
      <Englisch>Version</Englisch>
    </Bezeichnung>
    <Sendelaenge>0</Sendelaenge>
    <Empfangslaenge>5</Empfangslaenge>
    <Typ>Text</Typ>
    <Auswahl>none</Auswahl>
    <Dezimal>2</Dezimal>
    <Dezimalzeichen>.</Dezimalzeichen>
    <ParamListe>-1</ParamListe>
    <Kompatibel>
      <min>0</min>
      <max>0</max>
    </Kompatibel>
    <Geraetekennung>SET</Geraetekennung>
    <Systeminfo>
      <Standardwert>0</Standardwert>
      <Aenderbar>0</Aenderbar>
      <Service>1</Service>
      <dBefehlabschluss>13</dBefehlabschluss>
      <Info>Geraet und Version lesen.</Info>
    </Systeminfo>
  </HoentzschParameter>
Muss ich mit meinen Kollegen absprechen, die greifen auch auf diese XML zu. Die freuen sich sicherlich riesig wenn es Änderungen gibt Big Grin

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2020, 13:31
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
(07.05.2020 06:58 )TpunktN schrieb:  Dann versuch ich es nochmal, weißt du gerade zufällig wo das mit den Dezimaltrennzeichen steckt, das müsste ich auch anpassen.
Klick dich durch die VIs im Generator und Parser VI von GXML.

Bei der Erstellung hängt das im "Unflatten und Scan Item.vi".

Beim Parsen im "XML to Flat String.vi".

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2020, 13:54
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
(07.05.2020 08:40 )TpunktN schrieb:  Habe mal aus beidem einfach mal nen String erstellen lassen.
GXML Schreibt den Typ und Array größe dazu, ist glaube ich im XML Format erlaubt, will ich aber nicht. Werde mich damit mal beschäftigen, ob es eine Config dafür gibt oder ob ich das rausschmeiße im Code. (Wie hast du das gemacht mit Änderungen? Speichert man dann ein eigenes Addon? Sonst wird das beim Update überschrieben, oder?)
In XML ist (IMHO) alles erlaubt - deshalb gibt es dann die Dokumentendefinitionen. Es gibt nicht DAS eine XML-Format als Dokumententyp...

Es hindert dich niemand daran, GXML und/oder JKI EasyXML als Vorlage zu nehmen und dir daraus einen Generator und Parser zu programmieren, der deinen Wünschen entspricht.

EasyXML findest du auch auf github zum herunterladen

Beide Toolkits können (mehr oder weniger) beliebig verschachtelte LabVIEW Elemente (Cluster, Array of Cluster, ...) in ein XML-Format verwandeln, und kommen dabei mit dem "Variant" Format anstatt Referenz-Geschubse aus.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2020, 08:08 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2020 13:46 von TpunktN.)
Beitrag #10

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 217
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: PropertyNode Referenz zu Allen Array Elementen (XML schreiben)
Wenn man weiß, das in Variant mehr gespeichert ist als man im Variant Output sieht, dann gibt die herangehensweise Sinn.

Ich hatte mal mit Variant Eigenschaften rumprobiert, manche VI's scheinen da aber irgendwie nicht richtig zu funktionieren. (Get Variant Header war es glaube ich)

Danke für die Tipps, ich teste mal weiter. Ich stolper immer über mehr und lerne gerade gut was Smile

MfG Timo

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Array in XML schreiben MarcoN 7 9.566 24.02.2020 16:11
Letzter Beitrag: TpunktN
  String Array in bin schreiben und lesen EOF hansi9990 9 9.625 31.08.2016 10:56
Letzter Beitrag: hansi9990
  String lesen, nach vorgaben löschen und in Array schreiben nova.08 6 7.984 18.09.2014 13:31
Letzter Beitrag: GerdW
  Bestimmte Daten aus csv Datei in Array schreiben Serial 23 23.333 26.03.2014 07:22
Letzter Beitrag: Serial
  String lesen und in Array schreiben maxikboy 2 11.696 19.09.2012 09:52
Letzter Beitrag: maxikboy
  Array in csv mit richtigen Spalten und Zeilen schreiben Flogge154 5 10.952 03.04.2012 12:12
Letzter Beitrag: Lucki

Gehe zu: