Verfasst am: 01.07.2011, 11:55
Titel: COM Daten im Textfeld von GUI ausgeben
Hallo,
ich habe ein kleines Problem bei der Programmierung eines GUI. Wäre super wenn mir jemand helfen könnte...
Also zum Problem:
Ich öffne im GUI eine serielle Schnittstelle und lasse diese eine Funktion aufrufen, wenn Daten da sind.
--> s1.BytesAvailableFcn =@serialGetData;
Nun werden diese Daten brav von der Funktion eingelesen und im Command Window dargestellt.
Wobei text1 das text-Feld ist. Wenn ich aber das mache, dann meldet sich MATLAB und meint, dass das handle unbekannt ist.
Ich kenne mich mit GUIs nicht gut aus (arbeite erst seit ca. 1Woche damit)...
Würde aber gerne wissen, wie ich in solchen Unterfunktionen wie serialGetData, die einzelnen grafischen Elemente der GUI ansprechen kann. Denn die Textdarstellung ist nur mal ein Test. Zum Schluss sollen die Daten gezeichnet werden und das jedes Mal wenn ein neuer Wert dazu kommt ("quasi-echtzeit").
hallo ich weiß zwar nicht wo du das ganze aufrufst
aber da die daten schon da sind würde ich es zuerst mal drawnow() testen, wenn es dass immer noch nicht tut entweder guidata oder die handles auch als returnwert der function definieren das sollte dann auf jedenfall gehen ich hoffe das hilft dir
vielen Dank für die Antwort. Doch leider hilft es mir nicht viel. Ich kann mit drawnow() nicht Daten sofort schreiben, wenn ich in meiner Unterfunktion (welche von der Seriellen aufgerufen wird) nicht auf das Text-Feld zugreifen kann.
Mein eigentliches Problem ist, dass ich nicht weiß, wie ich in dieser Unterfunktion die einzelnen Funktionen der GUI bzw. Ausgaben der GUI --> In diesem Fall das Text-Feld ("Edit Text") ansprechen kann...
also ich habe mal ein kleines Beispiel gemacht
GUI 1 Knopf (Tester) und eine Edit Ausgabe
Code:
function tester_Callback(hObject, eventdata, handles) % hObject handle to tester (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles=testfun(handles);
function Ausgabe_Callback(hObject, eventdata, handles) % hObject handle to Ausgabe (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,'String') returns contents of Ausgabe as text % str2double(get(hObject,'String')) returns contents of Ausgabe as a double
% --- Executes during object creation, after setting all properties. function Ausgabe_CreateFcn(hObject, eventdata, handles) % hObject handle to Ausgabe (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
also macht die sache etwas hässlich laut der Matlabhilfe ich zitiere
Code:
time = datestr(now,0);
s.BytesAvailableFcnMode = 'terminator';
s.BytesAvailableFcn = {@mycallback,time};
Alternatively, you can specify the callback function as a string in the cell array.
s.BytesAvailableFcn = {'mycallback',time};
The corresponding function header is:
Leider überschreibt mir die Funktion immer mein Textfeld komplett, kann man das irgendwie so machen, dass die neue Antwort an den bestehenden Text angefügt wird? Somit würde sich eine Art Doku. der Rückgaben ergeben!
Hat da jemand einen Tipp, wie ich meinen Code umschreiben muss, dass das klappt!
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.