LabVIEWForum.de
Listbox leeren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Listbox leeren (/Thread-Listbox-leeren)

Seiten: 1 2


Listbox leeren - tatnau - 07.09.2015 14:39

Hallo zusammen,

ich habe eine Frage zum leeren einer Listbox. Habe dies mit einer Event-Structure realisiert. Funktioniert so auch. Allerdings lässt sich mein Programm nun nicht mehr schließen, es hängt sich irgendwo auf. Die EventStructure befindet sich in der While Schleife des Programms und sieht folgendermaßen aus (Anhang).

Muss ich hier noch eine Stop-Bedingung hinzufügen? Die Listbox soll immer dann geleert werden, wenn ich auf den entsprechenden Button klicke.

Vielen Dank schonmal!

Tatiana


RE: Listbox leeren - wladimir s - 07.09.2015 15:01

Wenn es das einzige Event in dieser Struktur ist, dann wird die While Schleife immer erst nach dem leeren der Listbox beendet.

Wie ist den jetzt die Abbruchbedingung für die Schleife definiert?


RE: Listbox leeren - tatnau - 08.09.2015 08:26

Die Abbruchbedingung habe ich mit einem Stop-Button realisiert. Ansonsten soll das Programm kontinuierlich arbeiten.
Die Listbox soll immer dann geleert werden, wenn man den Button "Clear Listbox" betätigt. Danach sollten die Werte der Listbox mit den aktuell eingelesenen Werten wieder gefüllt werden.

Ich habe die Button-Abfrage nun mit einer Case-Struktur realisiert. Momentan leert er die Listbox, solange der Button gedrückt bleibt und liest dann wieder die alten Werte ein und schreibt die neuen, kontinuierlich eingelesenen Werte dazu.
Idealerweise sollte sie zusätzlich einmal beim Aufruf des Programms geleert werden.

Diese Eventstruktur ist die einzige in der While-Schleife.


RE: Listbox leeren - wladimir s - 08.09.2015 08:53

Dann fange in der Eventstruktur zusätzlich das Event, mit du das Programm beendest ab. Aus diesem Envent brichst du dann die While Schleife der Eventstruktur ab.


RE: Listbox leeren - tatnau - 08.09.2015 09:13

Leider hängt sich dabei immer LabView auf...

Ich dachte mir, es geht eventuell auch mit einer einfachen Case-Struktur (siehe Anhang). Momentan leert er die Listbox, solange der Button gedrückt bleibt und liest dann wieder die alten Werte ein und schreibt die neuen, kontinuierlich eingelesenen Werte dazu. Gewollt wäre aber, dass die Listbox geleert wird, und dann nach Drücken des Buttons NUR die neu eingelesenen Werte vom Controller schreibt.


RE: Listbox leeren - Trinitatis - 08.09.2015 09:26

(08.09.2015 09:13 )tatnau schrieb:  ...und schreibt die neuen, kontinuierlich eingelesenen Werte dazu.

Du musst dein Schieberegister mit einem leeren Array vorinitialisieren.


Gruß, Marko


RE: Listbox leeren - tatnau - 08.09.2015 09:36

Das Schieberegister gibt es ja schon. Im Normalfall werden die vom Controller eingelesenen Werte ja auch kontinuierlich in die Listbox geschrieben. Ich möchte nur auf Wunsch die Listbox leeren, wenn ich den Button "Clear Listbox" (der Button der untereren Case-Struktur) betätige. Dann soll die Listbox sich einmal leeren und die neu eingelesenen Werte schreiben. Man kann das zum Beispiel mit dem Programm Terra Term und der Option "Bildschirm leeren" vergleichen.


RE: Listbox leeren - Trinitatis - 08.09.2015 09:46

In dem Moment, in dem du deine Werte löschst, sind sie trotzdem noch im Shiftregister und werden danach auch wieder geschrieben. Hinzu kommt die Akkumalierung durch das nicht initialisierte Shiftregister am Schleifeneingang.

Du müsstest deine beiden Casestrukturen nacheinander abarbeiten - nicht parallel und das SR vorinitialisieren


Gruß, Marko
im einfachsten Fall so:


RE: Listbox leeren - tatnau - 08.09.2015 10:01

Danke Dir, Marco.

Habe ich umgesetzt. Es arbeitet schneller, das ist gut. Jedoch bleibt das Problem, dass nach Leeren die davor eingelesenen Werte wieder in der Listbox stehen. Habe ich etwas übersehen?


RE: Listbox leeren - Trinitatis - 08.09.2015 10:10

(08.09.2015 10:01 )tatnau schrieb:  Habe ich etwas übersehen?

ich glab´schon.
Du hast es nicht so umgesetzt, wie in meinem Beispiel. Die Tunnel der Sequenzstruktur speichern den reingeschriebenen (alten) Wert. Wenn du dann im nächsten Rahmen die Anzeige löschst, werden über den Tunnel aber wieder die alten Werte geschrieben.


Gruß, Marko