LabVIEWForum.de
Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: LVOOP (/Forum-LVOOP)
+---- Thema: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI (/Thread-Auf-Daten-richtig-zugreifen-Zugriff-auf-Childclass-Daten-ohne-Override-VI)



Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - TpunktN - 26.06.2023 15:18

Servus,

ich versuche mich an lvclass'en, stoße aber auf ein Problem, das bestimmt an der Unwissenheit liegt, ich habe aber auch nichts ergoogln können, hier fehlen mir wohl die richtigen Schlagworte. Hilfe zum Problem nehme ich gerne, aber auch einfach nur die richtigen Suchbegriffe, so ganz habe ich die ganzen Begriffe nicht verstanden/eingeprägt.
Ich habe diverse Videos und Tutorials angeschaut und im NI Forum gelesen, das ist jetzt mein erster eigener Versuch mit einem eigenen Problem.

Ich habe eine Klasse für alle internen Geräte (leere ctl), diese hat nur VIs die überschireben werden müssen. Diese Klasse habe ich aufgeteilt in flowtherms und UARTs, diese enthalten in der ctl den COM-Port.
Danach gehe ich auf die einzelnen Geräte, die enthalten mehr Informationen, zB Geräteversion, angeschlossenes Gerät,.. .
Alle UART-Geräte haben den gleichen Befehl den aktuellen Messwert auszugeben, deswegen habe ich hierfür gedacht ich ersetze das UART VI nicht, beim Testen hat jetzt aber die UART class gar nicht den vorher definierten COM-Port als Information aus der Geräte class, die beim Verbinden definiert wird, das ist Geräteabhängig, weil hier zB die Baudrate hinterlegt ist.

Wie wäre hier die richtige Vorgehensweise? Für alle ein Override VI zu machen fühlt sich umständlich an.
Muss ich die Klassen-ctl speziell definieren oder die Daten zusätzlich an die übergeordnete Klasse geben?

Habe mal alles in lv19_img angehängt. Ablauf im "Testing.vi" funktioniert nicht, wenn flowtherm NT ausgewählt ist, "Messwert lesen.vi" hat kein Override VI und sieht den COM-Port aus dem "verbinden.vi" nicht.

MfG Timo


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - MScz - 27.06.2023 09:47

Hallo TpunktN,

allgemein: Schau dir die Thematik lieber bei anderen Programmiersprachen an, das wird dort meiner Meinung nach viel viel besser erklärt. Der Transfer auf LV ist dann m.M.n deutlich einfacher als das mit LV zu lernen. Ein paar Talks in den Thema für LabVIEW sind leider nicht mehr online.

Zur Frage: Wenn ich das richtig im Kopf habe, musst du für die Klassen ein OverrideVI erstellen, selbst wenn diese dann wieder die Methode der Eltern mit ihren eigenen Daten aufrufen. Bin mir da aber gerade nicht zu 100% sicher.

Gruß Max


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - th13 - 27.06.2023 12:38

Ein Unbundle funktioniert nicht, da die Childklasse erstmal nur ihren Cluster kennt. Du kannst für deine Parent-Attribute get/set-Properties erstellen. Diese kannst du dann in den Funktionen der Childklasse nutzen. Ich habe ein Beispiel angehängt, da kannst du dir das in ClassB.doSomething anschauen.

Property erstellen:
- mit Assistent: Rechtsklick auf die Klasse -> New -> VI for Data Member Access
- oder selber machen: Rechtsklick auf die Klasse -> New -> VI from Dynamic Dispatch Template

https://labvolution.com/labview-getting-started-with-lvoop/
https://forums.ni.com/t5/LabVIEW/Read-write-parent-quot-public-quot-data/td-p/3916645


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - TpunktN - 27.06.2023 15:56

(27.06.2023 09:47 )MScz schrieb:  Schau dir die Thematik lieber bei anderen Programmiersprachen an, das wird dort meiner Meinung nach viel viel besser erklärt. Der Transfer auf LV ist dann m.M.n deutlich einfacher als das mit LV zu lernen.
Servus Max, sollte es wirklich einfacher sein eine neue Programmiersprache zu lernen um OOP in LV zu verstehen, welche ist denn gut? Big Grin
Ich bin kein Softwareentwickler und außer LabVIEW sind Siemens S7 oder Minecraft Redstone die "Sprachen" die ich noch "kann"..

