Verfasst am: 26.11.2007, 09:53
Titel: Slider Callback, Simulation mit Handeingabn
Hi
ich hab eine konkrete Frage zum Slider.
Folgende Aufgabe:
Wie man sieht, die MountainCart-Simulation. Ich bräuchte für die Generierung von Handeingaben nun eine instant Reaktion auf das Bewegen des Force-Sliders rechts unten. (Damit läßt sich die Kraft einstellen mit der ich das Object anschiebe.)
Dies funktioniert auch schon soweit, mit dem kleinen Malus, dass die Parameter erst beim Loslassen der Mousetaste übernommen werden. Das ist natürlich etwas ungünstig für die Handsteuerung, da sich das Object nur mit Schaukelbewegungen auf den Hügel bringen läßt/lassen soll.
Start der Simulation ist durch den linken ToggleBTN:
Code:
function toggleBTN_Callback(hObject, eventdata, handles) global stopit;
global mLandscape;
global action;
Änderung der Kraft erfolgt durch die Slider-Callback:
Code:
function forceSlider_Callback(hObject, eventdata, handles) global action;
guidata(hObject, handles);
force = get(hObject,'Value');
if force < -25
force = -50;
elseif force > 25
force = 50;
else
force = 0;
end
action = force;
set(handles.forceEdit,'String',force);
guidata(hObject, handles);
Ich denke ausgehend von dem Beispiel sollte es kein Problem sein es umzusetzen. Frag nicht nach dem "handle.listener" - dies ist ein undokumentierter Befehl. Funktioniert nur(!), wenn Java aktiv ist
MfG
bukkelfipps
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.11.2007, 11:29
Titel:
Wenn ich es auf der Konsole ausführe gehts.
Leider wills nicht in einem mit GUIDE erstelltem GUI laufen. Weder mit einem in der figure definierten Slider, noch mit einem zur Laufzeit gezeichneten.
bukkelfipps
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.11.2007, 09:28
Titel:
Habs hinbekommen, aber nicht nicht mit deiner Methode.
Wenn ich mit handle.listener(handle(handles.forceSlider),'ActionEvent',{@forceSlider_Callback, handles}); das Event hinzufüge, gibts zwar keine Fehlermeldung, aber es passiert auch nix.
Zum Glück gabs jemanden der sich die Mühe gemacht hat die zugrundeliegenden Java-Objekte und Methoden zu identifizieren.
findjobj() ist hierfür unter http://www.mathworks.com/matlabcent.....oadFile.do?objectId=14317 zu finden.
Weiterhin sollte man beachten das das übergebene hObject in der Callback nun eine Java-ScrollBar ist. Damit ändern sich die Eigenschafts-Bezeichner (zB: get(hObject,'maximum') anstatt get(hObject,'Max')). Dies lässt sich aber mit dem Überschreiben des hObject mit dem richtigen Handle aus handles fixen.
Zur Identifizierung der Objekte kann man mittels findjobj(ObjectHandle) den kompletten Baum der Properties samt gültiger Methoden anzeigen lassen.
Weiterhin gilt zu beachten dass sich die Java-Elemente erst nach der Erzeugung des Objects ansprechen lassen und nicht während der CreateFcn's!!
Einstellungen und Berechtigungen
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
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.