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 

Asynchrone VIs mit Event Struktur sofort beenden



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!

25.04.2024, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2024 10:27 von Kiesch.)
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 401
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
Asynchrone VIs mit Event Struktur sofort beenden
Hallo liebe Mitforisten,

eine ganz bescheuerte Frage auf die ich zwar keine Antwort per SuFu gefunden habe, aber eigentlich erwarten würde dass die schon irgendwo beantwortet ist:
Ich habe mir ein Projekt gebastelt, dass mir meine DAQ Hardware als LV-Objekt anlegt und anschließend in Kanäle zerlegt die ich aus einem Ini file initialisiere. Das ganze ist so ausgelegt, dass ich die Labels der Controls nutze um Control und zugehörigen Kanal zu verknüpfen und damit automatisch mein Mapping von meinen ini-Routinen erledigt werden kann. Der "Nachteil" ist, dass dadurch das FP von der Funktionalität weitgehend entkoppelt ist. Das nur als Vorbemerkung warum die Frage relevant ist.

Ich habe jetzt neu ein Counter Objekt gebaut, dass einen Start und einen Stop Button haben kann, mindestens aber einen Start Button braucht (der dann für Start und Stop da ist). Was von beidem vorhanden ist, kann mein Objekt prüfen, im FP wäre Aufwand und zusätzlicher Code notwendig, der noch dazu Funktionalitäten erneut implementieren müsste die auf Counter(objekt)ebene besser aufgehoben sind. Allein um zu prüfen was vorhanden ist und wie deswegen geschaltet werden müsste.
Wie will ich das lösen? --> Event Struktur im Counter Objekt die als VI asynchron gestartet wird und einfach nur die Betätigung von Start und Stop überwacht. Das als dynamische Events zur Laufzeit anzulegen, kriege ich wahrscheinlich noch hin. Mein Problem ist eher:

Beim "Aufräumen" am Ende muss ich alle diese Schleifen (und damit das VI) sauber wieder beenden. Die einfachste Lösung die mir einfällt wäre ein Button auf dem Frontpanel der nur dazu da ist, dass ich dem beim beenden ein Value (signaling) hinwerfen kann der das "Beenden" Event direkt triggert. So richtig sauber scheint mir die Lösung aber nicht - auch wenn ich solchen Lösungen nicht grundsätzlich ablehnend gegenüber stehen würde. Gibts noch ne andere Variante mit der ich trotz Eventstruktur ein pollen vermeiden kann? Gibts da irgendeinen Königsweg für wie man es machen "sollte"? Soweit ich das überblickt habe gibt es bei den dynamischen Events keins das man allein im Blockdiagram (ohne Nutzung des FP) triggern kann.

Gruß Kiesch

P.S: Was mir noch aufgefallen ist: Die dynamische Eventregistrierung will ja eine feste Zahl an Referenzen haben, die zur Entwicklungszeit bereits definiert sein müssen. Ist zu erwarten, dass das zu Problemen führt wenn ich da leere Referenzen reinschreibe? Das die triggern ist ja nicht zu erwarten (da leer) und es erspart mir im konkreten Fall nach der Button Anzahl unterscheiden zu müssen welchen Event Struktur ich verwenden muss. Das kann dann über eine passieren und dort wo notwendig wird das Programverhalten dementsprechend angepasst. So lange das nicht zur Laufzeit merkwürdige Fehler werfen kann, wäre ich damit zufrieden dort leere/ungültige Referenzen mit reinzuschreiben statt abzufangen das die leer sind.

P.P.S: Mir fällt grade noch auf, ich kann natürlich auch einen "Programmende" Button nach unten ins Objekt durchreichen und dynamisch registrieren. Den muss der Nutzer im Hauptprogram dann lediglich mit nach unten durchreichen (und darf den dann nichtmehr latchen lassen wenn ich mich recht erinnere). So richtig schön finde ich die Lösung aber ebenfalls nicht.

P.P.P.S: Falls relevant kann ich auch gerne ein Minimalbeispiel basteln was ich mir in etwa vorstelle, dann aber reduziert um die ganze LVOOP und multiplen Aufruf des asynchronen SubVIs.

LV Version ist 2019
Nachtrag:

Wenn ich das richtige Stichwort "user event" gehabt hätte, hätte ich vermutlich auch früher gefunden was die Lösung für mein Problem sein dürfte... Ich werde mich mal damit auseinandersetzen. Das sollte User Event sollte aber ja genau das machen was ich eigentlich will wenn ichs richtig überreisse.

Was mir nur noch an Fragezeichen dann üblich geblieben ist / sind, sind die P.S. und die Frage wie ich bei meinem dynamischen Event dann hinterher wieder rauskriege welches Control das getriggert hat (CtrlRef sollte da helfen) und was passiert wenn ich die CtrlRef für ein User Event abfrage...

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Nachrichten in diesem Thema
Asynchrone VIs mit Event Struktur sofort beenden - Kiesch - 25.04.2024 10:15

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 5.053 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Event Struktur Problem ache 9 4.219 17.09.2020 14:10
Letzter Beitrag: jg
  While-Schleife sofort beenden ? RobertRoth 17 9.329 21.10.2019 11:00
Letzter Beitrag: RobertRoth
  Schleife sofort beenden mprocket 9 6.412 19.01.2018 23:26
Letzter Beitrag: mprocket
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 7.500 23.10.2017 09:08
Letzter Beitrag: Ksanto
  Simple Event Struktur berlinfatih 32 18.319 23.06.2016 18:53
Letzter Beitrag: jg

Gehe zu: