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!
Warum ich das brauche?
In eine Application mit C++ und Qt habe ich dieses Konzept gebraucht. Vorteil daran, dass es ständig abgefragt wird, ob die Beziehung zwischen Slot und Signal true "Stichwort connect(......)" ist.
Das heisst man muss nicht ständig abfragen, ob der Stand True oder nicht.
Hier geht eigentlich um eine USB Connection, die ich gerne mit Labview in eine Konzept von Signal und Slot nachbilden möchte.
Ist die USB verbindung erfolgreich, dann ist der Hauptbutton Enabled und der User kann mit seiner Application loslegen.
Ist es nicht der Fall, ist dann der Hauptbutton desabled.
Man kann dieses Konzept so ansehen als Pollingsverfahren:
Standig abfragen: Bist du True --> dann weiter machen
Bist du False --> abbrechen...
Wie kann so was in Labview nachbilden?
Gibt es was ähnlich Labview?
(11.05.2016 09:55 )galilio schrieb: kann man in Labview das Konzept von Signal und Slot nachbilden?
Nachbilden geht fast alles.
Zitat:Ist die USB verbindung erfolgreich, dann ist der Hauptbutton Enabled und der User kann mit seiner Application loslegen.
Ist es nicht der Fall, ist dann der Hauptbutton desabled.
Eigentlich willst du ja nichts weiter machen, als event-gesteuert einen Button enablen oder disablen. Dort, wo du feststellst, dass der USB nicht mehr connected ist, verschickst du einen Benutzer-Event, den du in dem VI, das den Button enthält, in einem Event-Case abfragst.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
12.05.2016, 06:18 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2016 06:20 von galilio.)
(11.05.2016 20:14 )IchSelbst schrieb: Eigentlich willst du ja nichts weiter machen, als event-gesteuert einen Button enablen oder disablen. Dort, wo du feststellst, dass der USB nicht mehr connected ist, verschickst du einen Benutzer-Event, den du in dem VI, das den Button enthält, in einem Event-Case abfragst.
Jaein
Das ganze muss automatisch laufen können, sobald z.B die USB verbindung nicht connected ist muss der Button auf desabled gesetzt werden. Wird die USB Verbindung wieder erfolgreich, dann ist der Power Button wieder Enabled.
Dieses Verhalten muss beim jeden State gewährleistet werden.
Im Anhang sind zwei Screenshots, die veranschaulichen das Verhalten der User-Interface bei eine USB Verbindung.
(12.05.2016 06:18 )galilio schrieb: Das ganze muss automatisch laufen
Wolltest du es nicht nachgebildet haben? Automatisch heißt integriert in LabVIEW.
Und ob die LV-Entwickler das integriert haben, glaube ich ich. Die wollten ja eine Datenfluß-Steuerung machen, keine Event-Steuerung. Das mit den Events ist in LV leider noch nicht so sehr gut integriert.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
12.05.2016, 08:12 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2016 08:15 von galilio.)
(12.05.2016 06:18 )galilio schrieb: Das ganze muss automatisch laufen
Wolltest du es nicht nachgebildet haben? Automatisch heißt integriert in LabVIEW.
Und ob die LV-Entwickler das integriert haben, glaube ich ich. Die wollten ja eine Datenfluß-Steuerung machen, keine Event-Steuerung. Das mit den Events ist in LV leider noch nicht so sehr gut integriert.
Mit automatisch meine ich: Ich muss nicht extra darum kümmern.
Sobald die USB Verbindung abgebrochen wird, muss einen Interrupt ausgelöst werden "He USB Verbindung ist nicht mehr True"
Nachbilden möchte ich gerne aber ich weiss es nicht wie soll ich das machen:
Soll ich einen Haupt While Loop einbauen und ich diesem While Loop einen Event Structure die eine VI"die dafür zuständig die USB Verbindung zu überwachen" ständig aufruft?
12.05.2016, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2016 08:50 von GerdW.)
was du haben willst, hört sich wie ein Callback an, der von einem Treiber (oder einer Windows-Funktion) ausgelöst werden soll:
Der USB-Treiber überwacht die USB-Connection und löst einen Callback-Aufruf aus, wenn sich der Status der Connection ändert.
1. Ganz allgemein unterstützt LabVIEW solche Callback-Mechanismen, z.B. bei DotNet-Geschichten…
2. Hast du einen USB-Treiber, der solche Callbacks überhaupt anbietet?
Einfache Lösung: Selbst per Polling den USB-Status abfragen und deinen Button entsprechend setzen…
Zitat:Ich muss nicht extra darum kümmern.
Wenn in deinem Programm irgendetwas passieren soll, dann musst du dich als Programmierer IMMER "extra darum kümmern"!
Wenn in deinem Programm irgendetwas passieren soll, dann musst du dich als Programmierer IMMER "extra darum kümmern"!
Und das selber drum kümmern kann doch gerne eine parallele Schleife (gerne auch verpackt in ein SubVI) sein, die den USB-Status überprüft und per Refnum den Button im Main (de-)aktiviert.
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!
was du haben willst, hört sich wie ein Callback an, der von einem Treiber (oder einer Windows-Funktion) ausgelöst werden soll:
Der USB-Treiber überwacht die USB-Connection und löst einen Callback-Aufruf aus, wenn sich der Status der Connection ändert.
1. Ganz allgemein unterstützt LabVIEW solche Callback-Mechanismen, z.B. bei DotNet-Geschichten…
2. Hast du einen USB-Treiber, der solche Callbacks überhaupt anbietet?
Einfache Lösung: Selbst per Polling den USB-Status abfragen und deinen Button entsprechend setzen…
Zitat:Ich muss nicht extra darum kümmern.
Wenn in deinem Programm irgendetwas passieren soll, dann musst du dich als Programmierer IMMER "extra darum kümmern"!
@ 2: Das weiss es nicht, ob die USB-Treiber das unterstützt.
Was ich weiss, dass die USB einen HID Treiber braucht und die eingentlich automatische runtergeladen wird sobald das Board mit PC Verbunden ist.
(13.05.2016 07:41 )galilio schrieb: Es funktioniert aber es ist nicht unbedingt was ich brauche.
Du hast doch geschrieben, dass du C++ kannst. Dann schreib eine DLL in C/C++/C#. Die kann nämlich Messages von Windows verarbeiten. Windows verschickt eine "Broadcast-Message", wenn ein USB-Port getrennt wurde (zumindest war das mal früher so). In der DLL kannst du auf diese Message reagieren und einen Callback nach LV machen.
Du könntest natürlich auch mal googeln, ob es nicht irgendwo für LV direkt was gibt, das beliebige Windows-Messages empfangen kann.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).