Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
bin noch ein ziemlicher Laie und würde mich über eure Hilfe freuen.
Ich will auf einer Seite meiner Registerkarte eine Grafik (10 Kammern) anzeigen lassen, was für mich soweit noch kein Problem darstellt. Ebenfalls sind/sollen auf der Registerkarte 10 Druckschalter, für jede Kammer einen, zu finden sein.
Jetzt möchte ich gerne durch dass betätigen eines Druckschaltes zeigen, dass die Kammer voll oder leer ist.
Ich habe dies über 10 Case-Strukturen versucht, in dem ich an jeder einen Druckschalter angeschlossen habe und dann die Grafiken deklariert habe, die bei "True" und "False" angezeigt werden sollen. Die Ausgabe der Grafiken habe ich über die gleiche Grafikanzeige laufen lassen. Leider, wenn man jetzt dass Programm in betrieb nimmt, dann flackert alles und dass war nicht das Ziel.
(08.08.2011 10:04 )Brushfire schrieb: Ich habe dies über 10 Case-Strukturen versucht, in dem ich an jeder einen Druckschalter angeschlossen habe und dann die Grafiken deklariert habe, die bei "True" und "False" angezeigt werden sollen. Die Ausgabe der Grafiken habe ich über die gleiche Grafikanzeige laufen lassen. Leider, wenn man jetzt dass Programm in betrieb nimmt, dann flackert alles und dass war nicht das Ziel.
Das Flackern könnte daher kommen, dass du die Grafiken die ganze Zeit neuzeichnest, als dem Control (pictureControl?) bei jedem Schleifendurchlauf einen Wert zuweist?!?
(08.08.2011 10:04 )Brushfire schrieb: Könnte Ihr mir eventuell dabei helfen?
Am besten können wir dir helfen, wenn du dein VI hochlädst. Dann kann man über den Source Code nachvollziehen, was passiert und warum es flackert.
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
du hast im VI 5 Case-Strukturen. In jeder Struktur liest du ein JPG ein und stellst es im PictureIndicator (per lokaler Variable) dar. Klartext: dein subVI liest 5mal das Bild "leer.jpg" ein und stellt es pro Aufruf auch 5mal dar. Das kann schon ganz übel flackern...
Und was noch schlimmer ist: Wenn jetzt ein Button True ist, wird zwar das Bild geladen und angezeigt, aber ziemlich sicher sofort wieder durch ein anderes Bild überschrieben - eine klassische RaceCondition durch übermäßigen Gebrauch lokaler Variablen. Lösung: in den Cases nur den Pfad ausgeben und nach den Cases nur einmal ein Bild laden und darstellen!
P.S.: Es gibt auch Pfad-Konstanten, dann muss man nicht erst alle Strings nach Pfad umwandeln...
Wie ich schon vermutet habe, schreibst du immer ein Bild in das Picturecontrol. Durch dieses dauerne beschreiben, wird das Ganze sicher flackern. Zusätzlich laufen die Casestrukturen parallel. Also wird bei jedem Aufruf das Bild 5 mal neu beschrieben. (Edit: wie Gerd schon bemerkte )
Zwei Lösungsansätze:
1) Diese VI nur aufrufen, bzw. das PictureControl nur beschreiben,wenn eine Änderung des Status auftritt.
2) Mit Mehraufwand. Per Graphikprogramm je eine Graphik für jeden Zustand erstellen. Dann die Buttons abfragen und die entsprechende Graphik laden. Wird jedoch aufwändig bei entrsprechend hoher Buttons aufgrund der Kombinationsmöglichkeiten
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
bitte reißt mir jetzt den Kopf nicht ab, ich hab da so meine Schwierigkeiten mit euren Lösungsansätzen, dass Problem habe ich verstanden, aber leider scheitere ich an der Umsetzung.
Könntet Ihr mir sagen mit welchen Funktionen ich arbeiten muss?
kannst du mir bitte deine VI nochmal als 8.6 anhängen? Ich bin heute leider nicht in der Uni wo 2010 Version vorhanden ist und hier auf mein Lappi, hab ich nur die 8.6 als Studentversion.
Also mit Optionsfeldern hab ich es leider nur bedingt hinbekommen. Ich kann zwar über das Optionsfeld jetzt den Zustand für eine Kammer mir anzeigen lassen, aber sobald ich eine zweite Option auswähle, verschwindet der Zustand der davor eingestellt war.
Da ich leider mit Druckschaltern arbeiten muss (ein Anwender muss erst auf den Schalter drücken, damit er eine Aufforderung bekommt in welche Richtung er dass Handventil gedreht werden muss).
Durch die farbliche Änderung (mit Zeitverzögerung) wollte ich dem Anweder zeigen, dass eine Zustandsänderung in der Kammer geschehen ist.