WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Slider Callback function unterbrechen/regulieren

 

f_gast
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2016, 00:34     Titel: Slider Callback function unterbrechen/regulieren
  Antworten mit Zitat      
Hallo Zusammen,

vorweg ein frohes neues Jahr.
Ich habe ein (kleines) Problem mit meinem GUI, und zwar; Ich benutze ein Slider um einen Roboterarm anzusteuern, was auch soweit klappt. Es sind zwei Sachen, die ich noch machen möchte:

1) Kann man beim Slider die Geschwindigkeit des Callbackasufrufs regulieren, denn z.Z. wenn ich denn Slider los lasse, führt er noch die übrigen Callbacksaufrufe aus.
Ich hoffe es ist verständlich, was ich damit meine. Der Roboterarm bewegt sich mit einer Geschwindigkeit von ca. 1cm/s. Ich will, dass die Funktion auch z.B. nur einmal pro Sekunde aufgerufen werden, damit es synchron läuft. Wenn ich den Slider 4 sekundenlang drücke, sollen letztendlich auch 4 Aufrufs durchgeführt werden und nicht mehr.

2) Kann man vlt. den Clb-Aufruf komplett unterbrechen. Es geht darum, dass durch Geschichte beim ersten Punkt mal kritische Situationen Vorkommen. Daher soll das Programm einfach gestopt werden.

Ich bedanke mir im Voraus für eure Hilfe.

LG, G.F.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.01.2016, 15:21     Titel: Re: Slider Callback function unterbrechen/regulieren
  Antworten mit Zitat      
Hallo f_gast,

Dir auch ein gesundes und erfolgreiches Jahr!

Man kann bei einem Callback festlegen, was geschehen soll, wenn er während der Ausführung nochmals aufgerufen wird. Siehe die Eigenschaften "BusyAction" und "Interruptible" des Sliders.
Wenn der Code nur miot einer bestimmten Frequenz ausgeführt werden soll, müsste man das in den Code einfügen. Z.B. indem man die letzte Ausführungszeit in einer persistent Variable speichert und alle Aufrufe per return Abbricht, die zu früh kommen.

Zitat:
2) Kann man vlt. den Clb-Aufruf komplett unterbrechen. Es geht darum, dass durch Geschichte beim ersten Punkt mal kritische Situationen Vorkommen. Daher soll das Programm einfach gestopt werden.

Das verstehe ich nicht. Soll der Callback-Code abgebrochen werdebn, oder die Bewegung des Roboter-Arms? Was soll genau im Code abgebrochen werden? Was ist "der erste Punkt"? Würde Ctrl-C helfen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
f_gast
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2016, 22:13     Titel:
  Antworten mit Zitat      
Hallo Jan S,

Danke für die schnelle Antwort.
Das mit dem BusyAction habe ich schon bereits auf "cancle". Das funktioniert auch soweit. Das heißt es werden nur die letzten Aufrufe ausgeführt und nicht alle sequentiell abgearbeitet. Ich hatte das mal mit einem Timer-Interrupt versucht, dass der clb-Funktion pro Sekunde einmal aufgerufen wird nur es hat nicht wirklich funktioniert.
Das Problem bei Slider ist irgendwie, dass wenn man ihn gedrückt hält, ändert sich da Value permanent, selbst wenn die clb-Funktion Interrupt-gesteuert ist. Ich möchte, dass das Value auch nur jede S sich um 1 ändert.

Nochmal zum zweiten Punkt:
In dem clb-Funktione rufe ich die Funktion auf, womit ich die Roboterarme steuere. Aufgrund dessen, dass der clb-Aufruf und Slider-Value noch nicht wirklich von mir kontrolliert werden können (wie oben beschrieben), fährt der Roboter solange bis der aktuelle Wert im Value erreicht ist. Um die Bewegung des Roboterarmes außer kraft setzen zu können, muss ich das Programm unterbrechen.

Ich denke wenn das erste Problem in Abschnitt 1 sich beheben lässt, kann ich das Programm und die Bewegung von Roboterachsen synchronisieren.

Ist das Möglich?
Private Nachricht senden Benutzer-Profile anzeigen
 
f_gast
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2016, 00:00     Titel:
  Antworten mit Zitat      
Ich habs glaube ich.

Ich muss mein SliderStep anpassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.