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

permanente Aktualisierung der im GUI angezeigten Werte

 

Lukas___TUChemnitz
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.03.20
Wohnort: Chemnitz
Version: ---
     Beitrag Verfasst am: 10.03.2020, 16:15     Titel: permanente Aktualisierung der im GUI angezeigten Werte
  Antworten mit Zitat      
Hi Leute, ich bin ein ziemlicher Frischling was Matlab angeht. Ich habe mir ein GUI erstellt, dass Werte anzeigt, die ich von einem Taupunktspiegel auslese. Das Programm funktioniert soweit ganz gut, nur leider habe ich Probleme bei der Automatisierung. Ich habe mich schon ein wenig umgeguckt und werde wohl eine TimerFcn benutzen müssen. Habe in der Richtung auch schon etwas rumprobiert, aber bisher leider erfolglos. Jetzt seid Ihr meine große Hoffnung.

Mein script sieht folgender Maßen aus :

Feuchtesensor.m
 Beschreibung:

Download
 Dateiname:  Feuchtesensor.m
 Dateigröße:  3.18 KB
 Heruntergeladen:  290 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.03.2020, 20:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
werde wohl eine TimerFcn benutzen müssen.

Wäre auch mein Vorschlag

Zitat:
Habe in der Richtung auch schon etwas rumprobiert, aber bisher leider erfolglos

Und welche Probleme sind dabei genau aufgetreten?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lukas___TUChemnitz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.03.20
Wohnort: Chemnitz
Version: ---
     Beitrag Verfasst am: 11.03.2020, 11:18     Titel:
  Antworten mit Zitat      
Hallo Harald,

Vielen Dank für die schnelle Antwort.
Ich hatte eine Timer Funktion erstellt und wollte mit dieser die Callbacks aktualisieren.
Das Problem ist wahrscheinlich, dass die Funktion zum einlesen in den CreateFcn's ist.
Daher habe ich auch diese mit in die Timer genommen, doch auch das hat nichts gebracht.

Mit Timer sah mein Code so aus:

function varargout = Feuchtesensor(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Feuchtesensor_OpeningFcn, ...
'gui_OutputFcn', @Feuchtesensor_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end




function Feuchtesensor_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Feuchtesensor (see VARARGIN)

% Choose default command line output for Feuchtesensor
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

function t = createtimer()
t = timer;
t.TimerFcn = @edit1_Callback,@edit2_Callback,@edit3_Callback;
t.Period = 5;
t.StartDelay = 1;
t.ExecutionMode = 'fixedRate';
start(t);



function varargout = Feuchtesensor_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



function edit1_Callback(hObject, eventdata, handles)

handles.wert1 = str2double(get(hObject,'String'));
guidata(hObject,handles);


function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort = Feuchtesensortest
handles.wert1 = antwort(1,11:16);
set(hObject,'String',handles.wert1);

guidata(hObject,handles);



function edit2_Callback(hObject, eventdata, handles)

handles.wert2 = str2double(get(hObject,'String'));
guidata(hObject,handles);


function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort2 =Feuchtesensortest
handles.wert2 = antwort2(1,24:29);
set(hObject,'String',handles.wert2);

guidata(hObject,handles);


function edit3_Callback(hObject, eventdata, handles)

handles.wert3 = str2double(get(hObject,'String'));


function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort3 = Feuchtesensortest
handles.wert3 = antwort3(1,35:41);
set(hObject,'String',handles.wert3);

guidata(hObject,handles);



% Feuchtesensortest ist eine eigene Funktion, die so aussieht:
%
% function antwort = Feuchtesensortest
%
% portnr='COM7';
% X='send';
%
% s = serial(portnr);
% set(s,'BaudRate',9600,'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'none','Terminator','cr');
% fopen(s);
% fprintf(s,X);
% antwort = fgets(s);
% fclose(s);
%
%
% end
Private Nachricht senden Benutzer-Profile anzeigen
 
Lukas___TUChemnitz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.03.20
Wohnort: Chemnitz
Version: ---
     Beitrag Verfasst am: 11.03.2020, 16:39     Titel:
  Antworten mit Zitat      
UPDATE:

habe den Timer jetzt so eingebaut und dazu eine update function erzeugt.
bekomme für die sets ind der upgrade function aber den Fehler, dass es nicht genug input arguments sind. :/



function varargout = Feuchtesensor(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Feuchtesensor_OpeningFcn, ...
'gui_OutputFcn', @Feuchtesensor_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end




function Feuchtesensor_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Feuchtesensor (see VARARGIN)

% Choose default command line output for Feuchtesensor
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);




function varargout = Feuchtesensor_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
createtimer

% Get default command line output from handles structure
varargout{1} = handles.output;


function t = createtimer(hObject, eventdata, handles)

t = timer;
t.TimerFcn = @update;
t.Period = 5;
t.StartDelay = 1;
t.ExecutionMode = 'fixedRate';



start(t);

function update(hObject, eventdata, handles)
antwort = Feuchtesensortest;
TD = antwort(1,11:16);
TDF = antwort(1,24:29);
MV = antwort(1,35:41);

% disp([TD TDF MV])

set(handles.edit1,'String',TD);
set(handles.edit2,'String',TDF);
set(handles.edit3,'String',MV)

guidata(hObject, handles);




function edit1_Callback(hObject, eventdata, handles)

handles.wert1 = str2double(get(hObject,'String'));
guidata(hObject,handles);


function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort = Feuchtesensortest;
handles.wert1 = antwort(1,11:16);
set(hObject,'String',handles.wert1);

guidata(hObject,handles);



function edit2_Callback(hObject, eventdata, handles)

handles.wert2 = str2double(get(hObject,'String'));
guidata(hObject,handles);


function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort2 =Feuchtesensortest;
handles.wert2 = antwort2(1,24:29);
set(hObject,'String',handles.wert2);

guidata(hObject,handles);


function edit3_Callback(hObject, eventdata, handles)

handles.wert3 = str2double(get(hObject,'String'));
guidata(hObject,handles);


function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


antwort3 =Feuchtesensortest;
handles.wert3 = antwort3(1,35:41);
set(hObject,'String',handles.wert3);

guidata(hObject,handles);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2020, 21:29     Titel:
  Antworten mit Zitat      
Hallo,

in der Zeile an sich sehe ich kein Problem. Bei der Länge des Codes ist es schwierig nachzuvollziehen, wo nun das Problem liegt. Wenn schon so langer Code, dann bräuchte man ein vollständig reproduzierbares, d.h. inkl. .fig.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lukas___TUChemnitz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.03.20
Wohnort: Chemnitz
Version: ---
     Beitrag Verfasst am: 13.03.2020, 11:56     Titel:
  Antworten mit Zitat      
Habe das Problem gefunden und gelöst, irgendwie gab es ein Problem mit den Handles der Upgrade Funktion, deshalb habe ich diese umgangen, ist zwar nicht sehr schön, aber funktioniert ;D

Feuchtesensor_funzt.m
 Beschreibung:

Download
 Dateiname:  Feuchtesensor_funzt.m
 Dateigröße:  3.84 KB
 Heruntergeladen:  271 mal
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.