Text doesn't change in guide while i can see it change in the commande window

2 views (last 30 days)
Hello, im receiving data from bluetooth, and i want to show it in a guide text using a timer to show it every x seconds, so i wrote the following program, im not getting any error, and i can see values change in the commande window, but nothing changes in the guide. any idea?
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global tmr
stop(tmr)
set(findobj('Tag','text5'),'String', ' ');
set(findobj('Tag','alT'),'String',' ');
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global tmr
tmr = timer('ExecutionMode', 'FixedRate', ...
'Period', 5 , ...
'TimerFcn', {@timerCallback});
start(tmr);
function timerCallback(hObj, eventdata)
global temp Data Temperatura n a
temp = characteristic(Data, "000F1809-0000-0000-0100-000100001809", "000F1006-0000-0000-0100-000100001809");
temperatura = 13 / 255 *read(temp)+32;
if temperatura < 36.3
a = "Hypotermia";
elseif temperatura > 38.3 && temperatura < 40.3
a = "Pyrexia";
elseif temperatura > 40.3
a = "Hypertermia";
else
a = " ";
end
temperatura= round(temperatura, 1);
t = string(temperatura);
set(findobj('Tag','text5'),'String',t);
set(findobj('Tag','alT'),'String',a);

Accepted Answer

Jan
Jan on 9 Jun 2021
Edited: Jan on 9 Jun 2021
It is not the cause of your problems, but global variables are a shot in your knee. Avoid them consequently. Instead of searching for a specific tag, you can provide the handle to the callback.
function pushbutton4_Callback(hObject, eventdata, handles)
stop(handles.tmr);
delete(handls.tmr);
handles.text5.String = ' ';
handles.alT.String = ' ';
guidata(hObject, handles);
function pushbutton5_Callback(hObject, eventdata, handles)
handles.tmr = timer('ExecutionMode', 'FixedRate', ...
'Period', 5 , ...
'TimerFcn', {@timerCallback, handles});
start(tmr);
guidata(hObject, handles);
function timerCallback(hObj, eventdata, handles)
temp = characteristic(Data, "000F1809-0000-0000-0100-000100001809", "000F1006-0000-0000-0100-000100001809");
temperatura = 13 / 255 *read(temp)+32;
if temperatura < 36.3
a = "Hypotermia";
elseif temperatura > 38.3 && temperatura < 40.3
a = "Pyrexia";
elseif temperatura > 40.3
a = "Hypertermia";
else
a = " ";
end
temperatura= round(temperatura, 1);
t = string(temperatura);
handles.text5.String = t;
handles.alT.String = a;
drawnow; % <-- use this to update the figure
I assume, the final drawnow solves your problem already.

More Answers (0)

Categories

Find more on Migrate GUIDE Apps in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!