Editbox , get , callback?
matlabstudent
Forum-Newbie
Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
Verfasst am : 21.03.2010, 20:41
Titel : Editbox , get , callback?
Guten Abend,
ich bin momentan dabei eine GUI für eine Robotersimulation zu programmieren. Leider funktioniert es mit der get() Funktion nicht so wie ich es will und ich habe keine Ahnung an was es liegt.
Die Stelle , an der es nicht Funktioniert ist ganz unten im Code bei function simulate. Mit get() wollte ich den Text aus der editbox Eingabe_1 bekommen. warndlg; in der zeile danach habe ich nur dazugeschrieben um zu testen ob der code bis an diese stelle ausgeführt wird, wird er aber nicht, bleibt immer beim get hängen.
Vielen Dank
für eure Hilfe
Code:
function roboterarm
loaddata % Lade 3D Modell eines Roboterarms
InitHome % Initialisierung der GUI und der Anfangsposition des Industrieroboters
% Erzeuge Menue - "Buttons" [left bottom width height]
demo = uicontrol ( fig_1,'String ','Demo ','callback ',@random ,...
'Position ',[ 50 100 120 30 ] ) ;
anfang = uicontrol ( fig_1,'String ','Home ','callback ',@home ,...
'Position ',[ 50 50 120 30 ] ) ;
dateneingabe = uicontrol ( fig_1, 'String ', 'Dateneingabe ', 'callback ', @input ,...
'Position ',[ 50 150 120 30 ] ) ;
%%
function home ( h,dummy)
roboterSimulation( 90 ,-90 ,-90 ,0 ,0 ,0 ,20 ) % gehe zurueck zur Anfangsposition
setappdata ( 0 ,'ThetaOld ',[ 90 ,-90 ,-90 ,0 ,0 ,0 ] ) ; %ThetaOld sind die aktuellen Positionswerte
end
%
%
function random ( h, dummy)
% Zufallsbewegung
t1_home = 90 ; %Anfangspositionen
t2_home = -90 ;
t3_home = -90 ;
theta1 = -160 + 320 *rand ( 1 ) ;
theta2 = -110 + 220 *rand ( 1 ) ;
theta3 = -135 + 270 *rand ( 1 ) ;
theta4 = -266 + 532 *rand ( 1 ) ;
theta5 = -100 + 200 *rand ( 1 ) ;
theta6 = -266 + 532 *rand ( 1 ) ;
n = 50 ;
roboterSimulation( theta1+t1_home,theta2+t2_home,theta3+t3_home,theta4,theta5,theta6,n)
end
%%
function input ( h,dummy)
feld = figure ( 'units ','pixels ',...
'position ',[ 30 400 350 400 ] ,...
'menubar ','none ',...
'name ','Eingabe Bewegungswinkeln ',...
'numbertitle ','off ',...
'resize ','on ') ;
eingabe_1 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 360 50 20 ] ,...
'String ', 90 ) ;
text_1 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 360 270 20 ] ,...
'string ','Theta1 ( Hueftgelenk) [ -160 bis 160 ] ',...
'fontsize ',11 ) ;
eingabe_2 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 320 50 20 ] ,...
'String ', -90 ) ;
text_2 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 320 270 20 ] ,...
'String ','Theta2 ( Schultergelenk) [ -110 bis 110 ] ',...
'fontsize ',11 ) ;
eingabe_3 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 280 50 20 ] ,...
'String ', -90 ) ;
text_3 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 280 270 20 ] ,...
'String ','Theta3 ( Ellbogen) [ -135 bis 135 ] ',...
'fontsize ',11 ) ;
eingabe_4 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 240 50 20 ] ,...
'String ', 0 ) ;
text_4 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 240 270 20 ] ,...
'string ','Theta4 ( Handgelenk) [ -266 bis 266 ] ',...
'fontsize ',11 ) ;
eingabe_5 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 200 50 20 ] ,...
'String ', 0 ) ;
text_5 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 200 270 20 ] ,...
'String ','Theta5 ( Handgelenk) [ -100 bis 100 ] ',...
'fontsize ',11 ) ;
eingabe_6 = uicontrol ( feld,'style ','edit ',...
'unit ','pix ',...
'position ',[ 10 160 50 20 ] ,...
'string ', 0 ) ;
text_6 = uicontrol ( feld,'style ','text ',...
'unit ','pix ',...
'position ',[ 70 160 270 20 ] ,...
'String ','Theta6 ( Handgelenk) [ -266 bis 266 ] ',...
'fontsize ',11 ) ;
sim = uicontrol ( feld,'style ','push ',...
'unit ','pix ',...
'position ',[ 60 80 200 40 ] ,...
'String ','Simulation ',...
'callback ',@simulate) ;
end
%%
function simulate( h,dummy)
t1 = get ( eingabe_1,'string ') ; %funktioniert nicht
warndlg ;
roboterSimulation( t1,0 ,0 ,0 ,0 ,0 ,50 ) ;
end
%%
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am : 21.03.2010, 21:19
Titel :
ist eingabe_1 das handle zu dem feld? es müsste wohl eher so was sein wie handles.eingabe_1 versuch das mal
matlabstudent
Themenstarter
Forum-Newbie
Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
Verfasst am : 21.03.2010, 23:09
Titel :
geht leider nicht:
Error in ==> roboterarm>simulate at 112
t1 = get(handles.eingabe_1,'value');
??? Error while evaluating uicontrol Callback
das es nicht das richtige handle ist glaube ich aber auch, wie finde ich den raus welches das richtige handle ist?
MatLabNooB
Forum-Guru
Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
Verfasst am : 22.03.2010, 01:03
Titel :
du solltest erstmal ein handle Structure baun, in deinem Fall ist das dann h, was an die Funktionen übergeben wird, also müsstest du:
und dann über
vielleicht kommste damit weiter...
rolewinski
Forum-Anfänger
Beiträge: 20
Anmeldedatum: 10.02.10
Wohnort: Ingolstadt
Version: R2009b
Verfasst am : 22.03.2010, 09:19
Titel :
Hallo
du kannst deinen uicontrols auch Tags mitgeben und dann über das Tag abfragen mit findobj()
matlabstudent
Themenstarter
Forum-Newbie
Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
Verfasst am : 22.03.2010, 10:45
Titel :
Vielen Dank, das mit den Tags funktioniert sehr gut
In Handles werd ich mich erst noch etwas einarbeiten müssen.
Mein Problem ist gut gelöst mit tags und findobj.
Christian
Forum-Anfänger
Beiträge: 37
Anmeldedatum: 25.03.08
Wohnort: Dortmund
Version: 2008a
Verfasst am : 25.03.2010, 15:31
Titel :
deine
muss als nested function in die
gepackt werden, und nicht auf die selbe Ebene. Dann sollte "Eingabe_1" auch für die "simulate" erreichbar sein.
matlabstudent
Themenstarter
Forum-Newbie
Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
Verfasst am : 27.03.2010, 12:37
Titel :
ok danke funktioniert
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
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.