Verfasst am: 04.07.2017, 14:31
Titel: Gründe für Fehlermeldung in GUI
Hallo liebe Matlab-Freunde,
ich arbeite Momentan an der Erstellung einer GUI, in der Diagramme geplottet und bestimmte Punkte in aus den Diagrammen abgelesen und gespeichert werden.
Nun war ich gestern fast fertig und wollte sie heute zu Ende machen, allerdings bekomme ich beim Anklicken sämtlicher Elemente (z.B. eines popup-Menüs) die Fehlermeldung
[ Undefined function or variable 'StartEndeV1'.
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)StartEndeV1('popupmenu1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback ]
wobei SartEndeV1 der Name der GUI ist. Ich habe nur zwei pushbuttons hinzugefügt und nichts an dem Code von gestern geändert. Die Matlab-Version ist 2015b.
Aus Datenschutzgründen darf ich leider nicht direkt den Code veröffentlichen, aber ich werde ihn heute oder morgen abändern und hier posten.
Es würde mir sehr weiterhelfen, wenn jemand eine Idee hätte, wo der Fehler liegt.
Vielen Dank
ein verwirrter Gast, der fast sein komplettes Matlab-Wissen diesem Forum zu verdanken hat
Ich lese Daten ein und benutze Funktionen, die nicht im selben Ordner wie die GUI liegen. Ist das keine gute Idee? Kann man das Problem beheben, in dem man alles in einen Ordner legt?
Ein Beispielcode sieht so aus:
Code:
functionvarargout = StartEnde(varargin) % STARTENDE MATLAB code for StartEnde.fig % STARTENDE, by itself, creates a new STARTENDE or raises the existing % singleton*.
%
% H = STARTENDE returns the handle to a new STARTENDE or the handle to % the existing singleton*.
%
% STARTENDE('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in STARTENDE.M with the given input arguments.
%
% STARTENDE('Property','Value',...) creates a new STARTENDE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before StartEnde_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to StartEnde_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 StartEnde
% Last Modified by GUIDE v2.5 05-Jul-2017 10:31:24
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @StartEnde_OpeningFcn, ...
'gui_OutputFcn', @StartEnde_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before StartEnde is made visible. function StartEnde_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 StartEnde (see VARARGIN)
% Choose default command line output for StartEnde
handles.output = hObject;
% UIWAIT makes StartEnde wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = StartEnde_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;
% --- Executes on selection change in TestsPopup. function TestsPopup_Callback(hObject, eventdata, handles) % hObject handle to TestsPopup (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns p2TestsPopup contents as cell array % contents{get(hObject,'Value')} returns selected item from p2TestsPopup
% --- Executes during object creation, after setting all properties. function TestsPopup_CreateFcn(hObject, eventdata, handles) % hObject handle to TestsPopup (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in AuswahlButton. function AuswahlButton_Callback(hObject, eventdata, handles) % hObject handle to AuswahlButton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
path_Datenbank='Desktop\Datenbank';
cd(path_Datenbank);
folder_name=uigetdir;
path_Daten=folder_name;
cd(path_Daten);
filename=uigetfile('.mat', 'Daten auswählen');
thisLager=filename(1:end-4);
thisStruct=open(filename);
anzahlTests=length(fields(thisStruct.(thisLager).rechner));
tests=fieldnames(thisStruct.(thisLager).rechner);
S.thisLager=thisLager;
S.filename=filename;
S.tests=tests;
S.thisStruct=thisStruct;
S.anzahlTests=anzahlTests;
set(handles.AuswahlButton, 'UserData', S);
set(handles.TestsPopup, 'String', tests);
% --- Executes during object creation, after setting all properties. function AuswahlButton_CreateFcn(hObject, eventdata, handles) % hObject handle to AuswahlButton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% --- Executes on button press in plotbutton. function plotbutton_Callback(hObject, eventdata, handles) % hObject handle to plotbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1);
cla;
%Struct-, Lager- und Testnamen definieren
thisDaten_button=get(handles.AuswahlButton, 'UserData');
thisLager=thisDaten_button.thisLager;
thisStruct=thisDaten_button.thisStruct;
thisDaten_popup=get(handles.TestsPopup, 'UserData'); %Ausgewählter Test wird in den nächsten Zeilen benötigt
thisTest=thisDaten_popup.thisTest;
%Pfad zur Toolbox
path(path,'Desktop\Toolbox')%hier liegt die Funktion toolbox_wellendrehzahl
% --- Executes during object creation, after setting all properties. function plotbutton_CreateFcn(hObject, eventdata, handles) % hObject handle to plotbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
Der Ausruck "StartEndeV1" kommt im geposteten Code nicht vor, aber "StartEnde". Hast Du das GUI umbenannt? Liegt das FIG-File im gleichen Ordner wie das M-File? Wie heißt das M-File? Ist diese Ordner im Matlab
path
eingefügt?
danke für die Antwort!
Das ist nur ein Beispielcode, bei dem die Fehlermeldung kommt, nicht die Ursprüngliche Datei, die StartEndeV1 heißt.
M-File und Fig-File liegen im selben Ordner und heißen beide StartEnde. Der Struct, der geladen wird, liegt in einem anderen Ordner.
An welcher Stelle soll der Matlab
path
eingefügt werden? Nachdem ich im "AuswahlButton" mit
uigetdir
und
cd
den Pfad geändert habe?
wenn du das Verzeichnis wechselst (
cd
), findet die GUI sich selbst nicht mehr. Du solltest die notwendigen Verzeichnisse mit
addpath
zum Suchpfad hinzufügen.
Es hat funktioniert, nachdem ich alles in einen Ordner gelegt habe. Ich werde es morgen auch mit dem
addpath
machen.
Vielen Dank für eure Hilfe!
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.