Zitat:Wenn ich das richtig im Kopf habe, musst du für die Klassen ein OverrideVI erstellen, selbst wenn diese dann wieder die Methode der Eltern mit ihren eigenen Daten aufrufen.
Wäre voll nervig, dachte mir es sei viel übersichtlicher nur die zu erstellen, die auch anders sind. Aber das erklärt, warum beim Erstellen die VIs imemr automatisch angeschlossen da drin sind.

(27.06.2023 12:38 )th13 schrieb:  Du kannst für deine Parent-Attribute get/set-Properties erstellen. Diese kannst du dann in den Funktionen der Childklasse nutzen. Ich habe ein Beispiel angehängt..
Danke, das hilft fürs Verständnis. Da muss ich mir mal gedanken zu machen wie ich das Umsetze, spontan: kann ich diese set dann im verbinden.vi machen und damit sollte es dann funktionieren..

Danke schonmal, ich teste das sobald ich zeit finde.
Timo


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - BNT - 27.06.2023 18:12

Sieh Dir mal folgendes Tutorial an.
https://git.gsi.de/EE-LV/Libraries/VIP2012

Gruß Holger


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - TpunktN - 28.06.2023 08:47

Ich hab jetzt in jedes connect.vi auch die Daten über diese data member access an die parent class weitergegeben, so funktioniert es auf jedenfall, danke th13. Irgendwie bin ich davon ausgegangen, das diese Daten da automatisch eingetragen werden.

Danke Holger, habs mal überflogen, ein wenig verwirrend am Anfang, klärt sich dann aber im laufe. Werde mir das Tutorial mal genauer anschauen, vorerst scheint mein Problem gelöst zu sein.

Danke an alle
Timo


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - MScz - 28.06.2023 12:56

(27.06.2023 15:56 )TpunktN schrieb:  
(27.06.2023 09:47 )MScz schrieb:  Schau dir die Thematik lieber bei anderen Programmiersprachen an, das wird dort meiner Meinung nach viel viel besser erklärt. Der Transfer auf LV ist dann m.M.n deutlich einfacher als das mit LV zu lernen.
Servus Max, sollte es wirklich einfacher sein eine neue Programmiersprache zu lernen um OOP in LV zu verstehen, welche ist denn gut? Big Grin
Ich bin kein Softwareentwickler und außer LabVIEW sind Siemens S7 oder Minecraft Redstone die "Sprachen" die ich noch "kann"..

Nein nein, das meinte ich auch gar nicht. Aber wie es mit den Zugriffen/Vererbungen und so Sachen läuft kann man ja recht schnell raus lesen bzw. das lesen dessen erlernen, selber schreiben ist natürlich eine komplett andere Sache. Habe halt angefangen Python zu lernen und da hat es bei vielen Sachen für mich "klick" gemacht, einfach weil es m.M.n besser erklärt wurde. C++ lässt sich aber auch noch recht schnell lesen lernen. Die LV Sachen fand ich oft verwirrend und nicht Ziel führend, auch weil OOP in LV jetzt nicht gerade goldig gelöst ist.

Gruß Max


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - th13 - 28.06.2023 14:56

(28.06.2023 12:56 )MScz schrieb:  Die LV Sachen fand ich oft verwirrend und nicht Ziel führend, auch weil OOP in LV jetzt nicht gerade goldig gelöst ist.
Zum Nachlesen: Gründe für das OOP-Design von LabVIEW

Und als Anmerkung: es gibt aus diesem Grund noch andere OOP-Frameworks:
GOOP
NI GDS
OpenGDS
G#


RE: Auf Daten richtig zugreifen, Zugriff auf Childclass-Daten ohne Override VI - BNT - 28.06.2023 16:25

Und das CS-Framework nicht vergessen.
- https://wiki.gsi.de/CSframework/WebHome
- https://git.gsi.de/EE-LV/CS

Gruß Holger