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

??? Error while evaluating uicontrol Callback.

 

tsnkl
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 14.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2008, 11:42     Titel: ??? Error while evaluating uicontrol Callback.
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


tsnkl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 14.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2008, 13:18     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 17.03.2008, 16:57     Titel:
  Antworten mit Zitat      
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

Code:
guidata(hObject, handles);


upgedatet werden, sonst sind die Änderungen für andere Routinen nicht sichtbar (also nur lokal im Callback).

Vielleicht hilft's!

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
tsnkl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 14.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2008, 11:23     Titel:
  Antworten mit Zitat      
Hallo tompie,

danke für deine Antwort, aber der Code:

Code:
guidata(hObject, handles);


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
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 - 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.