INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Slide-Werte abfragen, wenn Wert geändert wurde



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!

01.09.2008, 10:24
Beitrag #1

Marcus A
Unregistered


 







Slide-Werte abfragen, wenn Wert geändert wurde
Hallo liebe LabVIEW-Gemeinde!

Ich habe ein Problem. Ich möchte mit LabVIEW einen Motor ansteuern. Soweit kein Problem. Der Moter erhält einen ASCII Befehl ("mrX", wobei X die anzahl der "Ticks" ist, um die der Motor fahren soll). Wenn der Motor desen Befehl erhalten hat, dann fängt er an sich zu bewegen. Ich möchte nun aber den Motor mittes eines Sliders steuern. Das Programm bleibt in einer While-Schleife während der Benutzer mittes Slider die Position des Motors einstellen kann. Das VI, welches den Befehl zum Bewegen des Motors ausgibt, sitzt in einer Event-Schleife und wird gestartet, sobald die Maustaste über dem Steuerslider losgelassen wird. Dann wird der Slider gesperrt, solange der Motor sich bewegt.

Nun ergibt sich aber ein Problem. Wenn der Benutzer nachässig ist, dann "greift" er den Schieber mit der Maus und bewegt ihn, kann aber dann die Maus außerhalb des Slider-Bereichs loslassen. Damit greift meine Case-Struktur aber nicht mehr und dass will ich vermeiden. Frage: Gibt es eine Möglichkeit das VI "Motorbewegen" immer dann auszulösen, wenn den Wert des Sliders geändert WURDE?

Alternativ könnte ich den Slider dynamisch abfragen, immer nur wenn der Benutzer einen neuen Wert eingestellt hat. Da habe ich aber auch keine Idee, wie ich das umsätzen könnte!

Um Mein Problem zu verdeutlichen habe ich mal ein kleines Demo-VI geschrieben. Slide2 soll immer dann aktualisiert werden, wenn der Benutzer den Wert von Slide geändert hat. Aber es soll sich nicht dadurch umgehen lassen, dass der Anwender die Maus außerhalb von Slide losläßt. Viellicht habt ihr mehr Ideen als ich. Danke im Vorraus!

Ach ja: Das Ist LabVIEW 8.2 ne andere Version habe ich leider nicht!

EDIT: Oh, je! Aus irgend einem unerfindlichen Grund ist mein Beitrag 2 mal im Forum gelandet! Tut mir leid! Bitte liebe Moderatoren, löscht einen! Nochmals Sorry!


Angehängte Datei(en)
Sonstige .vi  Demo_Slider.vi (Größe: 12,71 KB / Downloads: 229)
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 10:33
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
' schrieb:EDIT: Oh, je! Aus irgend einem unerfindlichen Grund ist mein Beitrag 2 mal im Forum gelandet! Tut mir leid! Bitte liebe Moderatoren, löscht einen! Nochmals Sorry!
Kein großes Problem, kann passieren. Erledigt...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 10:52 (Dieser Beitrag wurde zuletzt bearbeitet: 01.09.2008 10:54 von MikeS81.)
Beitrag #3

MikeS81 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 231
Registriert seit: Aug 2008

8.5
2005
de_en

81xxx
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
Hallo Marcus A,
verschiebe das Slide Control in die Eventstruktur in das entsprechende Event. Das Event wird auch nur bei einer Wertänderung ausgelöst. Wozu benötigst Du das Timeout?

Mike
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:04
Beitrag #4

Marcus A
Unregistered


 







Slide-Werte abfragen, wenn Wert geändert wurde
' schrieb:Hallo Marcus A,
verschiebe das Slide Control in die Eventstruktur in das entsprechende Event. Das Event wird auch nur bei einer Wertänderung ausgelöst. Wozu benötigst Du das Timeout?

Mike
Time out dient dazu, dass auch die anderen Elemente auf den Frontpanel bearbeitet werden. Wenn du das wegläßt, dann wird z.b. der "Stop"-Knopf nicht abgefragt. Aber wenn ich das auch anders machen kann, dann sag es mir ;-)

Slide Control in die Eventstruktur? Habe ich ausprobiert, aber es ergibt sich das sebe Problem: Wenn die Maustaste außerhalb der Control losgelassen wird, dann wird das Event nicht ausgelößt. Oder muss ich ein anderes Event definieren?!?

Nochmal das veränderte VI (immernoch vers 8.2)


Angehängte Datei(en)
Sonstige .vi  Demo_Slider2.vi (Größe: 12,53 KB / Downloads: 229)
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:14
Beitrag #5

MikeS81 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 231
Registriert seit: Aug 2008

8.5
2005
de_en

81xxx
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
Hallo Marcus A,
ändere das Timeout Event in ein "stop value change event". Platziere deinen Stop Knopf in diesem Event und verbinde das Control mit der Schleifenabbruchbedinung. Zu deinem Slider: Du kannst auch hier ein Value Change Event benutzen. Das würde das Event bei jeder Veränderung auslösen. Wenn dir das nicht gefällt, dann erzeuge ein zusätzlichen Event "Slide Control verlassen" in dem du auch den Wert des 2. Sliders änderst. Am besten du benutzt dann ein Shiftregister in dem du den aktuellen Wert speicherst und ihn nach der Eventstruktur in des Anzeigeelement schreibst.

Mike
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:24
Beitrag #6

Marcus A
Unregistered


 







