Hallo Thommy,
herzlich willkommen im Forum!
Zitat:Ich habe das Problem, dass ich einen programmierten Dauertest wobei der Motor unterschiedliche Drehzahlen anfährt nicht anhalten kann.
Sobald ein Event ausgeführt wird ist die GUI für die Eingabe eingefroren bis das Event abgearbeitet ist.
Ich verwende keine Queues und bin mir unsicher ob ein Anhalten des Dauertest ohne überhaupt möglich ist.
Über Tipps und Anregungen würde ich mich freuen.
Es gibt eine klare Grundregel für die Nutzung der Event-Struktur: ein Eventcase sollte so schnell wie möglich abgearbeitet sein. Und unter "schnell" sollte man hier "Millisekunden" verstehen!
Deine Bilder zeigen dagegen etwas anderes: viel Code in den Eventcases, inkl. Schleifen und anscheinend Kommunikation mit externer Messtechnik. Alles Dinge, die nicht "schnell" ablaufen…
Nun könnte man auf die "clevere" Idee kommen, in der Eventcase-Definition das Häkchen bei "block GUI" zu entfernen. Das ist aber leider auch nicht sinnvoll, da dank THINK DATAFLOW! andere Events erst dann abgearbeitet werden können, wenn der aktuelle Case beendet wurde. Du verschlimmbessert auf diese Weise nur das Verhalten deines Programms: Events werden registriert, aber stark zeitverzögert abgearbeitet - das hört man den User jetzt schon fluchen…
Lösung:
Programm neu erstellen - und sich vorher Gedanken um eine sinnvolle Programmstruktur machen!
Warum verwendest du denn keine Queues? Oder sinnvoll strukturierte Statemachines oder QMH?
Anmerkungen zu den Bildern:
Generell sehr "komprimierter" Code, da könnte man mal aufräumen und z.B. mehr gerade Drähte verwenden! Lies mal den Styleguide in der LabVIEW-Hilfe!
Was genau sollen FOR-Loops bewirken, die exakt einmal iterieren? Das ist quasi ein NOP! Warum nutzt du nicht den ErrorWire für den DATAFLOW?
Schleifen in Schleifen (Dauertest): das geht mit einer Statemachine schöner…