|
|
??? Error while evaluating uicontrol Callback. |
|
tsnkl |
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 14.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.03.2008, 10:42
Titel: ??? Error while evaluating uicontrol Callback.
|
|
|
|
|
Hallo!!!
Ich bin gerade dabei mich in Matlab, hier speziell in die Gui's einzuarbeiten. Zur Zeit erstelle ich mit xPCTarget eine Steuerung für zwei E-Motoren und möchte mir auch eine vernünftige Bedienoberfläche basteln. Und da treten schon die ersten Probleme auf:
Zum Test habe ich mir ein kleines Gui erstellt, dass mir nur eine Verbindung zum Target herstellt und dieses dann in einem Textfeld ausgibt.
Aber Matlab gibt folgenden Fehler heraus:
??? Attempt to reference field of non-structure array.
Error in ==> test_verbindung>pushbutton1_Callback at 82
set(handles.edit1,'String','Status: Verbindung wird aufgebaut......');
Error in ==> gui_mainfcn at 75
feval(varargin{:});
Error in ==> test_verbindung at 42
gui_mainfcn(gui_State, varargin{:});
??? Error while evaluating uicontrol Callback.
Mein Test-Gui:
% --- Executes just before test_verbindung is made visible.
function test_verbindung_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 test_verbindung (see VARARGIN)
% Choose default command line output for test_verbindung
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes test_verbindung wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = test_verbindung_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 button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1,'String','Status: Verbindung wird aufgebaut......');
drawnow;
try
handles.tg = xpctarget.xpc('TcpIp','192.168.0.2','22222');
set(handles.edit1,'String','Status: Verbindung aufgebaut');
drawnow;
catch
set(handles.edit1,'String','Error: Verbindung konnte nicht aufgebaut werden......');
drawnow;
errordlg(lasterr);
end
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (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 edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (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
Zu erst dachte ich an eine falsche Deklaration des Textfeldes, doch dort ist alles i.O., leider habe ich ähnliche Fälle noch nicht gefunden.
Vielen Dank für Antworten schon mal im Voraus!!!
Grüße
thomas
|
|
|
|
|
tsnkl |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 14.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.03.2008, 12:18
Titel:
|
|
|
|
|
Habe das Problem leider nicht gefunden und daher mir per Hand ein Gui programmiert, also ohne Guide!
Aber nun taucht schon wieder ein Problem auf, nämlich dieses:
In der Funktion des ersten PushButtons erstellen ich mir eine Variable tg (für Target), jedoch erkennt Matlab in der Funktion des zweiten Pushbuttons nicht die Variable.
Daher meine Frage: Geht die Variable nach Beendigung der ersten Funktion verloren, wenn ja wie kann ich die Variable abspeichern und so für die zweite Funktion nutzen.
Zur Veranschaulichung der Quelltext:
function gui_test
figure('MenuBar','none','Name','Prüfstandssteuerung','NumberTitle','off','Position',[100,200,740,400]);
Connect = uicontrol('Style','pushbutton','String','Verbindungsaufbau','Position',[60,320,140,40], 'CallBack',@ConnectPressed);
Download = uicontrol('Style','pushbutton','String','Anwendung laden','Position',[220,320,140,40],'Enable','off','CallBack',@DownloadPressed);
Start = uicontrol('Style','pushbutton','String','Start','Position',[380,320,140,40],'Enable','off','Callback',@StartPressed);
Stop = uicontrol('Style','pushbutton','String','Stop','Position',[540,320,140,40],'Enable','off','Callback',@StopPressed);
Drehzahl = uicontrol('Style','edit','String','0','Position',[450,200,140,20]);%,'Callback',@DrehzahlCallBack);
Txt1 = uicontrol('Style','edit','String','Status:','Position',[380,60,300,30],'HorizontalAlignment','left');
Txt2 = uicontrol('Style','text','String','Drehzahleingabe','Position',[470,225,100,15]);
%%%Funktion wenn Connect-Button gedrückt wird%%%
function ConnectPressed(h, eventdata)
set(Txt1,'String','Verbindung wird aufgebaut......');
drawnow;
try
tg = xpctarget.xpc('TcpIp','192.168.0.2','22222');
if strcmp(targetping(tg),'success');
set (Txt1,'String','Verbindung aufgebaut');
set (Download,'Enable','on');
else
set(Txt1,'String','Verbindungsaufbau fehlgeschlagen......');
end
catch
set(Txt1,'String','Verbindungsaufbau fehlgeschlagen......');
drawnow;
end
end;
%%%Funktion wenn Download-Button gedrückt wird%%%
function DownloadPressed(h, eventdata, varargin);
set(Txt1,'String','Anwendung wird auf Target geladen......');
try
load(tg,'regler_einstellung_real')
set(Txt1,'String','Anwendung auf Target geladen');
set(Start,'Enable','on');
catch
set(Txt1,'String','Laden der Anwendung fehlgeschlagen');
end
end;
end
Ich hoffe Ihr könnt mir schnell weiterhelfen!
Thomas
|
|
|
tompie |
Forum-Guru
|
|
Beiträge: 260
|
|
|
|
Anmeldedatum: 19.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: immer alles
|
|
|
|
|
|
Verfasst am: 17.03.2008, 15:57
Titel:
|
|
Hallo,
ich weiß nicht, ob das weiterhilft, aber sobald Du in einer Callback-Routine etwas an der handles-Struktur änderst (das ist bei Dir der Fall), muß die handles-Struktur mit
upgedatet werden, sonst sind die Änderungen für andere Routinen nicht sichtbar (also nur lokal im Callback).
Vielleicht hilft's!
Gruß tompie
|
|
|
tsnkl |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 14.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.03.2008, 10:23
Titel:
|
|
Hallo tompie,
danke für deine Antwort, aber der Code:
hat keine Wirkung auf meine Funktionen.
Ich habe das Problem aber gefunden, die Variablen sind nur lokale Variablen und müssen zu Beginn als globale, also für alle Funktionen sichtbar, Variablen definiert werden.
thomas
|
|
|
|
|
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 - 2024
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.
|
|