VEEforum.de deutschsprachiges Forum für VEE Entwickler

Normale Version: Stoppen des Programmes mit Mausbewegung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute,

mir ist seit längerem schon was aufgefallen, das mir sorgen macht.
und zwar ist es das bedienen von z.b slidern im panel.
wenn ich mit der maus draufbleibe um mit den slider einen wert einzustellen, oder gewisse panels herumschieben möchte unterbricht
das programm und macht erst wieder weiter wenn ich mit dem herumbewegen aufgehört habe.
das ist ärgerlich wenn man z.b eine funktion hat die alle 50ms was rausschicken muss damit die externe HW funktioniert.
gibts dazu lösungen? muss zugeben das ich noch VEE 7.5 benutze :oops:
Wenn die Maus "gedrueckt gehalten " wird, stoppt Vee den Programablauf.
Ist nun mal so...
Ab Vee9 ist Vee Multitasking und Multithreading faehig.
Da sollte man unabhaengig von dem MAusstop sein...muss ich mal checken...
Hallo Detlef,

wir war das Ergebnis dieses Tests? Ist die Ausführung von VEE- Programmteilen ab Version 9.x unabhängig von gedrückten Buttons und geöffneten ListBoxen, etc.?

Gruß,
Tommi.
Es ist leider noch immer so, dass der Programmflow stehen bleibt, wenn man die linke Maus gedrueckt haelt.

Man sollte also die Buttons und Listboxen so anordnen, dass man nicht dauernd mit der Maus UND gedrueckter linker Taste draufhaelt.

Dies ist in der Developer Umgebung so, weil man mit der gedrueckten linken Maus das Panel bewegt. Vielleicht sollte man dies in einer anderen Version mal aendern. Allerdings hatte ich bisher nie Probleme damit, weil ich nie die linke Maus dauernd gedrueckt halte....in Vee Programmen zumindest- da klickt man nur....
Ich habe das Problem auch noch immer. Finde es zum Teil sehr störend.
In meinem Programmen werden z.B Daten angezeigt bzw. die Ergebnisse einer Sequencer-Dauerlaufes. Angezeigt werden sie mittels "logging alphanumeric".
Wenn genügend Daten bzw. Zeilen angezeigt wurden, erscheint rechts eine "Scrollbar" mit der man die älteren nicht mehr sichtbaren Daten auch anschauen kann.
Und da kommt man nicht vorbei die linke Maustaste gedrückt zu halten :-)
Wärend dieser Zeit stoppt mein Programm und kann unter Umständen Fehler verursachen, da ich gewisse Teile im Intervall durchführen muss. Was ich schon aufgegeben habe ist z.B wirklich Zeitkritische Sachen mit VEE zu realisieren. Z.b über einen CAN-Bus einen Controller anzusteuern. Dieser Benötigt alle 50ms eine Nachricht, sonst schaltet sich der Controller ab.
Im Prinzip kein Problem und aufs Erste realisierbar. Aber sobald man z.B mehrere Buttons etc. einbaut kann es leicht vorkommen das die 50ms überschritten.
Bei einem Dauerlauf können die 50ms z.B über einen GPIB Lesebefehl überschritten werden.
Denn auch da stoppt anscheinend das Programm.
In so einem Fall von zeitkritischen Anwendungen wuerde ich die Auswertung / Anzeige auf jeden Fall von der Einlesefunktion trennen.
Entweder 2 Vee Programme, oder , wenn Vee9.21, 2 Threads und den Scrollbalken weglassen (In den Prefs). Ansonsten stoppt das Mausdruecken auch beide Threads - kann man in dem Threadbeispiel leicht ausprobieren....
Da sind 2 Vee Programme dann wohl sinniger, wenn man unbedingt scrollen will....

Oder aber man benutzt das Scrollen mit Dotnet- da muesste ich mal checken, ob Vee auch dort §freezed§.
Ich habe das Problem in einigen meiner Anwendungen dadurch gelöst, dass ich einfach mehrere VEE-Programme parallel ablaufen lasse. Ich habe dann ein Hauptprogramm erstellt, in dem sich alle Bedienelemente befinden. Zeitkritische Funktionen habe ich in eine oder mehrere VEE-Programme ausgelagert, die parallel zum "Hauptprogramm" in Windows gestartet werden. DIe Programme kommunizieren dann via IPC miteinander, also via Socket-Communication. Das ist relativ einfach und arbeitet absolut zuverlässig. Wichtig ist dabei natürlich, dass in die zeitkritischen Funktionen keine Bedienelemente eingebaut sind bzw. dass diese nicht benutzt werden.
Genau. Perfekt !

Stell doch mal ein Beispiel hier rein .
Dotnet würde denke ich klappen.
Das "logging alphanumeric" habe ich in eine Funktion gepackt. Das Fenster selber ist dann im Panel ersichtlich. Wenn ich dann was ausgeben will kann ich das dann über diese Funktion machen: logWindow("Hello World");
Gefährlich finde ich auch wenn man im Programm mehrere Panels laufen lässt.
Will man nämlich die Panels verschieben, natürlich durch festhalten der linken Maustaste, wird das Programm auch gestoppt. Man kann aber bei solchen Panels das bewegen "deaktivieren"
Mit ShowPanel("logwindow"); kann z.B das Panel sichtbar gemacht werden und unter den Einstellungen das Bewegen deaktivieren.

Wie sollte das genau funktionieren mit den beiden Programmen?
Wie tauschen die beiden Werte oder Variablen aus?
(31.01.2011 21:25)detlef schrieb: [ -> ]Genau. Perfekt !

Stell doch mal ein Beispiel hier rein .

Ja, mach ich in Kürze!
Hallo Tommi,

habe deinen Thread wärend ich meine Nachricht geschrieben habe nicht lesen können.
Also die Kommunikation zwischen den Programmen läuft über IPC.
Startest du die einzelnen Programme auch über das Hauptprogramm?
Ein Beispiel würde mich brennend Interessieren :-)

Gruß
Max
(31.01.2011 21:26)maxheadroom schrieb: [ -> ].... Wie sollte das genau funktionieren mit den beiden Programmen?
Wie tauschen die beiden Werte oder Variablen aus?

Der Austausch von Variablen, arrays, Messwerten oder auch Kommandos funktioniert eben über socket Kommunikation.
Hallo Max,

das Starten der "Slave"-Programme vom Hauptprogramm aus habe ich auch schon mal gemacht, ist aber schon eine Weile her. In den aktuellen Anwendungen starten die Anwender die Programme einfach nacheinander, die wissen, was sie tun müssen, weil die Programme, die zusammen gehören, in einem Unterverzeichnis gespeichert sind.

Ein Beispiel kommt in Kürze.
Hallo Tommi,

ich habe mir das ein wenig angeschaut und habe noch keinen Durchblick.
Freu mich schon auf dein Beispiel.

Gruß
Max
Hier mal nur ein moegliches Beispiel:
Vee ruft ein anderes VEE Programm auf ( hier lib.vee), setzt da eine Eingabe rein und erhaelt eine Antwort.
Und hier mal einiges zu Socket und fernsteuern...
Hallo detlef,
täusche ich mich, oder ist dein Beispiel zum Fernsteuern ein Beispiel für Access??
Oder hab ich was übersehenHuh
gruß
loki
Seiten: 1 2
Referenz-URLs