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!
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
Hallo D,
Gegenfrage: was willst du mit der Kenntnis des Typdefs denn anfangen?
- Der DATAFLOW mit seinen streng typisierten Daten verlangt einen eineindeutigen Draht, der aus dem FromVariant herauskommt. Mit einem einzigen FromVariant wirst du also nicht verschiedene TypDefs auflösen können...
- Du könntest mit dem (Pfad des) TypDefs eine Case-Struktur aufrufen, die je nach gewähltem TypDef die passende Wandlung vornimmt - du erhälst dann aber auch entsprechend viele Ausgangstunnel in dieser Case-Struktur...
- Du könntest dir überlegen, ob es nicht sinnvoller ist, alle nötigen Informationen in einen einzigen typdefinierten Cluster zu packen! Man muss ja nicht immer alle Elemente eines Cluster auch wirklich nutzen...
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
Ich habe verschiedene VI's die ich per Referenz aufrufe und die daher ein identisches Pattern haben. Unter anderem je einen Variant-Eingang und einen Variant-Ausgang. Für jedes dieser VIs definiere ich 2 Typedefs die die Eingangs- bzw. Ausgangs-Parameter darstellen und als Variant in das VI hinein bzw. aus dem VI herausgeleitet werden.
Die Applikation soll später durch weiterer dier VIs erweitert werden können. Diese haben dann jeweils wieder einen Typedef als Eingangsparameter und einen Typdef als Ausgangsparameter
Der Datenlogger der alle Aktivitäten mitschreibt sollte aber eigentlich nicht mehr angefasst werden. Deshalb hatte ich gehofft das es eine Möglichkeit gibt alle Typedefs, auch die neuen, automatisch zu entschlüsseln.
Das Einzige was mir nu einfällt ist, dass der Logger wiederum VIs per Referenz aufruft die die Wandlung vornehmen und das ich für jedes VI das ich neu schreibe auch jeweils ein zugehöriges Wandler-VI erzeuge.
29.11.2013, 08:13 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2013 08:15 von GerdW.)
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
Hallo D,
Zitat:Das Einzige was mir nu einfällt ist, dass der Logger wiederum VIs per Referenz aufruft die die Wandlung vornehmen und das ich für jedes VI das ich neu schreibe auch jeweils ein zugehöriges Wandler-VI erzeuge.
Dann bekommst du doch wieder einen jeweils anders typisierten Draht von diesem VI... Wie willst du damit weiterkommen?
Noch ein Vorschlag:
Verwende einen "generischen" Datentyp (wie String) und nutze eine passende Formatierung (XML? JSON?), um "beliebige" Daten zu übertragen. Dann hast du zumindest nicht das Problem, ein unbekanntes Variant wandeln zu wollen...
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
Ich meinte ein SubVI (pro neuen Typedef) für den Logger wo der Typdef als Variant reingeht und der zu speichernde String rauskommt.
Über das Senden von XML-Strings müsste ich mal weiter nachdenken. Aber das macht die Sache doch schon sehr komplizierter für jeden der ein neues VI schreibt oder?
Diese Umwandlung kann ich ja auch nicht in einem einzigen Support-VI machen da sie für jeden Datentyp anders ist.
29.11.2013, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2013 08:51 von GerdW.)
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
Hallo D,
deine beiden gezeigten Varianten (XML vs Variant) haben beide immer noch das selbe, schon zuvor genannte Problem: du musst die Typdefinition kennen, um wieder die Originaldaten (als Draht) in LabVIEW zu erhalten. Und dann landest du wieder bei dem schon genannten Problem der strengen Typisierung, die effektiv verhindert, dass verschiedenen TypDefs auf dem selben Draht transportiert werden (können)...
- Das XML hat den Vorteil, Menschen-lesbar zu sein, beim Variant erhälst du irgendwelche LV-internen Verwaltungsstrukturen.
- Das Variant hat den Vorteil, etwas kompakter als das XML zu sein.
Du solltest noch mal überlegen, was du wirklich haben willst. Du fängst aber (mMn) an der falschen Stelle an zu schrauben, wenn du einen (quasi) unbekannten Datentyp per Variant überträgst und diesen dann nachträglich wieder in "lesbaren" Text umwandelst...
RE: Variant entschlüsseln mit TypeDef-Speicherpfad
(29.11.2013 09:13 )GerdW schrieb: deine beiden gezeigten Varianten (XML vs Variant) haben beide immer noch das selbe, schon zuvor genannte Problem: du musst die Typdefinition kennen, um wieder die Originaldaten (als Draht) in LabVIEW zu erhalten. Und dann landest du wieder bei dem schon genannten Problem der strengen Typisierung, die effektiv verhindert, dass verschiedenen TypDefs auf dem selben Draht transportiert werden (können)...
Nein, tatsächlich glaube ich das du mein Problem gelöst hast. Ich bin nur gescheitert das Problem richtig zu erklären.
Die TypDef ist im Main und im Plugin bekannt, da sie vom Programmierer neu hinzugefügt werden. Nur der Logger weiß nichts von den neuen Typdefs, weil er im "Frame" fix integriert ist.
Wenn ich nun die Nachrichten per XML verschicke, kann der Logger sich aber alles wichtige rausziehen.