Typisches Beispiel der Nichtbeachtung von Datenfluss und des Multithreading von LabVIEW.
Hier nochmal das Blockdiagramm deines Start.vi:
Was passiert? Eventstruktur und Auslesen der COM-Port Auswahl sind parallel programmiert. Sie werden somit auch "parallel" ausgeführt. Also:
- VI startet.
- Akt. Auswahl (bei Start leer) von COM-Port wird an globale Variable übergeben. Eventstruktur startet und wartet auf ein Event.
- Wenn du jetzt eine neue Auswahl bei COM-Port triffst, wird die Übergabe an die globale Variabel nicht nochmal ausgeführt, denn die Eventstruktur wartet noch auf ein Event, die While-Loop läuft also nicht ein weiteres Mal durch.
- Nehmen wir an, du betätigst jetzt "Messung". Der Code im Event "Messung:Value Change" wird jetzt ausgeführt. In der globalen Variable steht aber noch eine leere Auswahl. Folge: FEHLERMELDUNG!
Gruß, Jens
P.S. und
Bitte Anhänge immer hier im LVF hochladen, nicht bei externen Hostern (vgl. LVF-Regeln).
EDIT: Mit DATAFLOW hat Gerd mal wieder dieselbe Idee. Keine Überraschung...
EDIT 2: Für alle Nicht-Apple-User, hier ein korrigiertes Archiv:
Schalterauswertung2.zip (Größe: 131,64 KB / Downloads: 255)