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!
07.09.2015, 14:39 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2015 14:40 von tatnau.)
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.
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.
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.
08.09.2015, 09:13 (Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2015 09:23 von tatnau.)
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.
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.
08.09.2015, 09:46 (Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2015 09:50 von Trinitatis.)
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
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?
(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.