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

Guide - 2 Funktionen - selbe Variable samt Inhalt

 

Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 10:12     Titel: Guide - 2 Funktionen - selbe Variable samt Inhalt
  Antworten mit Zitat      
Hallo @,
ich hab immernoch Probleme mit den dummen Variablen. Evil or Very Mad

Wie bekomm ich es hin dass ich die Variable asset welche ich in der Funktion Button_SetGrid_Callback setze in der Funktion Button_Calculate_Callback weiterverwenden kann? Ich brauche diesen Wert dort wieder...

Danke.

Code:

% --- Executes on button press in Button_SetGrid.
function Button_SetGrid_Callback(hObject, eventdata, handles)
% hObject    handle to Button_SetGrid (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global aset;
asset=56;

% klappt immer noch nicht Sad
[asd1]=setgrid;
msgbox(int2str(asd1))

guidata(hObject, handles);

% --- Executes on button press in Button_Calculate.
function Button_Calculate_Callback(hObject, eventdata, handles)
% hObject    handle to Button_Calculate (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
msgbox(int2str(asset))

[fs_se,AEL,AAZ]=pattern();
surf(AEL,AAZ,fs_se);
shading interp;
view(90,0);
xlabel('EL');
ylabel('AZ');
 


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 11:30     Titel:
  Antworten mit Zitat      
So sollte es funktionieren
Code:

% --- Executes on button press in Button_SetGrid.
function Button_SetGrid_Callback(hObject, eventdata, handles)
% hObject    handle to Button_SetGrid (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global asset; % war aset
asset=56;

% klappt immer noch nicht  
[asd1]=setgrid;
msgbox(int2str(asd1))

guidata(hObject, handles);

% --- Executes on button press in Button_Calculate.
function Button_Calculate_Callback(hObject, eventdata, handles)
% hObject    handle to Button_Calculate (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global asset; % fehlte
msgbox(int2str(asset))

[fs_se,AEL,AAZ]=pattern();
surf(AEL,AAZ,fs_se);
shading interp;
view(90,0);
xlabel('EL');
ylabel('AZ');
 

Wobei guidata anstelle von globalen Variablen verwendet werden sollte, falls der Dialog mehrfach aufgrufen werden soll oder, oder, oder....
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 21.10.2008, 11:37     Titel:
  Antworten mit Zitat      
Hallo Timo,
wenn du die Variable global machen willst, dann so:
Code:

function Button_SetGrid_Callback(hObject, eventdata, handles)
global asset;
asset=56;
[asd1]=setgrid;
msgbox(int2str(asd1))
guidata(hObject, handles);

function Button_Calculate_Callback(hObject, eventdata, handles)
global asset;
msgbox(int2str(asset))
[fs_se,AEL,AAZ]=pattern();
surf(AEL,AAZ,fs_se);
shading interp;
view(90,0);
xlabel('EL');
ylabel('AZ');
 

Eleganter ist es aber

Code:

function Button_SetGrid_Callback(hObject, eventdata, handles)
handles.asset=56;
[asd1]=setgrid;
msgbox(int2str(asd1))
guidata(hObject, handles);

function Button_Calculate_Callback(hObject, eventdata, handles)
msgbox(int2str(handles.asset))
[fs_se,AEL,AAZ]=pattern();
surf(AEL,AAZ,fs_se);
shading interp;
view(90,0);
xlabel('EL');
ylabel('AZ');
 

Hoffe das funktioniert. Smile
Gruß Schrank

mmh, zu langsam
Private Nachricht senden Benutzer-Profile anzeigen
 
Lammersdorf
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 12:39     Titel:
  Antworten mit Zitat      
Globale Variablen sind häßlich - sobald man sie an mehr als zwei Stellen verwendet, wird es schwer, unabsichtliche Änderungen usw zu vermeiden.

Die zweite Lösung von Schrank ist da viel eleganter. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
lab_manager
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 19.03.2012, 14:12     Titel:
  Antworten mit Zitat      
Hallo,

habe diesen Tipp mit dem handles ausprobiert:

Mein Code sieht wie folgt aus:

Code:
% Das ist mein Programm.

% --- Executes on button press in connect.
function connect_Callback(hObject, eventdata, handles)

handles.DSO = actxcontrol('LeCroy.ActiveDSOCtrl.1');
pause(0.05);  
invoke(handles.DSO,'MakeConnection','IP:10.199.92.235');
pause(0.05);


% --- Executes on button press in disconnect.
function disconnect_Callback(hObject, eventdata, handles)
   
    invoke(handles.DSO,'Disconnect');


% --- Executes on button press in IDN.
function IDN_Callback(hObject, eventdata, handles)

    invoke(handles.DSO,'WriteString','*IDN?',true);
    ID=invoke(handles.DSO,'ReadString',500);
    set(handles.text,'String',ID);
 



Der Connect Callback wird ohne weiteres ausgeführt, jedoch wenn ich nach der Verbindung versuche die ID auszulesen zeigt er den unten genannten Fehler!

Code:

??? Reference to non-existent field 'DSO'.

Error in ==> GUI>IDN_Callback at 59
    invoke(handles.DSO,'WriteString','*IDN?',true);

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

Error in ==> GUI at 17
    gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)GUI('IDN_Callback',hObject,eventdata,guidata(hObject))

 
??? Error while evaluating uicontrol Callback

 


Was habe ich in dieser hinsicht falsch gemacht?

Danke!
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: 19.03.2012, 23:54     Titel:
  Antworten mit Zitat      
Hallo lab_manager,

Du änderst zwar den handles Struct, aber Du speicherst ihn nicht danach. Also:
Code:
% --- Executes on button press in connect.
function connect_Callback(hObject, eventdata, handles)

handles.DSO = actxcontrol('LeCroy.ActiveDSOCtrl.1');
pause(0.05);  
invoke(handles.DSO,'MakeConnection','IP:10.199.92.235');
pause(0.05);
guidata(hObject, handles);  % <-- update

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
lab_manager
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 21.03.2012, 08:44     Titel:
  Antworten mit Zitat      
Hallo,

hat wunderbar geklappt, danke! Smile

MFG

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