(26.06.2019 21:06 )Natalie1984 schrieb: [ -> ]D.h. sobald diese Methode in der DLL -Datei angesprochen wird, soll z.B. auf der HauptVI eine Button betätigt werden oder den Ereignisstruktur direkt ansteuern.
Folgende Möglichkeiten fallen mir pro Callback-VI ein, die wahrscheinlich funktionieren werden.
1. Im Callback-VI ein Flag in einer FGV setzen und im MainVI pollen (so hab ich das bei einem anderen Projekt gemacht).
2. Im Callback-VI ein Benutzerereignis verwenden - das ist am schönsten. Bedarf aber auch Aufwand mit der FGV, nämlich die Benutzerereignisreferenz
3. Im Callback-VI einen Value(changed)-Eigenschaftsknoten verwenden. Bedarf aber auch Aufwand mit der FGV, nämlich die Referenz auf das Bedienelement
4. Im Callback-VI ein Flag als Globale Variable (veraltet). Im MainVI pollen und einen Value(changed)-Event auslösen.
Zitat:Jetzt habe ich drei "Ereignis Callback registrieren" - Elemente in das HauptVI hinzugefügt.
Wird so funktionieren, lässt dich aber durch jede Prüfung durchfallen.
Zitat:So habe ich das alles in Übersicht und so verstehe ich auch, warum etwas funktioniert.
Wenn du nicht verstehst, warum und wie das mit der FGV ("Klasse für Kleine Leute") funktioniert, solltest du nicht programmieren.
Zitat:Ist es nicht möglich, einen einfachen Weg zu bauen, so das es nur den trigger Event zurück gibt?
1. Wer ("es") soll denn den Trigger-Event zurückgeben? Das Callback-VI?
2. Wie soll es den Wert denn zurückgeben? Als Ausgang?
Das Callback-VI wird asynchron aufgerufen, praktisch wie ein Interrupt. Das kann keinen Wert zurückgeben. Werte zurückgeben als Ausgang können nur VIs, die in einen Datenfluss eingebunden sind. Der Datenaustausch mit einem asynchronen VI kann nicht laufen über das, was in LabVIEW Datenfluss heißt. Der Datenaustausch zwischen asynchronem VI und MainVI geschieht über einen virtuellen Datenfluss, was die FGV übernimmt.
Zitat:Es würde mir ausreichen, wenn das erste Event "FirstConnect" entweder den Button FirstConnect betätigt oder wiegesagt die Ereignisstruktur FirstConnect ansteuert.
1. "Button FirstConnect" - siehe oben Methode 3.
2. Wenn der Callback (nicht das Callback-VI) direkt die Ereignisstruktur ansteuern könnte, würde mir das auch sehr gefallen. Ich glaube aber nicht, dass das geht. Dazu müsste es wohl einen speziellen Benutzerereignisknoten geben. Ist mir aber nicht bekannt.
Zitat:da einfach zu viele Unterelemente vorhanden sind.
Ab einer bestimmten Komplexität eines Programmes, und das ist schon bei einfachen Programmen der Fall, geht ohne "Unterelemente" gar nichts.
Du kommst mit Globalen Variablen fast ohne Unterelemente aus - eine Globale Variable ist nämlich schon ein Unterelement:
1. Im Callback-VI eine Globale Variable vom Typ Boolean mit True beschreiben. Die Globale Variable ersetzt das Verfahren mit der FGV.
2. Im Timeout-Case (50ms) der Ereignissequenz wird die Globale Variable abgefragt. Wenn sie true ist, wird sie auf false gesetzt und ein Value(Change)-Event vom Button FirstConnect wird ausgelöst.