(25.10.2011 21:06 )Hummingbird schrieb: Hallo Freunde,
ich brauche mal wieder Rat. Ich habe jetzt ein Programm, das funktioniert.. Möchte das aber noch bisschen aufmotzen (anschaulicher gestalten). Hierzu möchte ich das Frontpanel tunen. Im Moment habe ich.. Input->Output.. Will jetzt aber die einzelnen Schritte mit Aufforderungen am Frontpanel verbinden. Was macht da mehr Sinn? Ereignisstruktur, oder auf Frontpaneleingabe warten? Ich denke mir, dass das letztere wohl weniger Speicher frisst. Ich habe nun aber auf jeden Fall eine Ereignisstruktur im System, da ich gerne die Timeout-Funktion nutzen möchte. Wenn ich jetzt in meinen ersten case der Ereignisstruktur (o-ter ist time out) eine Flat-Sequence Struktur packe und das mit einer "true-false" Abfrage eines Schalters verbinde, dann rennt Labview auf Knopfdruck los, stoppt aber selbst dann bei dem erreichen des zweiten Fensters der Flat-Sequence nicht, wenn ich hier einen "auf Frontpanel-Eingabe warten" Baustein einfüge. Hier verknüpfe ich die "auf Frontpanel-Eingabe warten" funktion mit einer True-False Wertänderung, die ich in das zugehörige Fenster der Flat-Sequence packe, doch das wird einfach übergangen..
Ist die Alternative eine Ereignisstruktur in einer While-Schleife mit Schieberegistern (übergeben von Werten)? Ich hätte gerne eine serielle Ereignisstruktur. Aktion eins liest ein File ein.. Ruhe.. Knopf zwei löst einen Verarbeitungsschritt aus.. Ruhe.. Eingabe Feld nimmt Werte von Benutzer auf.. Ruhe.. Knopf verwertet die Eingabe mit den bestehenden Daten.. Ausgabe in Datei, oder Grafik.. So wie ich mir das mit der While Schleife vorstelle, läuft das dann immer im Hintergrund und frisst Leistung.. Hab schon gefunden, dass mehrere Ereignisstrukturen ein NoGo sind..
Würde gerne ein Beispiel posten, doch hab auf meinem Notebook kein Labview installiert..
Vielen Dank für eure Zeit..
Dein Programm hält nicht an, weil es in den Timeout-Case läuft worin sich jedoch mit ziemlich grosser Sicherheit kein "Warten auf Frontpanel-Veränderung" befindet.
Wenn du schon eine Eventstruktur hast würde ich garantiert zu 90% keine "Warten auf Frontpanel-Veränderung" (du meinst schon das VI oder?) verwenden, einfach weil die Eventstruktur das zuverlässig löst.
Die einfachste Lösung wäre, deinen Timeout-Case in eine separate Schleife auszulagern. Ob dies möglich ist kann ich leider ohne Code schlecht beurteilen... Was läuft denn im Timeout-Case genau ab?
Ohne Timeout-Case wartet die Eventstruktur nämlich ab bis ein Event ausgelöst wird. Genau das was du willst. Zumindest hab ich das beim Lesen deiner Anforderung rausgelesen
Für deine Anforderung würde sich eine State-Machine mit Ablauf
Aktion 1 -> Auf Event Warten -> Aktion 2 -> Auf Event warten -> ect.
anbieten, dafür wäre es interessant zu wissen ob die verschiedenen Aktionen auch alle eine Aktion des Users vorraussetzten oder auch programmatisch gelöst werden ohne "Fremdeinwirkung"
Hoffe das hilft dir weiter!
Gruss Marc