Hallo Leute,
ich habe ein sehr skurriles Problem. Ist im angehängten VI extrahiert.
Eine Taste -> mechanisches Verhalten "Switch Until Released" wird gedrückt.
Der Tastendruck wird in einer Event Struktur registriert und daraufhin ein Wert in einem Cluster verändert.
In dieser Eventstruktur existieren dynamische Events. Diese werden im Eventcase Timeout abgefeuert. Einer davon tritt auf, wenn bei meiner Anlage eine Meldung auftritt und ändert mir von meinem TabControl die Seite, damit die Meldung angezeigt wird.
Soweit alles gut aber: wenn eine Meldung auftritt, während ich die Taste gedrückt habe verändert sich die Tastenlogik: die Taste ist dann nicht mehr True, wenn sie gedrückt wird sondern die Taste bleibt auf "Dauer 1" und ist False, wenn man sie drückt.
In dem Beispiel habe ich die Meldung durch einen 5 Sekunden Timer simuliert.
Bitte um Lösungsvorschläge.
lG nookie
[
attachment=31809]
Setz' einfach im "hallo"-Event Deinen Boolschen Schalter per lokaler Variable auf "False" dann sollte es passen.
Gruß Markus
Hallo Y-P,
danke für den Input, ist aber eigentlich nur ein Workaround. Ich hätte gerne eine Lösung, damit ich nicht mehr darüber nachdenken muss. Ich müsste ja in jedem Dynamischen Event, das auftritt mal präventiv alle Schalter zurücksetzten. Außerdem bleibt dann ja der Wert im Cluster falsch.
Ergo wäre der einzig Sinnvolle Workaround in dem Fall über eine Property: Value Signaling den Wert zu verändern.
Wenn das dann allerdings recht viele Tasten habe und in jedem Dynamischen Event wieder recht viele neue Events abfeuer, produziere ich sinnlose CPU Last ohne Ende.
lG nookie
' schrieb:Eine Taste -> mechanisches Verhalten "Switch Until Released" wird gedrückt.
Der Tastendruck wird in einer Event Struktur registriert und daraufhin ein Wert in einem Cluster verändert.
Bist du applikationsbedingt an "Switch Until Released" gebunden oder geht auch gelatched? Da tritt dieses Problem automatisch nicht auf.
Zitat:wenn eine Meldung auftritt, während ich die Taste gedrückt habe verändert sich die Tastenlogik: die Taste ist dann nicht mehr True, wenn sie gedrückt wird sondern die Taste bleibt auf "Dauer 1" und ist False, wenn man sie drückt.
Eine der vielen Ungereimtheiten in der LV-GUI ...
Die meisten dieser Probleme habe ich durch Umstellung auf gelatched eliminieren können. Außerdem verwende ich automatische TabSheet-Umschaltungen auch nur sehr ungern. Hast du schon mal an das Vorblenden eines Strings gedacht?
Dann würde ich "latch when pressed" nehmen. Das wirst Du aber vielleicht nicht wollen, sonst hättest Du es ja gemacht.
Gruß Markus
' schrieb:Ich hätte gerne eine Lösung, damit ich nicht mehr darüber nachdenken muss.
Ich würde so ein Programmierung zwischen ungenügend und unmöglich einstufen: Da wird, während der Taster mit der Maus gedrückt gehalten wird, die Tab-Seite, auf der sich der Taster befindet, durch ein anderes Ereignis ungültig gemacht, so daß die Maus plötzlich nicht mehr auf den Taster zeigt, sondern auf einer ganz anderen Tab-Seite irgendwo ins Leere. Auf so eine skurrile Idee muß man erst mal kommen, und warum und wieso das irgendetwas nicht sauber funktioniert, muß man doch gar nicht näher analysieren.
Wenn man es schon so machen will, was ich nicht für notwendig halte, dann wenigstens so, daß, während der Taster gedrückt gehalten wird, der Timout nicht stattfindet:
[
attachment=31832]
Hallo,
das Problem ist, dass mit dieser Taste ein Stellmotor für einen Gleichrichter angesteuert wird und die Bediener dafür sehen müssen, wie hoch der Strom ist (Controls werden im Timeout upgedatet).
Ich verwende ein TabControl auf meinem Hauptpanel um verschiedenste Informationen übersichtlich anzuzeigen. Außerdem ist die Tableise des TabControls nicht sichtbar. Normalerweise wird die Seite nur auf Usereingaben hin gewechselt. Allerdings wünscht sich der Kunde, dass sofort auf die Meldungsseite gewechselt wird, wenn diese auftreten (kann ich also nicht beeinflussen). Falls jemand eine bessere Idee hat, um verschiedene Informationen in einem Programm anzuzeigen (und bitte nicht den Vorschlag SubPanels) wäre ich dankbar.
Zusammengefasst: Es gibt für das Problem anscheinend keine wirkliche Lösung, sondern nur Workarounds.
lG nookie
@Lucki: Danke für die netten Worte, ich hätte aber eher nach Lösungen gesucht.