LabVIEWForum.de - Meldung an Benutzer Express VI

LabVIEWForum.de

Normale Version: Meldung an Benutzer Express VI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
ich bin neu hier und habe ein kleines Problem. Ich habe ein VI zur Steuerung einer Syntheseapparatur, mit While-Schleife und Case-Struktur, programmiert. Innerhalb der While-Schleife sind noch zwei Sub-VIs zur Temperatursteuerung und ein kleines Programm mit grafischer Ausgabe zur Aktivitätsüberwachung (analoge Spannungsmessung). Die Case-Struktur wird mit einer Enum Konstanten selektiert. In mehreren "Wait" Fenstern ist das Express VI -Meldung an Benutzer- implementiert, wenn der Programmablauf dort ankommt erscheint die Meldung, die kommen soll, mit den beiden Schaltflächen OK und Abbrechen. Während das Fenster auf dem Bildschirm ist, kann man leider die Temperaturanzeigen und die Spannungsmessung nicht mehr verfolgen, da die Anzeigen "eingefroren sind. Das Programm an sich läuft allerdings im Hintergrund weiter. Das erkennt man daran das die Spannungsmessung auf der Zeitachse einen Sprung in der Zeit macht der der Wartezeit entspricht, auch die Spannungswerte werden gemessen.

Mein Problem bzw. meine Frage ist nun, wie man verhindern kann das bei erscheinen der Meldung die Programmoberfläche einfriert. Ich möchte nämlich bei diesen Meldungen auf das Erreichen einer bestimmten Temperatur oder einer bestimmten Spannung warten.

Kann mir dabei jemand helfen.
Du darfst halt nicht mit Wait Fenstern arbeiten, sondern mit einer Statuszeile und, falls Eingaben durch den Benutzer nötig sein sollten, mit einer Eventstruktur zur Abfrage von Buttons.
Hallo Frank,

danke für den Tipp, aber das Programm von Case mit Wait auf Ereignis-Struktur zu ändern dauert etwas. Ich melde mich ob es funktioniert hat.

VG
Thomas
Hallo Thomas,

wenn du schon beim umbauen bist, dann fasse deine Meldungen gleich an EINER Stelle zusammen. Du kannst überall dort, wo du im Code eine Meldung auslösen willst, diese Meldung in eine Queue schreiben, die in einer Parallelschleife ausgelesen und zur Anzeige gebracht wird. Als Datenformat dieser Queue ist es hilfreich, nicht nur einen String für die Meldungen zu wählen, sondern beispielsweise einen Cluster, der zum Einen die Meldung, zum anderen eine Anzeigezeit für die Meldung, ggf. noch eine Meldungspriorität und ein Flag, das entscheidet, ob diese Meldung bestätigt werden soll oder nicht. Dieses Meldungspanel für nicht zu bestätigende Meldungen müsstest du sir dann allerdings selbst basteln.

Später kannst du dann immernoch entscheiden, ob du die Meldungen als Popup oder als Statuszeile oder auch mal unangezeigt lassen willst, da du diese Änderungen nur an einer Stelle machen musst.



Gruß, Marko
Hallo,

mit einer Ereignis Struktur ist es das gleiche Problem, da hören sogar die Messungen im Hintergrund auf.

VG
Thomas
Hallo Marko,

habe gestern nicht mehr hier rein geschaut. Werde ich probieren, danke.

VG
Thomas

p.s. Ich programmiere nur "nebenbei", denn ich habe eigentlich einige andere Aufgaben in meinem Job.
Tinitatus hat ja die richtige profesionelle Lösung schon beschrieben.
Die einfachste, aber nicht so hilfreiche Antwort wäre gewesen: Ja, es geht, aber nur mit parallelen Schleifen (Das ist in der Antwort von Trinitatis auch schon drin). Hier ein simples Beispiel:
[attachment=56124]
[attachment=56123]
Hallo Lucki,

danke, das sieht schon mal richtig gut aus. Mein ursprüngliches Problem ist damit aber leider nicht behoben. Ich möchte nämlich nicht das der Anwender eine Taste drückt. Ich habe diese Funktion, wie beschrieben, im Moment in einem "Wait" in einer Case-Struktur. So soll es auch funktionieren. Man startet das Programm, es beginnen mehrere Messungen, dann macht das Programm eine Pause solange bis der Benutzer OK drückt oder aus welchem Grund auch immer abbricht. Während dieser Wartezeit möchte ich die fortlaufenden Messungen sehen.

LG
Thomas
Hallo Thomas,

Zitat:Während dieser Wartezeit möchte ich die fortlaufenden Messungen sehen.
Wenn du willst, das etwas parallel läuft, dann musst du das auch so programmieren!

Schau dir doch einfach noch mal Beitrag #4 an…
Hallo GerdW,

das ist einfacher gesagt als getan. Wie schon erwähnt bin ich nur Gelegenheitsprogrammierer. Ich hänge mal mein VI an, vielleicht macht das einiges klarer.

LG
Thomas
Hallo Thomas,

häng´es doch bitte in 2014 oder einer früheren Version an.

Danke.


Gruß, Marko
Seiten: 1 2
Referenz-URLs