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

bei Programmstart Funktion aus selbem Ornder aufrufen

 

Anne
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 18.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2010, 10:51     Titel: bei Programmstart Funktion aus selbem Ornder aufrufen
  Antworten mit Zitat      
Hallo,
Ich bin Neuling im Gebiet Gui und bräuchte mal eure Hilfe. Ich möchte gleich beim Starten des Gui eine Funktion aufrufen, die im selben Ordner wie das Gui-m-file liegt:

Code:

nwa = nwasetup
 


nwa ist der der Rückgabewert und nwasetup der Funktionsname.

Wo kann ich diesen Funktionsaufruf nun platzieren, damit das gesamte Programm "sieht", dass die Funktion aufgerufen wurde, und der Wert von nwa im gesamten Programm verfügbar ist? Und wie???

in der Opening Function hat es nicht funktioniert.

Lg Anne
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.11.2010, 11:04     Titel:
  Antworten mit Zitat      
Hallo

wenn es nur einmal ausgeführt werden muss, dann wäre OpeningFcn richtig.
was klappt denn, kannst du es etwas genauer beschreiben? Fehlermeldung eventuell?
Private Nachricht senden Benutzer-Profile anzeigen
 
Anne
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 18.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2010, 15:59     Titel:
  Antworten mit Zitat      
denny hat Folgendes geschrieben:
Hallo

wenn es nur einmal ausgeführt werden muss, dann wäre OpeningFcn richtig.
was klappt denn, kannst du es etwas genauer beschreiben? Fehlermeldung eventuell?


Nein, es muss ja leider mehrmals ausgeführt werden. Deswegen möchte ich es ja irgendwo hinschreiben, wo es quasi für das ganze Programm "sichtbar" ist.

Wenn ich es in openingFcn schreibe, erhalte ich folgende Fehlermeldung:

??? Undefined function or variable 'nwa'.

Error in ==> gui3>pushbutton1_Callback at 136
fprintf(nwa, 'CALC:PAR:DEL:ALL');

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> gui3 at 42
gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)gui3('pushbutton1_Callback',hObject,eventdata,guidata(hObject))


??? Error using ==> waitfor
Error while evaluating uicontrol Callback


Das heißt ja dann, dass nwa nicht bekannt ist....
Es wäre aber auch blöd, wenn ich die Funktion jedes Mal neu aufrufen müsste. Denn mit dieser Funktion wird mit fopen eine Datei geöffnet und diese sollte eig auch die ganze Zeit offen bleiben. Die soll erst beim Schließen des gui wieder geschlossen werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.11.2010, 16:20     Titel:
  Antworten mit Zitat      
Der Fehler tritt ja erst in Callback-Fcn auf. Werte zwischen Callbacks kann mit Hilfe der handles übergeben. schau dazu GUIDATA
Code:

function my_figure_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 my_figure (see VARARGIN)

% Choose default command line output for my_figure
handles.output = hObject;
handles.nwa    = nwasetup;

% Update handles structure
guidata(hObject, handles);

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

 



dann in pushbutton aus deinem post
http://www.gomatlab.de/viewtopic.php?p=55238

ersetze etweder nwa durch handles.nwa, oder
weise lokalen Variablen nwa handels.nwa zu:
Code:


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
   
startfrequenz = str2num(get(handles.edit2, 'String'));
disp(startfrequenz);
endfrequenz = str2num(get(handles.edit3, 'String'));
disp(endfrequenz);
frequenzspanne = endfrequenz - startfrequenz;
disp(frequenzspanne);
datenpunkte = str2num(get(handles.edit4, 'String'));
disp(datenpunkte);


% ab hier wird das Messgerät aufgerufen
nwa = handles.nwa;
 
% delete all measurements on the PNA
fprintf(nwa, 'CALC:PAR:DEL:ALL');
 
% create 4 windows
fprintf(nwa, 'DISP:ARR QUAD');
 
% dem Messgerät die Anzahl der Datenpunkte vorgeben
fprintf(nwa, 'SENS1:SWE:POIN %d', datenpunkte);
fprintf(nwa, 'SENS2:SWE:POIN %d', datenpunkte);
fprintf(nwa, 'SENS3:SWE:POIN %d', datenpunkte);
fprintf(nwa, 'SENS4:SWE:POIN %d', datenpunkte);
 
% dem Messgerät den eingelesenen Frequenzbereich vorgeben
fprintf(nwa, 'SENS1:FREQ:STAR %d', startfrequenz);
fprintf(nwa, 'SENS2:FREQ:STAR %d', startfrequenz);
fprintf(nwa, 'SENS3:FREQ:STAR %d', startfrequenz);
fprintf(nwa, 'SENS4:FREQ:STAR %d', startfrequenz);
 
fprintf(nwa, 'SENS1:FREQ:SPAN %d', frequenzspanne);
fprintf(nwa, 'SENS2:FREQ:SPAN %d', frequenzspanne);
fprintf(nwa, 'SENS3:FREQ:SPAN %d', frequenzspanne);
fprintf(nwa, 'SENS4:FREQ:SPAN %d', frequenzspanne);
 
% Get trace from the NWA
trace11 = pnagetsdata1(nwa);
trace22 = pnagetsdata2(nwa);
trace33 = pnagetsdata3(nwa);
trace44 = pnagetsdata4(nwa);
 
%Plot the current trace
axes(handles.axes1);
plot(trace11.f_vec11*1e-9,mag2db(abs(trace11.data11)),'b');
axes(handles.axes2);
plot(trace22.f_vec22*1e-9,mag2db(abs(trace22.data22)),'y');
axes(handles.axes3);
plot(trace33.f_vec33*1e-9,mag2db(abs(trace33.data33)),'r');
axes(handles.axes4);
plot(trace44.f_vec44*1e-9,mag2db(abs(trace44.data44)),'g');
 
% x-Achsen-Beschriftung
xlabel(handles.axes1, 'Frequenz (GHz)');
xlabel(handles.axes2, 'Frequenz (GHz)');
xlabel(handles.axes3, 'Frequenz (GHz)');
xlabel(handles.axes4, 'Frequenz (GHz)');
 
% y-Achsen-Beschriftung
ylabel(handles.axes1, 'S11 (dB)');
ylabel(handles.axes2, 'S12 (dB)');
ylabel(handles.axes3, 'S21 (dB)');
ylabel(handles.axes4, 'S22 (dB)');
 
% Gitternetzlinien sichtbar
grid (handles.axes1, 'on');
grid (handles.axes2, 'on');
grid (handles.axes3, 'on');
grid (handles.axes4, 'on');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Anne
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 18.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2010, 16:38     Titel:
  Antworten mit Zitat      
oh vielen Dank. Jetzt funktioniersts Smile

Jetzt verstehe ich auch zum ersten Mal, was diese handles genau machen Wink

Lg Anne
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 - 2025 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.