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

Fehler bei einer Case abfrage

 

muellerschneider
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 23:10     Titel: Fehler bei einer Case abfrage
  Antworten mit Zitat      
Hallo,
ich will, abhängig von der Auswahl von 3 Radiobuttons unterschiedliche Funktionen durch Druck eines Buttons realisieren. Diese Frage ich dabei über die selectionchangeform ab und weise einer variablen werte zu. dies sieht so aus:

Code:
function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)

if hObject == handles.button 1
   
        startvariable=1
       
   
end

if hObject == handles.button 2
   
    startvariable=2
       
   
end


if hObject == handles.button3
    startvariable=3
   
end


im Commandwindow erscheinen dabei auch fein die Zuweisungen für die Startvariablen. Diese Startvariablen kann ich aber anscheinend nicht bei druck der Starttaste nutzen wie in folgendem code:

Code:
function Start_Callback(hObject, eventdata, handles)


 switch startvariable
      case 1

        fprintf('fall3')
      case 2
        fprintf('fall2')
      case 3
        fprintf('fall3')
end
 



Die Fehlermeldung ist diese:
Undefined function or variable 'startvariable'.

Error in ba>Start_Callback (line 394)
switch startvariable

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in ba (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)ba('Start_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback


könnte mir jemand helfen Sad
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2013, 23:37     Titel:
  Antworten mit Zitat      
Hallo,

die Callback-Funktionen sind alles Unterfunktionen, haben also alle ihren eigenen Workspace. Das bedeutet, dass man selbst dafür sorgen muss, dass die benötigten Daten zur Verfügung stehen.
Eine Übersicht über die verschiedenen Ansätze:
http://www.mathworks.com/help/matla.....-data-in-a-guide-gui.html

Ich persönlich würde zu getappdata/setappdata raten, andere bevorzugen guidata.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
muellerschneider
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 23:04     Titel:
  Antworten mit Zitat      
mmh ich bekomm das iwi nicht wirklich hin. hab mir das so gedacht:

Code:
function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)

if hObject == handles.button 1
   
        setappdata(handles.button1,'a',Value)
end

if hObject == handles.button 2
   
     setappdata(handles.button2,'b',Value)
       
   
end


if hObject == handles.button3
   setappdata(handles.button3,'c',Value)
   
end
 



und dann die abfrage:

Code:
function Start_Callback(hObject, eventdata, handles)

