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

Push Button mehrmals drücken

 

Anne
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 18.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2010, 08:06     Titel: Push Button mehrmals drücken
  Antworten mit Zitat      
Hallo,

Ich schreibe gerade ein Programm, um ein Messgerät anzusteuern.
Das Ganze soll mit einer GUI realisiert werden. Auf der Benutzeroberfläche kann man z.B. den Frequenzbereich verändern. Es soll einen Push Button "Messen" geben. Wenn man auf diesen drückt, soll das Messgerät die Messdaten von 4 Messungen liefern und diese sollen in 4 Graphen ausgegeben werden.

Das ganze Programm funktioniert soweit, allerdings mit einem Fehler. Ich kann die Messung nur einmal durchführen. Wenn ich den Frequenzbereich dann verändere und erneut auf "Messen" drücke, erhalte ich eine Fehlermeldung.
Ich hätte es aber gerne so, dass ich die Messung mehrmals durchführen kann. Wie kann ich das realisieren?

Bei meiner Recherche im Internet stieß ich auf die Befehle
uiwait(handles.figure1)
und uiresume(handles.figure1)
Ich wüsste aber nicht, wo ich diese platzieren sollte, weil ich deren Sinn nicht ganz verstehe.
Oder muss ich das ganze mit einem toggle button lösen?

Könnt ihr mir helfen?

Lg Anne
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.10.2010, 14:22     Titel: Re: Push Button mehrmals drücken
  Antworten mit Zitat      
Hallo Anne,
Zitat:
Wenn ich den Frequenzbereich dann verändere und erneut auf "Messen" drücke, erhalte ich eine Fehlermeldung.

Meine Kristallkugel ist gerade in Reparatur. Kannst Du bitte die Fehlermeldung posten? Die erklärt nämlich, wo das Problem liegt.

Gruß, Jan
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: 04.11.2010, 16:41     Titel:
  Antworten mit Zitat      
Hi,
Ich konnte nicht früher antworten, da ich nicht immer Zugang zum Messgerät habe.
Hier also der Code:
Code:

function varargout = gui3(varargin)

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

handles.output = hObject;
 
% in Textfeld 1 Datum eintragen
date = sprintf('%4d-%02d-%02d_%02d:%02d:%02.0f', clock);
set(handles.text1, 'String', date);
 
% Update handles structure
guidata(hObject, handles);
 
% UIWAIT makes gui3 wait for user response (see UIRESUME)
% uiwait(handles.figure1);

 

% --- Outputs from this function are returned to the command line.
function varargout = gui3_OutputFcn(hObject, eventdata, handles)
 
% Get default command line output from handles structure
varargout{1} = handles.output;
 


function edit1_Callback(hObject, eventdata, handles)

 

% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 


% --- 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 = nwasetup;
 
% 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');
 
 

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% dieser Pushbutton hat noch keine Aufgabe
 
 

function edit2_Callback(hObject, eventdata, handles)


 
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function edit3_Callback(hObject, eventdata, handles)
 


% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function edit4_Callback(hObject, eventdata, handles)

 

% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

 
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: 04.11.2010, 16:58     Titel:
  Antworten mit Zitat      
Wenn ich das erste mal auf den pushbutton1 drücke, erstellt es mir die 4 gewünschten plots.

Beim zweiten Klick auf pushbutton1 erhalte ich folgenden Fehler:


??? Error using ==> icinterface.fopen at 83
The specified configuration is not available.
Use INSTRFIND to determine if other instrument objects are connected
to the requested instrument.

Error in ==> nwasetup at 37
fopen(nwa);

Error in ==> gui3>pushbutton1_Callback at 128
nwa = nwasetup;

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 while evaluating uicontrol Callback



Hängt der Fehler also mit einem der Unterprogramme zusammen?
mit nwasetup wird ein Unterprogramm aufgerufen. In diesem Unterprogramm wird mit fopen(nwa) eine Datei mit dem FID nwa geöffnet. Liegt das Problem einfach darin, dass ich beim erneuten Drücken des Pushbutton1 die Datei noch einmal versuche, zu öffnen, und es dann zu einem Fehler kommt?
Dann sollte ich den Befehl
Code:

nwa = nwasetup;
 

Einfach irgendwo anders platzieren…bzw. irgendwo fclose einbauen oder???
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: 04.11.2010, 17:03     Titel:
  Antworten mit Zitat      
ok, klappt. Daran lags wohl, das ist mir aber erst aufgefallen, als ich hier versucht habe, euch mein Problem zu schildern Wink....
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: 04.11.2010, 17:11     Titel:
  Antworten mit Zitat      
Ich habe aber noch ein Problem:
Wenn ich versuche, das Gui-figure zu schließen, erhalte ich folgende Fehlermeldung:


??? Error using ==> feval
Undefined function or method 'figure1_CloseRequestFcn' for input arguments of type 'struct'.

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

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

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


??? Error while evaluating figure CloseRequestFcn



Ich muss es dann immer per Taskmanager schließen.


Und noch eine Frage: Kann man das irgendwie einrichten, dass das Gui-Figure in der Größe variabel ist? Im Moment ist das "Maximieren"-Symbol noch nicht aktiviert. Sad
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: 04.11.2010, 17:56     Titel:
  Antworten mit Zitat      
Ich habe den Fehler jetzt behoben:
Habe in dieser Funktion uiwait eingefügt:
Code:

function gui3_OpeningFcn(hObject, eventdata, handles, varargin)
% ...
uiwait(handles.figure1);
 


dann habe ich noch folgende Funktion erstellt:

Code:

% --- Executes when user attempts to close figure1.
function figure1_CloseRequestFcn(hObject, eventdata, handles)

uiresume(handles.figure1);
 


und in die Output-Funktion habe ich noch das eingefügt:

Code:

function varargout = gui3_OutputFcn(hObject, eventdata, handles)

%...

delete(hObject);
 


Ich verstehe aber nicht, was ich mit uiwait und uiresume jetzt eigentlich bewirkt habe. Kann mir das jemand erklären?
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.