LabVIEWForum.de - Problem mit den globalen Variablen

LabVIEWForum.de

Normale Version: Problem mit den globalen Variablen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe ein Problem mit der Wertänderung der globalen Variable, und zwar ich benutze die globale Variable in mehreren VIs (wie auch immer), um einen Status im Hauptfenster bzw. HauptVI anzuzeigen. Aber den Wert bleibt in der Anzeige immer gleich. Worum?? Das Problem, nach meiner Vermutung, liegt in dem Erreigniscase, aber wo genau, finde ich nicht.

Im Anhang ist der Screenshot. Die Meldung bleibt unverändert im TRUE-Case "Verbindungsaufbau über...", obwohl den Wert sich ändert...
Schaltverhalten ist "beim Loslassen schalten".

Ich bedanke mich im Voraus für Eure Hilfe.

Gruß
Lessy
Hallo Lessy,

THINK DATAFLOW!

Du schreibst im Event in die globalen Variablen (und lokale Variablen der String-Indicators). Oberhalb der Eventstruktur liest du aus den globalen Variablen und schreibst ebenfalls in diese Stringanzeigen.
Was passiert zuerst, was danach?
Wie oft wird die Anzeige aktualisiert?

THINK DATAFLOW!
AVOID RACE CONDITIONS!

@Lucki:
Sollte ich hier zu einer FGV raten?
Big Grin
Um so etwas zu untersuchen, hatte ich eine Idee, die von jemandem hier im Forum als "genial" Angel_not eingestuft wurde. Einfach in den Ereigniscase - oder wo immer - temporär das VI "Signalton" reinsetzen. Je nachdem es klingelt oder nicht, weiß man sofort, ob die Programmstelle angefahren wurde oder nicht.

Zitat:@Lucki:
Sollte ich hier zu einer FGV raten?
Ich hatte eigentlich erwartet, dass Du Dir selbst treu bleibst und automatisch bei jeder Erwähnung einer Globalen Variablem wie ein Pawlowscher Hund kommentarlos über das Stöckchen "FGV" springst. Deine Verunsicherung bingt mich jetzt ins Grübeln. Habe ich vielleicht Deine psychische Gesundheit untergraben? Big Grin
(30.01.2013 14:19 )GerdW schrieb: [ -> ]Was passiert zuerst, was danach?
Wie oft wird die Anzeige aktualisiert?

THINK DATAFLOW!
AVOID RACE CONDITIONS!

@Lucki:
Sollte ich hier zu einer FGV raten?
Big Grin

Danke erst Lucki für Deine Antwort.

Also, das HauptVI läuft ständig, in dem werden die Meldungen, die zur Übersicht des Verbindungsstatuses dienen, angezeigt. Im Hintergrund wird noch ein SubVi gestartet. In dem subVi werden die Verbindungen aufgebaut und die Meldungen in der Abhängigkeit vom Fehler in den globalen Variablen geschrieben. Die globale Variable sind im HauptVI mit den Anzeigefenster verbunden. Die Meldungen sollen sich ständig ändern, aber das bleibt hängen!!!! Das HauptVI wird an der Stelle oben, da die zwei glb. Variablen sind, s. Anhang, nicht rechtzeitig oder gar nicht ausgeführt!!!!! Worum?? Ich komme nicht klar, was man an der Stelle ändern muss, damit die globale Variable ständig abgefragt werden und die Meldungen in der Anzeige erscheinen...

Bin für jeden Typ dankbar!

Gruß
Lessy
(30.01.2013 14:27 )Lucki schrieb: [ -> ]Um so etwas zu untersuchen, hatte ich eine Idee, die von jemandem hier im Forum als "genial" Angel_not eingestuft wurde. Einfach in den Ereigniscase - oder wo immer - temporär das VI "Signalton" reinsetzen. Je nachdem es klingelt oder nicht, weiß man sofort, ob die Programmstelle angefahren wurde oder nicht.

Danke Dir GerdW für deine Idee! aber das habe ich schon festgestellt, dass an der Stelle das VI nicht ausgeführt wird! Ich suche nach einen Fehler, worum es so passiert. Worin liegt das Problem? Ich komme nicht klar.
Anhang im Beitrag Nr.4
Danke im Voraus.

Gruß
Lessy
Hallo Lessy,

Zitat:Das HauptVI wird an der Stelle oben, da die zwei glb. Variablen sind, s. Anhang, nicht rechtzeitig oder gar nicht ausgeführt!!!!! Worum??
Wie sollen wir dies beurteilen, wenn du nur kleine Ausschnitte des BD zeigst?

Vielleicht musst du mal den Button "connect" betätigen, damit das entsprechende Event aufgerufen wird? Ohne Event wird das gezeigte auch nicht aufgerufen!
(30.01.2013 15:55 )GerdW schrieb: [ -> ]Wie sollen wir dies beurteilen, wenn du nur kleine Ausschnitte des BD zeigst?

Vielleicht musst du mal den Button "connect" betätigen, damit das entsprechende Event aufgerufen wird? Ohne Event wird das gezeigte auch nicht aufgerufen!

Hallo Gerd,

Entschuldigung, aber ich weis nicht, wie ich das noch beschreiben kann. Am besten stellt Ihr mir die Fragen, die ich vernünftig beantworten versuche.

Es ist schon klar, dass der Button "Connect" betätigt werden soll, um Erreigniscase mindestens einmal aufgerufen werden kann. Dann bekomme ich in den Anzeigen erste Meldungen, die im Erreigniscase sind. Dann bleibt der Wert des Buttons Connect unverändert, solange bis die Datenübertragung erfolgt.

Die Meldungen in dem Case werden ab dem Moment nicht mehr aufgerufen, sollen aber auch nicht!
Nun sollen glb. Variable, die außerhalb des Erreignisess liegen, in der while-schleife theoretisch jede Sekunde aktualisiert werden. Was ich gerne haben möchte!

Was soll ich jetzt tun, damit die while Schleife nicht hängen bleibt oder hat jemand eine andere Idee, wie ich noch die Meldungen im Fenster angezeigt bekommen kann?

Danke im Voraus.

Gruß

Lessy
Hallo Lessy,

Zitat:Was soll ich jetzt tun, damit die while Schleife nicht hängen bleibt
Falls du die Schleife um die Eventstruktur herum meinst: erstelle ein TimeOut-Event, welches einmal pro Sekunde aufgerufen wird...

Gibt es dafür keine Beispiele im Beispielfinder?
Referenz-URLs