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

Aufruf einer callback Funktion aus .m File

 

damator

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2010, 19:59     Titel: Aufruf einer callback Funktion aus .m File
  Antworten mit Zitat      
Hallo nochmal,
habe noch was, wo ich nicht wirklich hinbekomme. Mit den Matlab GUI's tu ich mich schon schwer... Vielleicht liegts an der Hitze...

und zwar möchte ich aus diesem einfachen .m File eine Callback Funktion der GUI "untitled" ausführen:

Code:
hand = guidata(untitled);
object = hand.pushbutton1;
eventdata = [];
pushbutton1_Callback(object, eventdata, hand);


Also den Klick auf den pushbutton1 damit simulieren. Hier der Code der untitled.m (mit GUIDE erstellt):



Code:
function varargout = untitled(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @untitled_OpeningFcn, ...
                   'gui_OutputFcn',  @untitled_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 untitled is made visible.
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)


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

% Update handles structure
guidata(hObject, handles);

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


% --- Outputs from this function are returned to the command line.
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);

% 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.pushbutton1, 'Enable', 'off');
set(handles.pushbutton2, 'Enable', 'on');

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.pushbutton1, 'Enable', 'on');
set(handles.pushbutton2, 'Enable', 'off');
 


Wenn ich das so versuche erhalte ich folgende Fehlermeldung:

??? Undefined function or method 'pushbutton1_Callback' for input arguments of type 'struct'.

Error in ==> Untitled1 at 4
pushbutton1_Callback(object, eventdata, hand);

Dabei ist das Argument handles doch auch wenn ich die Callback Funktion nach dem Klick auf den Pushbutton Debugge ein 1x1 struct... Vielleicht könnt ihr ja helfen.


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 10.06.2010, 20:15     Titel:
  Antworten mit Zitat      
Hallo,

Die CallBack Funktion wird ausgeführt sobald der Button aktiviert wird.
Bei GUIDE wird die CallBack Funktion definiert, dass sie innerhalb der untitled funktion erkannbar wird.

Du kannst aber die GUI per Hand programmieren mittels:

Code:


Gruß

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
damator

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2010, 20:37     Titel:
  Antworten mit Zitat      
ok vielen Dank, werd ich Morgen nochmal die komplette GUI neu machen dürfen. Nur toll, dass die Fehlermeldung so gut dazu passt.
 
damator

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 10:41     Titel:
  Antworten mit Zitat      
gibt es nicht auch noch eine andere Möglichkeit als die komplette GUI selbst zu programmieren. Kann man evt. einzelne callback Funktionen für den Zugriff freigeben?
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2010, 16:05     Titel: Lösung
  Antworten mit Zitat      
Eventuell kommt das ja ziemlich spät, aber vielleicht kann es jemand anderem helfen:

GUIDE ruft die Callback Funktionen über die Hauptfunktion (hier "untitled") auf, wobei der Callbackname als erster Parameter übergeben wird. Der Aufruf für das Callback "pushbutton1_Callback" sieht dann so aus:
Code:
untitled('pushbutton1_Callback', object, eventdata, handles)


Das ist der ganze Zauber. Man kann diesen Aufruf natürlich von überall aus machen. Der Code der das ermöglicht steht sogar schon in dem Post:

Zitat:
Code:
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end


Ich benutze das selbst sehr erfolgreich. Und noch ein Hinweis: Man muss hiermit natürlich nicht zwangsläufig ein GUIDE Callback aufrufen. Es kann jede Funktion mit allen möglichen Parameteren welche sich in dem m-File des GUI befindet aufgerufen werden.

Greets,
Martin.
 
chris4aus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2011, 03:10     Titel: weitere Frage
  Antworten mit Zitat      
Hallo!

Ich bin gerade dabei ein Gui zu entwerfen.
Ich ueberpruefe zuerst die eingegebenen Parameter - dazu hat ein uipanel die Ueberschrift: Parameter-Vergleich --> habe ich in Title in Guide geaendert.
Nun will ich, nachdem ich den Start-button gedr"uckt habe, den Titel zu "Output - values" aendern.

Code:
set(handles.panel_output_values,'Title','Output - values');


funtioniert leider nicht. Fehlermeldung:
Code:
??? Undefined function or variable 'handles'.
wenn ich gleich den Start-Button druecke
oder
Code:
??? Reference to non-existent field 'panel_output_values'.
wenn ich schon ein paar Werte eingegeben habe.

Frage:1.) Kann ich alle handles, die es gibt, am Anfang des Programms aufrufen?
2.) Schreibe ich den Ausf"uhrungscode in den push_button_callback oder in die Opening_Fcn?

Danke schon mal im Voraus.
 
chris4aus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2011, 03:44     Titel: never mind
  Antworten mit Zitat      
Hallo!

Sorry, wer lesen kann ist klar im Vorteil.
Ich habe die Unterstriche verkehrt gesetzt und dann erkennt Matlab nicht, dass ich das gleiche meine.

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