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

Slider Wert in GUI übergeben - es geht einfach nicht! RAGE

 

moe69
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2012, 10:58     Titel: Slider Wert in GUI übergeben - es geht einfach nicht! RAGE
  Antworten mit Zitat      
Evil or Very Mad


Hallo zusammen!

Seit Tagen versuche ich nun einen Slider Wert in einer GUI zu übergeben. Überall scheint es zu funktionieren, nur bei mir nicht. Bevor ich jetzt mit dem Vorschlaghammer auf den PC eindresche wollte ich jetzt doch noch einmal hier höflich im Forum nachfragen Wink

Hier meine .m und .fig dateien

Das Programm ist eine Funküberwachung für ein RC Solar Auto. Der Slider ist nur zur Funktionsüberprüfung für den Axesplot. Dieser soll später ein Tacho werden. Im Prinzip will ich mit dem Slider die Tachonadel erst einmal steuern. Aber das funktioniert leider nicht, da ich aus der Slider callback function keinen wert per Handles an den Axeplot geben kann.

Seht selbst....

Achja, das Logo scheint jetzt mit dem neuen Plot auch nicht mehr angezeigt zu werden. Was mache ich dort falsch?

Gruß
moe

logo_sunrace.jpg
 Beschreibung:

Download
 Dateiname:  logo_sunrace.jpg
 Dateigröße:  30.91 KB
 Heruntergeladen:  1214 mal
serial_reader.fig
 Beschreibung:

Download
 Dateiname:  serial_reader.fig
 Dateigröße:  8.89 KB
 Heruntergeladen:  665 mal
serial_reader.m
 Beschreibung:

Download
 Dateiname:  serial_reader.m
 Dateigröße:  12.54 KB
 Heruntergeladen:  614 mal
Private Nachricht senden Benutzer-Profile anzeigen


flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2012, 11:29     Titel:
  Antworten mit Zitat      
In der M-Datei ist die Signatur der Funktion nicht korrekt, dies zeigt Matlab auch an. Somit ist Dein Code syntaktisch nicht korrekt.

Zusätzlich steht 2 Funktionen über Deinem "hier muss der Wert des Silders hin" Kommentar, wie man die Werte des Sliders ausliest, d.h. entweder nimmst Du den Wert aus hObject, wenn Du in einem Callback des Sliders bist oder eben aus handles.
Private Nachricht senden Benutzer-Profile anzeigen
 
moe69
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2012, 18:21     Titel:
  Antworten mit Zitat      
hallo,

erstmal danke für die antwort und deine mühen meinen code anzuschauen.

ja, ich will den sliderwert aus seiner callback function unten in die axes function hineinbekommen.

leider bekomme ich das nicht hin.
wie ist der befehl um den slider wert in die axes function zu bekommen?
Code:



function slider2_Callback(hObject, eventdata, handles)
% hObject    handle to slider2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
y=get(handles.slider2,'Value');        
 
set(handles.slider2,'Value', y);

guidata(hObject, handles)


function axes7_CreateFcn(hObject, eventdata, handles)
% hObject    handle to axes7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
%axes('units',get(gca,'units'),'position',get(gca,'position'),'color','none','visible','off')
axis([-1 1 0 1])
axis equal
h = line(NaN,NaN,'linewidth',3,'Color',[1 0 0]);
k = get(handles.slider2,'value')

for i=k % HIER SOLLTE DER SLIDER WERT HIN !!!!!!!!!!!!!!!
   set(h,'xdata',[0 cos(i*pi/180)],'ydata',[0 sin(i*pi/180)])
   drawnow
   pause(0.01)
end

guidata(hObject,handles);

 


so hätte ich gedacht muss es gehen, so funktioniert es aber nicht. warum, wo ist der fehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2012, 20:18     Titel:
  Antworten mit Zitat      
Du musst zuerst einmal Deinen Code syntaktisch korrigieren. Dann schau Dir bitte die Funktionssignaturen an und vor allem was sie bedeuten.

Im Moment versuchst Du in eine create-Funktion eines Objektes auf ein anderes zuzugreifen. Eine create-Funktion eines UI Objektes wird nur ein einziges Mal aufgerufen, nämlich dann, wenn es erzeugt wird, d.h. Dein Code würde an dieser Stelle nur ein einziges Mal ausgeführt werden. Ist dass das Ziel was Du verfolgst !?
Weiterhin gilt dann auch, dass die Objekte in einer bestimmten Reihenfolge erzeugt werden, d.h. wenn das Objekt Deiner create-Funktion vor dem Silderobjekt erzeugt wird, dann existiert natürlich der Slider noch nicht und Du kannst nicht darauf zugreifen.

Ich empfehle Dir dringend, dass Du Deinen Code nur mit den Funktionen bestückst, die Du auch wirklich brauchst. Du gewinnst damit Übersichtlichkeit
Private Nachricht senden Benutzer-Profile anzeigen
 
geieraffe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 19.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2012, 14:59     Titel:
  Antworten mit Zitat      
moe69 hat Folgendes geschrieben:


Code:

function slider2_Callback(hObject, eventdata, handles)
% hObject    handle to slider2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
y=get(handles.slider2,'Value');        %lesen
 
set(handles.slider2,'Value', y);        %den von eben gelesenen Wert schreiben!?

guidata(hObject, handles)
...
 


erst den Wert auslesen um ihn dann gleich wieder zu schreiben, macht keinen Sinn Smile ...mal nicht für mich.

entweder du legst den Wert im handle ab:
Code:

handles.sliderVal = get(handles.slider2,'Value');
guidata(hObject, handles)
 

um ihn an späterer Stelle wieder auszulesen oder du liest den Wert später direkt über
Code:

get(handles.slider2,'Value')
 
aus.

Und wann soll denn geplottet werden? beim bewegen des Sliders? Dann sollte das auch in den Callback rein!
Private Nachricht senden Benutzer-Profile anzeigen
 
MatlabGuruxxxxxxxxxxxxxxx

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2016, 10:02     Titel:
  Antworten mit Zitat      
danke hat mir geholfen Smile
 
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.