LabVIEWForum.de
Programm reagiert nicht auf Benutzer - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Programm reagiert nicht auf Benutzer (/Thread-Programm-reagiert-nicht-auf-Benutzer)



Programm reagiert nicht auf Benutzer - SteffenSI - 04.05.2009 15:43

Hallo,

mein Problem ist ziemlich einfach, jedoch habe ich quasi nichts passendes dazu finden koennen.

Mein Programm kann man in einen "Aufnahmebetrieb" versetzen. Dieser besteht im wesentlichen aus mehreren geschalchtelten Schleifen, die sich teils in einigen SubVIs liegen.

Wenn nun der "Aufnahmebetrieb" gestartet wird, reagiert mein Programm nicht mehr auf Benutzereingaben (bspw. rechtsklick oeffnet entsprechendes PopUp erst NACHDEM der Aufnahmemodus vollstaendig abgearbeitet wurde). Insbesondere wuerde ich gerne dem Benutzer ermoeglichen den Aufnahmevorgang mit einem Abbruch-Button abzubrechen.

Woran kann es liegen, dass mein Programm nicht mehr auf Benutzerinteraktionen reagiert? Alle Schleifen habe ich mit einer 0.001ms wait function versehen.

Gruesse Steffen


Programm reagiert nicht auf Benutzer - TSC - 04.05.2009 15:48

ohne deinen quellcode zu sehen kann man nur vermutungen anstellen:

ich vermute, dein programm hängt irgendwo in einer kleinen schleife und liest die benutzeraktionen nicht jedesmal neu ein. sprich du hast einen buttonwert einmal an die schleife angeschlossen und liest nicht innerhalb der schleife erneut den aktuellen status eines buttons aus.

VI hochladen könnte mehr bringen!

LG
Torsten


Programm reagiert nicht auf Benutzer - Kvasir - 04.05.2009 16:33

Benutzt du eine Eventstruktur und hast dabei eventuell das Frontpanel gesperrt?


Programm reagiert nicht auf Benutzer - SteffenSI - 04.05.2009 20:50

' schrieb:ohne deinen quellcode zu sehen kann man nur vermutungen anstellen:
Entschuldige Torsten, aber ich denke in diesem Fall bringt der Quellcode nciht viel - um alles einigermaßen komplett zu haben müsste ich fast mein gesamtes Projekt hochstellen, da fast alle Klassen irgendwie darim eingebunden sind, und das bedeuted mittlerweile schon fast 1200 eigene vis, aber selbst mit den wichtigsten vis sind es in diesem Programmabschnitt noch sehr viele.

ich werde lieber versuchen den aufbau grob zu umreisen:
in meiner "hauptloop" meines main.vis wird subvi1 gestartet. darin befindet sich eine for-loop (sie war eine der änderungen seit der alten version, ind er es noch funktionierte). in dieser for loop werden nacheinander subvi2 und subvi3 aufgerufen. diese enthalten jeweils eine while loop, die schon früher terminieren sollte falls button gedrückt (antwort des buttons ist aber immer false, da ich ihn ja nciht drücken kann während die loops laufen).

' schrieb:ich vermute, dein programm hängt irgendwo in einer kleinen schleife und liest die benutzeraktionen nicht jedesmal neu ein. sprich du hast einen buttonwert einmal an die schleife angeschlossen und liest nicht innerhalb der schleife erneut den aktuellen status eines buttons aus.

ich übergebe den vis eine referenz auf ein cluster, welches auch den button enthält. wenn sie den wert auslesen wandeln sie das variant in den entsprechenden typ. da dies über eine referenz geht müsste der ausgelesene wert schon aktuell sein, oder?

Das mein programm hängt glaub ich nicht (weis ich), da es ja normal abarbeitet was es abarbeiten soll und dann auch wieder zum frontpanel zurückkehrt wo ich dann auch wieder die kontrolle habe.
sobald die aufnahme läuft und ich bspw. auf den button klicke, zeigt dieser gar keine bewegung - sonst sieht man ja anhand der reaktion des buttons das er geklickt wurde.

' schrieb:Benutzt du eine Eventstruktur und hast dabei eventuell das Frontpanel gesperrt?

innerhalb des ganzen prozesses befindet sich keine event-structure. zwar benutze ich mehrer XCtr auf dem frontpanel die mit ihrer event structure kommen, jedoch wird der ganze vorgang nicht aus einer event-structure heraus aufgerufen.

Gruß und danke für eure Hilfe,
Steffen


Programm reagiert nicht auf Benutzer - ImExPorty - 04.05.2009 21:56

Hallo SteffenSI,
versuche Deinen Effekt möglichst abgespeckt zu reproduzieren...
ich hab' da mal was vorbereitet... soweit ich es verstanden habe...
[attachment=18226]

Lv85_img[attachment=18225]


Programm reagiert nicht auf Benutzer - Achim - 05.05.2009 07:39

' schrieb:Alle Schleifen habe ich mit einer 0.001ms wait function versehen.

Wie hast du das geschafft?GlareHmm


Programm reagiert nicht auf Benutzer - TSC - 05.05.2009 07:55

' schrieb:...
Entschuldige Torsten, aber ich denke in diesem Fall bringt der Quellcode nciht viel - um alles einigermaßen komplett zu haben müsste ich fast mein gesamtes Projekt hochstellen, da fast alle Klassen irgendwie darim eingebunden sind, und das bedeuted mittlerweile schon fast 1200 eigene vis, aber selbst mit den wichtigsten vis sind es in diesem Programmabschnitt noch sehr viele.
...

Es erwartet hier ja keiner ein Projekt mit hunderten VIs. Nur um einen Fehler zu finden, ist es oft eine gute Möglichkeit, das Problem einzugrenzen. Zu diesem Zweck versuche ich meist, den Fehler in einem kleinen VI/Projekt zu reproduzieren. Das hat den Vorteil, dass es für uns deutlich leichter zu verstehen ist und auch Dinge wie Schaltverhalten von Buttons und sonstige Einstellungen überprüfbar sind.

LG
Torsten


Programm reagiert nicht auf Benutzer - kpa - 05.05.2009 09:06

Hallo SteffenSI,

für mich hört es sich so an als ob Dein Programm ganz normal funktioniert, Du bist in einer inneren Schleife (SubVI) und die muss erst abgearbeitet sein damit Dein Programm weiterläuft.
Also wenn Du in der Zeit in der Dein SubVI läuft Eingaben im Haupt-VI machen willst muss dein Sub-VI parallel laufen.
Um Dein Sub-VI abzubrechen kannst Du Ihm ein Frontpanel mit Abbruchbutton geben.

Grüße

kpa


Programm reagiert nicht auf Benutzer - Santi - 05.05.2009 10:30

' schrieb:ich werde lieber versuchen den aufbau grob zu umreisen:
in meiner "hauptloop" meines main.vis wird subvi1 gestartet. darin befindet sich eine for-loop (sie war eine der änderungen seit der alten version, ind er es noch funktionierte). in dieser for loop werden nacheinander subvi2 und subvi3 aufgerufen....

Naja eine for loop ist halt schwer abzubrechen (es sei denn mit conditional terminal). Es könnte also sein das subvi2 beendet wird dann aber subvi3 aufgerufen wird und die ganze Sache munter weiterläuft.. ohne Code läßt sich aber leider nur Mutmaßen und auch Erklärungen bringen da meist wenig, da du natürlich die Sache so erklärst wie du sie siehst und wenn du dir des Problems im klaren wärst würdest du hier wahrscheinlich nicht posten WinkRolleyesHuh