Ereignisstruktur

Anfängerfragen, die mit LabVIEW zu tun haben
Правила форума
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:

hide XXX forums

Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
Ответить
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Ereignisstruktur

Сообщение LauraS »

Hallo zusammen,
bei mir ist mal wieder eine Frage aufgetaucht:
Ich habe ein Programm nach dem State-Machine-Prinzip aufgebaut. In einem Case ist eine Ereignisstruktur. Um diese Ereignisstruktur habe ich eine while-Schleife, damit das Ereignis mehrmals verarbeitet werden kann. Soweit klappt das auch ganz gut. Nur bleibt das Programm an der Stelle in der While-Schleife stecken und geht nicht ins nächste Case. Ist ja eigentlich auch ganz logisch, aber gibt es eine Möglichkeit, dass der nächste Case abgearbeitet wird und das Ereignis trotzdem wiederholt verarbeitet wird. ich hab auch schon probiert die Ereignisstrukur aus dem Case rauszunehmen, aber das funktioniert dann gar nicht mehr...
Kann mir jemand sagen wo mein Fehler liegt oder wie ich aus der while-Schleife ins nächste Case springen kann? Vielen Dank schonmal...
Вложения
Unbenannt.JPG
jg69

Professionalism
developer
developer
Сообщения: 265
Зарегистрирован: 14 окт 2008, 00:09
Награды: 1
Версия LabVIEW: 8.x, 20x

Re: Ereignisstruktur

Сообщение jg69 »

Hallo, wie soll diese While-Schleife jemals aufhören:
Image01.png
Image01.png (6.48 КБ) 6962 просмотра
Und gleich mal eine Warnung: Es führt praktisch IMMER zu unlösbaren Problemen, wenn man innerhalb eines VIs mehr als eine Event-Struktur verwendest.

Gruß, Jens
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение LauraS »

Hi,
Dass die while-Schleife nicht aufhört und woran das liegt, das habe ich ja bemerkt. Deshalb war ja meine Frage, wie ich das hinkriegen könnte, dass sie aufhört und das Ereignis trotzdem nochmal bearbeitet werden kann.
Ich habe schon ausprobiert das Stopp-Teil an den Ausgang EOF vom Datei lesen zu hängen, aber des gibt auch ne Endlos-Schleife. Ein extra Button oder so würde ja eig auch gehen, aber ich glaube das verwirrt den Benutzer nur, wenn er noch die Schleife beenden muss um weiter zu kommen...
Und gleich mal eine Warnung: Es führt praktisch IMMER zu unlösbaren Problemen, wenn man innerhalb eines VIs mehr als eine Event-Struktur verwendest.
ich hab doch nur ein ereignis case...?

Aber ich bin grad am lernen, wie das mit einer queued statemachine so funktioniert...in meinem Buch ist da ein glaub ich ganz gutes Beispiel. Vielleicht komm ich ja dann auf ne bessere Lösung.
Grüßle
jg69

Professionalism
developer
developer
Сообщения: 265
Зарегистрирован: 14 окт 2008, 00:09
Награды: 1
Версия LabVIEW: 8.x, 20x

Re: Ereignisstruktur

Сообщение jg69 »

LauraS писал(а):Hi,
Dass die while-Schleife nicht aufhört und woran das liegt, das habe ich ja bemerkt. Deshalb war ja meine Frage, wie ich das hinkriegen könnte, dass sie aufhört und das Ereignis trotzdem nochmal bearbeitet werden kann.
Ich habe schon ausprobiert das Stopp-Teil an den Ausgang EOF vom Datei lesen zu hängen, aber des gibt auch ne Endlos-Schleife. Ein extra Button oder so würde ja eig auch gehen, aber ich glaube das verwirrt den Benutzer nur, wenn er noch die Schleife beenden muss um weiter zu kommen...
Naja, was soll an dieser Stelle passieren? Wartest du nur auf den einen Mausklick, und dass nur einmal? Dann brauchst du die While Schleife gar nicht, denn die wartet an dieser Stelle, bis eines der programmierten Events eintritt. Und wenn du nur dieses eine Maus-Event hast, dann wartet sie darauf.
Oder du hängst in das Event eine True-Konstante rein und führst sie weiter an den Schleifen-Abbruch.
LauraS писал(а):
Und gleich mal eine Warnung: Es führt praktisch IMMER zu unlösbaren Problemen, wenn man innerhalb eines VIs mehr als eine Event-Struktur verwendest.
ich hab doch nur ein ereignis case...?
Das war als genereller Hinweis gedacht. Was meinst du, wie oft ich schon im LVF (labviewforum.de) solche Sachen gesehen habe:
Sequenz, um eine Reihenfolge abzuarbeiten, und dann in jedem Sequenzrahmen eine Event-Struktur, weil der User an dieser Stelle genau eine Eingabe machen soll.
Und das geht praktisch immer in die Hose.
Also bitte erst gar nicht anfangen oder probieren! Lies dir hierzu auch am besten mal die Hilfe zur Event-Struktur durch. Da gibt es eine Sektion mit Hinweisen zur Anwendung der Event-Struktur, sollte man unbedingt befolgen!

Gruß, Jens
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение LauraS »

