Verfasst am: 19.01.2016, 15:32
Titel: Robot Arm - Wert an Funktion übergeben
Hallo Zusammen,
ich habe eine GUI, in der ich für ein Kamera-Robotersystem eine Farbe wählen kann: Rot, Grün und Blau.
In der folgenden Funktion wird der selektierte Wert des Dropdown-Menüs dann zurückgegeben und per switch geprüft, welcher gewählt wurde: ROT, GRÜN oder BLAU.
Code:
function O_Farbauswahl_Callback(hObject, eventdata, handles) % Deklaration der globalen Variablen global O_Farbwahl O_selColor O_Farbfilterbild O_Anzahl_Objekte O_Image_Farbmittelwertbild Daten
% Gibt den im Dropdown Menü selektierten Wert zurück.
contents = cellstr(get(hObject,'String'));
O_Farbwahl = contents{get(hObject,'Value')}
% Falls Objekt nicht greifbar und Farbe schon gewähl if(strcmp(O_Farbwahl,'Rot'))
O_selColor(:,:,1) = 0.784
O_selColor(:,:,2) = 0.447
O_selColor(:,:,3) = 0.373 elseif(strcmp(O_Farbwahl,'Grün'))
O_selColor(:,:,1) = 0.286
O_selColor(:,:,2) = 0.466
O_selColor(:,:,3) = 0.290 elseif(strcmp(O_Farbwahl,'Blau'))
O_selColor(:,:,1) = 0.325
O_selColor(:,:,2) = 0.483
O_selColor(:,:,3) = 0.722
else % Auswertung der Auswahl switch O_Farbwahl
% Vorgabe der Vergleichsfarbwerte case 'Rot'
O_selColor(:,:,1) = 0.784
O_selColor(:,:,2) = 0.447
O_selColor(:,:,3) = 0.373 case 'Grün'
O_selColor(:,:,1) = 0.286
O_selColor(:,:,2) = 0.466
O_selColor(:,:,3) = 0.290 case 'Blau'
O_selColor(:,:,1) = 0.325
O_selColor(:,:,2) = 0.483
O_selColor(:,:,3) = 0.722 end end
In meinem Hauptcode wird, falls beispielsweise ein Objekt der Farbe blau nicht gegriffen wurde, ein Screenshot erstellt und geprüft, ob das Objekt noch auf dem Tisch liegt. Liegt das Objekt auf dem Tisch und ist die Farbe (O_Farbwahl) immer noch dieselbe, dann die obere FUnktion aufrufen und die entsprechenden Farbe anwählen.
Code:
if((strcmp(O_Farbwahl,'Blau'))&&(n_fail~=0))
%set(handles.O_Farbauswahl,'value',4)
O_Farbauswahl_Callback(hObject, eventdata, handles) end
Das Problem ist, dass meine Farbe vor dem Aufruf von "O_Farbauswahl_Callback(hObject, eventdata, handles)" logischerweise immer noch BLAU ist, da ich diese zuvor im Dropdown-Menü gewählt habe. Sobald ich obere Funktion aber aufrufe, wird die Farbe BLAU wieder auf NULL gesetzt, da darin ja der selektierte Wert des Dropdown-Menüs abgefragt wird. Dieser ist jedoch NULL, da ich ja die Farbe nicht erneut wählen möchte. Kann ich beim Aufruf von O_Farbauswahl_Callback(hObject, eventdata, handles) in meinem Hauptprogramm initialisieren, ohne irgendwie den Wert des Dropdown-Menüs nochmal wählen zu müssen?
Ich habe sowas wie set(handles.O_Farbauswahl,'value',WERT) gemacht, aber das funktioniert nicht wirklich.
Einstellungen und Berechtigungen
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
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.