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

Probleme bei der GUI

 

Chiefhood
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2011, 16:17     Titel: Probleme bei der GUI
  Antworten mit Zitat      
Hallo,
habe schon viel Hilfe hier bekommen...dafür bin ich echt dankbar!
Nun bin ich auch ein weiteres Problem gestoßen...trotz Tutorial und 2 Bücher.

Ich bekomme folgende Fehlermeldung:

Attempt to reference field of non-structure array.

Error in mlpa02_gui>pushbutton2_Callback (line 249)
l1num=str2double(get(handles.laenge1,'String'));

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in mlpa02_gui (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)mlpa02_gui('pushbutton2_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback



Hier der m-Code der GUI:

Code:
function varargout = mlpa02_gui(varargin)
% MLPA02_GUI MATLAB code for mlpa02_gui.fig
%      MLPA02_GUI, by itself, creates a new MLPA02_GUI or raises the existing
%      singleton*.
%
%      H = MLPA02_GUI returns the handle to a new MLPA02_GUI or the handle to
%      the existing singleton*.
%
%      MLPA02_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in MLPA02_GUI.M with the given input arguments.
%
%      MLPA02_GUI('Property','Value',...) creates a new MLPA02_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before mlpa02_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to mlpa02_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help mlpa02_gui

% Last Modified by GUIDE v2.5 06-Dec-2011 13:38:27

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @mlpa02_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @mlpa02_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before mlpa02_gui is made visible.
function mlpa02_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to mlpa02_gui (see VARARGIN)

% Choose default command line output for mlpa02_gui
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes mlpa02_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = mlpa02_gui_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



function laenge1_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','1')
end
guidata(hObject, handles);
% hObject    handle to laenge1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of laenge1 as text
%        str2double(get(hObject,'String')) returns contents of laenge1 as a double


% --- Executes during object creation, after setting all properties.
function laenge1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to laenge1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function laenge2_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','1')
end
guidata(hObject, handles);
% hObject    handle to laenge2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of laenge2 as text
%        str2double(get(hObject,'String')) returns contents of laenge2 as a double


% --- Executes during object creation, after setting all properties.
function laenge2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to laenge2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function laenge3_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','1')
end
guidata(hObject, handles);
% hObject    handle to laenge3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of laenge3 as text
%        str2double(get(hObject,'String')) returns contents of laenge3 as a double


% --- Executes during object creation, after setting all properties.
function laenge3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to laenge3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function phi1_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','0')
end
guidata(hObject, handles);
% hObject    handle to phi1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of phi1 as text
%        str2double(get(hObject,'String')) returns contents of phi1 as a double


% --- Executes during object creation, after setting all properties.
function phi1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to phi1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function phi2_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','0')
end
guidata(hObject, handles);
% hObject    handle to phi2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of phi2 as text
%        str2double(get(hObject,'String')) returns contents of phi2 as a double


% --- Executes during object creation, after setting all properties.
function phi2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to phi2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function phi3_Callback(hObject, eventdata, handles)
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','0')
end
guidata(hObject, handles);
% hObject    handle to phi3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of phi3 as text
%        str2double(get(hObject,'String')) returns contents of phi3 as a double


% --- Executes during object creation, after setting all properties.
function phi3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to phi3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
%Zuordnen der Eingabewerte-------------------------------------------------
%Umwandlung der Werte in double

l1num=str2double(get(handles.laenge1,'String'));
l2num=str2double(get(handles.laenge2,'String'));
l3num=str2double(get(handles.laenge3,'String'));
phi1num=str2double(get(handles.phi1,'String'));
phi2num=str2double(get(handles.phi2,'String'));
phi3num=str2double(get(handles.phi3,'String'));

%Funktionsaufruf um Punkte des Roboters zu erhalten------------------------
[A1,A2,A3,P]=mlpa02_math(phi1num,phi2num,phi3num,l1num,l2num,l3num);

%Umwandlung der Punkt Koordinaten in String--------------------------------
pxnum=num2str(P(1,1));
pynum=num2str(P(2,1));
pznum=num2str(P(3,1));

%Ausgabe in die Stringfelder-----------------------------------------------
set(handles.px,'String',pxnum);
set(handles.py,'String',pynum);
set(handles.pz,'String',pznum);
 
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.12.2011, 16:25     Titel:
  Antworten mit Zitat      
Hallo

Es klingt so als ob deine handles-Variable in pushbutton2_Callback leer ist.
Prüfe das.
Private Nachricht senden Benutzer-Profile anzeigen
 
Chiefhood
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2011, 16:47     Titel:
  Antworten mit Zitat      
Hallo,
Danke für den Tipp!
Aber wie kann ein Button keinen Wert haben?
Bzw. wo finde ich das? Ich kann diesen ja nur drücken...

DANKE SCHON MAL!!!Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.12.2011, 17:31     Titel:
  Antworten mit Zitat      
Setze doch ein Breakpoint, in die Zeile 249
Auf Button drücken, und Programm hält dann automatisch an der Stelle des Breakpoint an.
Du kannst dann im Command, deine Werte Aufrufen....


zu Debugger Lese hier weiter:
http://www.inf.ethz.ch/personal/arbenz/MatlabKurs/node66.html

oder Video hier:
http://www.youtube.com/watch?v=9iTj--Q6ZRE
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: 06.12.2011, 18:24     Titel: Re: Probleme bei der GUI
  Antworten mit Zitat      
Hallo Chiefhood,

Du hast eine große Menge Code gepostet. Welches ist denn die Zeile 249, die die Fehlermeldung erzuegt?
Ich vermute, dass Du das Input-Argument "handles" noch nicht definiert hast, während die CreateFcn des Buttons läuft.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2011, 20:11     Titel:
  Antworten mit Zitat      
Hey,
ja das stimmt...bissi unübersichtlich;)

Das ist Zeile 249:
Code:
l1num=str2double(get(handles.laenge1,'String'));
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 07.12.2011, 15:33     Titel:
  Antworten mit Zitat      
steht denn in deinen edit text feldern(laenge1, laenge2, ...) überhaupt etwas drinnen??
Denk ich nicht.
Auch deine Abfrage
Code:
input=str2double(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','1')
end
 
ist denk ich sinnlos da diese ja nur wirksam wird, wenn du das entsprechende Callbach auch tatsächlich aufrufst!
Private Nachricht senden Benutzer-Profile anzeigen
 
Chiefhood
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2011, 09:59     Titel:
  Antworten mit Zitat      
Hallo,
danke!!!
Jetzt funktionierst;)
habe lediglich das Problem wenn ich in ein Eingabefeld nichts eintrage...
wie kann ich das am besten machen?
Mit isempty?

also
Code:

if isempty(l1num|l2num|l3num|phi1num|phi2num|phi3num)
errordlg('Bitte ALLE Daten eingeben!!!')
return
end
 

Und das in der Callback des pushbutton2 ?Wink

Danke Ihr seit echt ne herb gute Hilfe;)
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.