goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

MATLAB und Simulink in Signalverarbeitung und Kommunikations

Fachkräfte:
Testingenieur (w/m) Konfigurationswerkzeuge für Echtzeitsysteme
Einbinden von Simulink®-Simulationsmodellen, Verteilung der Simulationsmodelle auf Multicore- und Multiprozessorsysteme
dSPACE GmbH - Paderborn

Entwicklungsingenieur Emissions-Modellierung (m/w)
Erstellung Modellstrukturen in Matlab/Simulink zur Abbildung von Abgasanlagen
MBtech Group GmbH & Co. KGaA - Stuttgart

Entwicklungsingenieur Steuergerätetest Nutzfahrzeuge (m/w)
Testing von Antrieben, Bremsen sowie Fahrerassistenzsystemen, Ergebnisanalyse
MBtech Group GmbH & Co. KGaA - Stuttgart, Mannheim, München

Senior Software-Entwickler (m/w)
Implementierung von SW-Entwicklungen, Erstellung von Funktionsmodellen
MBtech Group GmbH & Co. KGaA - München

Systemingenieur/in mit Arbeitspaketverantwortung im Bereich Absicherung Automotive
Absicherung von Rückwirkungen der Hardwarestreuung auf Softwareumfänge
ESG Elektroniksystem- und Logistik-GmbH - München

weitere Angebote

Partner:




Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite 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, 18: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: 527
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 10.06.2010, 19: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, 19: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, 09: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, 15: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, 02: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, 02: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



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.