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

Editbox , get , callback?

 

matlabstudent
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2010, 20:41     Titel: Editbox , get , callback?
  Antworten mit Zitat      
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  
%%


 
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2010, 21:19     Titel:
  Antworten mit Zitat      
Code:
get(eingabe_1,'string'); %funktioniert nicht  

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

Forum-Newbie


Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2010, 23:09     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2010, 01:03     Titel:
  Antworten mit Zitat      
du solltest erstmal ein handle Structure baun, in deinem Fall ist das dann h, was an die Funktionen übergeben wird, also müsstest du:

Code:
h.eingabe_1 = uicontrol(feld,'style','edit',...
                            'unit','pix',...
                            'position',[10 360 50 20],...
                            'String', 90);

und dann über
Code:
t1 = str2double(get(h.eingabe_1,'String'));


vielleicht kommste damit weiter...
Private Nachricht senden Benutzer-Profile anzeigen
 
rolewinski
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 10.02.10
Wohnort: Ingolstadt
Version: R2009b
     Beitrag Verfasst am: 22.03.2010, 09:19     Titel:
  Antworten mit Zitat      
Hallo

du kannst deinen uicontrols auch Tags mitgeben und dann über das Tag abfragen mit findobj()

Code:

eingabe1 = uicontrol('tag','eingabe1',...

t1 = get(findobj('tag','eingabe1'),'string')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabstudent
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2010, 10:45     Titel:
  Antworten mit Zitat      
Vielen Dank, das mit den Tags funktioniert sehr gut Smile
In Handles werd ich mich erst noch etwas einarbeiten müssen.
Mein Problem ist gut gelöst mit tags und findobj.
Private Nachricht senden Benutzer-Profile anzeigen
 
Christian
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 25.03.08
Wohnort: Dortmund
Version: 2008a
     Beitrag Verfasst am: 25.03.2010, 15:31     Titel:
  Antworten mit Zitat      
deine
Code:
function simulate(h,dummy) ...end

muss als nested function in die
Code:

gepackt werden, und nicht auf die selbe Ebene. Dann sollte "Eingabe_1" auch für die "simulate" erreichbar sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabstudent
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 21.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2010, 12:37     Titel:
  Antworten mit Zitat      
ok danke funktioniert Smile
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.