Hallo zusammen
eine Frage: Gibt es eine Möglichkeit, ohne eine extra Abfrage vor dem Beenden eines Programmes noch ein case abzuarbeiten? Also immer wenn das Programm beendet wird, sollen vorher noch Daten in einer Datei gespeichert werden. Allerdings soll das Ganze ohne Benutzereingabe oder so was passieren. Ich hab überlegt, ob es vielleicht über ein bestimmtes Ereignis möglich ist, hab aber bisher noch nichts konkretes gefunden...kann mir da jemand weiterhelfen?
Geht es vielleicht über das Ereignis "Applikationsinstanz schließen" als Filetereignis oder so?
Danke schon mal im Voraus...
Grüßle
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение learny »

LauraS писал(а):Hallo zusammen
eine Frage: Gibt es eine Möglichkeit, ohne eine extra Abfrage vor dem Beenden eines Programmes noch ein case abzuarbeiten? Also immer wenn das Programm beendet wird, sollen vorher noch Daten in einer Datei gespeichert werden. Allerdings soll das Ganze ohne Benutzereingabe oder so was passieren. Ich hab überlegt, ob es vielleicht über ein bestimmtes Ereignis möglich ist, hab aber bisher noch nichts konkretes gefunden...kann mir da jemand weiterhelfen?
Geht es vielleicht über das Ereignis "Applikationsinstanz schließen" als Filetereignis oder so?
Danke schon mal im Voraus...
Grüßle
Hallo Laura,

bin zwar noch kein LV-Experte, aber so wie ich deine Frage verstanden habe, könntest du doch auch eine letzte Case-Sequenz einfügen, in der du deine Data-write VI einfügen kannst.

Grüße
أهلا و سهلا بالمستخدمين العرب
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение LauraS »

bin zwar noch kein LV-Experte, aber so wie ich deine Frage verstanden habe, könntest du doch auch eine letzte Case-Sequenz einfügen, in der du deine Data-write VI einfügen kannst.
Es gibt ja gar keine "letzte" Case Sequenz bevor das Programm nicht beendet wird. Also ich mein das so: das Programm ist ein Prüfprogramm und läuft den ganzen Tag, bzw. solange wie der Arbeitsplatz halt besetzt ist. Und ich möchte jetzt die Daten der Prüfgeräte abspeichern, immer dann wenn das Prüfgerät gewechselt wird (das funktioniert) und bevor das Programm eben beendet wird.
Theoretisch könnte ich ja einen Stopp-Button einfügen, aber ich soll in der bisherigen Benutzeroberfläche eigentlich nichts ändern, und vor allem keine zusätzlichen Eingaben, die den/die Arbeiter/in dann verwirren würden.
Deshalb dachte ich, es gibt vielleicht ein Ereignis, das behandelt werden kann, wenn eben jemand das Programm beendet. So wie z.B. die Speicheraufforderung in MS-Word oder so, die ja auch vorm Schließen des Programms aufgerufen wird.
So was möchte ich quasi auch, nur ohne Benutzereingabe.
Grüßle
jg69

Professionalism
developer
developer
Сообщения: 265
Зарегистрирован: 14 окт 2008, 00:09
Награды: 1
Версия LabVIEW: 8.x, 20x

Re: Ereignisstruktur

Сообщение jg69 »

Hallo,

irgendwie hast du die Antwort schon selber gegeben.
Es gibt in der Event-Structure 4 interessante Events für dich:
die erste hast du schon genannt: Application Instance Close (?) (soll heißen das mit und ohne Fragezeichen).
Wird ausgelöst, wenn du das Programm beendest. Dann machst du halt was.
die anderen beiden sind: This VI: Panel Close (?).

Ob und wie du das jetzt in deine Programm einbauen kannst, kA, denn wie du dein Programm aufgebaut hast, das kann ich nicht hellsehen.

Gruß, Jens
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение LauraS »

Hallo,
also irgendwie komme ich mit den Ereignissen, die du aufgezählt hast, nicht ganz klar.
Applikationsinstanz schließen tritt ja nur dann auf, wenn ich das Projekt schließe, seh ich das richtig? Und wenn ich nachher eine exe-Datei habe, wie ist das dann?
Kann mir hier außerdem jemand erklären wie genau Filterereignisse verarbeitet werden? Also ich verstehe was das ist, nur wie ich die verwende, so dass das Ereignis quasi nur kurz aufgeschoben wird, um noch kurz ein Case abzuarbeiten, das verstehe ich nicht so ganz...
Schon mal im Voraus Danke für jeden Tip!
Grüßle
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ereignisstruktur

Сообщение Eugen Graf »

Zur 1. Frage: mach keine Sorge, EXE ist dann gleich eine Instanz.
Zur 2. Frage, ich ferstehe nicht ganz was du mit "Filterereignisse" meinst.
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Ereignisstruktur

Сообщение LauraS »

In meinen Unterlagen und in der Labviewhilfe werden Filterereignisse von Meldeereignissen unterschieden Filterereignisse sind die mit dem Fragezeichen hintendran, also bei denen quasi vor der Handlung noch was passsiert, wenn ich das richtig verstanden habe...
Aber wenn exe eine Instanz ist, dann hat sich die Frage schon erledigt, es funktioniert nämlich seit gerade eben:-)...Vielen Dank!
Ответить

Вернуться в «Für Anfänger»