x= getappdata(handles.button1, 'a')
y=getappdata(handles.button2,'b')
z=getappdata(handles.button3,'c)

if x==1
        fprintf('fall3')
elseif y==1
        fprintf('fall2')
elseif z==1
        fprintf('fall3')
end
 


Was mache ich falsch. Und warum gebe ich diesen Daten Namen wie hier a b und c?
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2013, 23:14     Titel:
  Antworten mit Zitat      
Hallo,

bitte dazu schreiben, was nicht funktioniert. Gibt es eine Fehlermeldung? Ein unerwartetes Verhalten? Welche(s)?

Auf den ersten Blick fallen mir im ersten Codeteil falsche Leerzeichen (zwischen button und Zahlen) auf und ein fehlendes Hochkomma:
Code:
z=getappdata(handles.button3,'c')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
muellerschneider
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 23:45     Titel:
  Antworten mit Zitat      
ah ok ist nicht der originalcode, da der umfangreicher ist
Fehler ist das




Undefined function or variable 'Value'.

Error in ba>uipanel10_SelectionChangeFcn (line 125)
setappdata(handles.expliziteauswahlbutton,'b',Value)

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in ba (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)ba('uipanel10_SelectionChangeFcn',get(hObject,'SelectedObject'),eventdata,guidata(get(hObject,'SelectedObject')))


Error in hgfeval (line 63)
feval(fcn{1},varargin{:},fcn{2:end});

Error in uitools.uibuttongroup/childAddedCbk>manageButtons (line 79)
hgfeval(cbk, source, evdata);

Error while evaluating uicontrol Callback
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2013, 11:22     Titel:
  Antworten mit Zitat      
Hallo,

die Meldung sagt doch, wo das Problem liegt. Du müsstest sagen, was Value nun ist (also z.B. 1, 2, oder 3 wie in deinem ursprünglichen Code).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
muellerschneider
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 13:27     Titel:
  Antworten mit Zitat      
sorry ich checks net Confused
Was zum henker ist denn dieses Value, das sagt doch nur dass es den wert aus der checkbox ausliest oder nicht?
Die auswahl muss doch dann entsprechend der Variablen erfolgen, die ich beim holen der dateien auswaehle oder nicht
wenn ich den buttons das so zuweise>
a=getappdata(handles.button1,'a')
b=getappdata(handles.button2, 'b')
c=getappdata(handles.button2,'c')

dann mach ich doch ne if else if abfrage was von a b c gleich 1 ist oder nicht????
Private Nachricht senden Benutzer-Profile anzeigen
 
muellerschneider
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 14:36     Titel:
  Antworten mit Zitat      
also es funktioniert jetzt so halb. ka manchmal funktioniert es manchmal nicht. es sieht irgendwie so aus, also müsste die abfrage geupdatet werden. kann das sein? Normalerweise wird auf druck des radiobuttons ja aber eig die variablen geupdated

zum abgleich hier nochmal der Code. ein fehler wird jett nicht mehr ausgegeben

Code:

function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)

if hObject == handles.normalbutton
   
    a = get(handles.normalbutton,'Value');
   
    setappdata(handles.normalbutton,'a',a)
 
   
else
   
    set(handles.edit1,'Enable','off');
   
end

if hObject == handles.expliziteauswahlbutton
   
    b = get(handles.expliziteauswahlbutton,'Value') ;
   
    setappdata(handles.expliziteauswahlbutton,'b',b)
   
end

if hObject == handles.kalibrierungbutton
   
    c = get(handles.kalibrierungbutton,'Value');
    setappdata(handles.kalibrierungbutton,'c',c)
   
end



und die abfrage
Code:
a= getappdata(handles.normalbutton,'a');
   b= getappdata(handles.expliziteauswahlbutton, 'b') ;
   c= getappdata(handles.kalibrierungbutton,'c');


   
   if a==1
       fprintf('Normal')
       
    elseif  b==1
       fprintf('Masseauswahl')
       
   elseif c==1
       fprintf('kalibrierung')
   end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2013, 17:36     Titel:
  Antworten mit Zitat      
Hallo,

Stand jetzt müssen a, b, c vorhanden sein, damit der nächste Schritt klappt. Es muss also jeder Button mal gewählt worden sein.

Wäre nicht folgendes sinnvoller?

Code:
function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)
switch eventdata.NewValue
case handles.normalbutton
Auswahl = 'normal';
case handles.expliziteauswahlbutton
Auswahl = 'masseauswahl';
case handles.kalibrierungbutton
Auswahl = 'kalibrierung';
setappdata(handles.figure1, 'Selection', Auswahl);
und als Abfrage
Code:
Auswahl = getappdata(handles.figure1, 'Selection');
fprintf(Auswahl);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
muellerschneider
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 18:20     Titel:
  Antworten mit Zitat      
ich habs jetzt auch gerade hinbekomme

der Fehler lag daran, dass das programm, wenn man ein button ausgewählt hatte, nicht mehr einen anderen auswählen konnte. das habe ich behoben indem ich vor der Auswahl die Variablen gelöscht habe mit
setappdata(handles.normalbutton,'a',0)
setappdata(handles.expliziteauswahlbutton,'b',0)
setappdata(handles.kalibrierungbutton,'c',0)

Jetzt funktioniert es
juhuuu Very Happy
Vielen dank Harald
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 - 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.