Slide-Werte abfragen, wenn Wert geändert wurde
Gut zu den Timeout: In diesem Fall würde das funktionieren. Aber mein richtiges VI ist etwas umfangreicher... daher lasse ich das wohl so :-)

Das Problem mit "ValueCange" ist, dass das Case bei JEDER änderung ausgeführt wird. Wenn der Benutzer den Regler schiebt, dann wird wird praktisch die anzeige mitgeschoben. Das würde aber meinen Motor in der Realität zur Verzewiflung treiben ... Daher darf das Case erst ausgeführt werden, wenn er User den Knopf Losläßt.

Zu Slide Contol verlassen: Wenn ich dich richtig verstanden habe soll ich Mouse leave verweden. Dann wird das aber auch ausgelöst, wenn der benutzer gar nichts an dem Regler verändert hat... -> Auch doof! Oder habe ich dich missverstanden? Kannst du mal nen Beispiel posten?
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.09.2008, 11:32
Beitrag #7

MikeS81 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 231
Registriert seit: Aug 2008

8.5
2005
de_en

81xxx
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
' schrieb:...
Zu Slide Contol verlassen: Wenn ich dich richtig verstanden habe soll ich Mouse leave verweden. Dann wird das aber auch ausgelöst, wenn der benutzer gar nichts an dem Regler verändert hat... -> Auch doof! Oder habe ich dich missverstanden? Kannst du mal nen Beispiel posten?

Ja das stimmt, aber da können ja dann entsprechende Mechanismen eingefügt werden. Außerdem empfehle ich dir, wenn du eine Eventstruktur verwendest diese auch konsequent zu nutzen (für alle Controls die ein Event auslösen das du brauchst, auch der Stop Knopf Wink).

Wie wäre es wenn du mit dem Schieberegler die neue Position einstellst und mit einem Zusatzknopf den Wert dann tatsächlich an den Motor schickst. Die andere Idee ist aber auf jeden Fall auch möglich. Wink

Mike
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:40
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
Gegenfrage: Warum benutzt Du nicht als Ereignis einfach "Wertänderung" (des Sliders) statt "Maustaste losgelassen"?
So würde es normalerweise gemacht, und das Problem hättest Du nicht.
Ein mögliche Antwort könnte sein: : Bei Wertänderung finden während des slidens, also nicht erst wenn der Endwert erreicht ist, schon jede Menge Ereignisse statt. Es könnte sein, daß das in der geplanten Applikation stört.
Wenn das die Antwort ist, bitte noch mal melden, dann müßte etwas überlegt werden.
Ein einfache Lösung wäre mit einem "OK"-Button zum Übernehmen der Werte. Siehe Beispiel.

Lv82_img
Sonstige .vi  Demo_Slider_1_.vi (Größe: 16,61 KB / Downloads: 290)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:41
Beitrag #9

Marcus A
Unregistered


 







Slide-Werte abfragen, wenn Wert geändert wurde
Hm. Einstellen und dann "Los" sagen ist meine Notlösung. Aber das muss doch besser gehen!! Was meinst du denn mit "entsprechenden Mechanismen"?

Zu den Verwendungen der Case-Strukturen. Die benutze ich gerade zum ersten mal (merkt man vielleicht) In dem Alten LV, das ich vorher benutzt hatte gabs die noch nicht. Daher sind sie mir ein wenig unheimlich ;-) Immerhin kann man LV damit wunderbar "abstürzen" lassen indem man ein Event nicht, oder falsch, behandelt... Ein wenig erinnern die mich an "Spagetti-Code" Daher will ich die eigentlich nicht verwenden. Aber vielleicht sehe ich das ja auch falsch. Ich lass mich gerne belehren!
Diese Nachricht in einer Antwort zitieren to top
01.09.2008, 11:49
Beitrag #10

MikeS81 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 231
Registriert seit: Aug 2008

8.5
2005
de_en

81xxx
Deutschland
Slide-Werte abfragen, wenn Wert geändert wurde
Hallo Marcus A,
das einzige Problem das ich denke das du mit dem loslassen hast ist, dass wenn du den Bereich des Controls verläßt und die Maus trotzdem gedrückt hältst das der Wert dann nicht mehr übernommen wird, oder?

Ansonsten sehe ich bei der loslass Lösung keine Schwierigkeiten.

Mit entsprechenden Mechanismen meine ich, dass du abfragen kannst ob die Maus den Bereich betreten hat und erst dann auf das verlassen reagierst.

Ich empfehle die Events zu benutzen. Du brauchst Zustände nicht ständig abfragen um auf eine Wertänderung zu reagieren. Ich sehe da nur Vorteile.

Mike
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mittelwert wenn Werte in erster Spalte gleich marc_ampa 6 5.020 21.03.2022 08:38
Letzter Beitrag: marc_ampa
  Abfragen Werte in einem anderen VI handsch21 2 3.447 27.03.2018 10:31
Letzter Beitrag: handsch21
  Nur Werte in Array wenn Case True PreVIEW 10 10.580 10.02.2017 15:25
Letzter Beitrag: Dalle
  Wert an naheliegensten Wert aus Array anpassen TSC 17 11.517 26.07.2016 06:59
Letzter Beitrag: TSC
  Event struktur mit Slide gottfried 5 5.373 28.03.2015 10:43
Letzter Beitrag: BNT
  Dateiinhalt suchen und anzeigen wenn ein bestimmter Wert gleich ist uecontitech 7 6.435 24.03.2015 10:06
Letzter Beitrag: GerdW

Gehe zu: