老师您好,请问您说的“加入一个逻辑变量 isX 并初始化为true.
每读入一个数据后,检查isX的值,若为true,则认为当前读入的是x,否则为y。然后在将isX的值取反即可。然后继续读取下一个数据。”具体代码怎么表示呢?以下是我写的,但不好,实时现实中出现了bug,想采用您的来试试。谢谢。
[
function dataDisp(obj,event,handles) %%%%%%%%%%%%%定时器 TimerFcn 函数
global k shuju shuzux1 shuzuy1
%串口TimerFcn的回调函数
% 串口数据显示
%%获取参数
hasData=getappdata(handles.figure1,'hasData');%%串口是否收到数据
strRec=getappdata(handles.figure1,'strRec');%%串口数据的字符串形式,定时器显示该数据
shuju=[str2num(strRec)]; %#ok
numRec=getappdata(handles.figure1,'numRec');%%串口接收到的数据个数
if~hasData %若串口没接受到数据,先尝试接收串口数据
bytes(obj,event,handles);
end
if hasData %若串口有数据,显示串口数据
%给数据显示模块加互斥锁
%执行显示数据模块时,不接受串口数据,即不执行BytesAvailableFcn回调函数
setappdata(handles.figure1,'isShow',true);
if length(strRec)>1000%%若要显示的字符串长度超过10000,清空显示区
strRec='';
setappdata(handles.figure1,'strRec',strRec);
end
set(handles.xianshi,'string',strRec); %显示数据
%% 处理数据
k=length(shuju);
set(handles.text14,'string',k);
a=rem(k,2);
if a==0
q=shuju(1,k-1); %%x
m=shuju(1,k); %%y
shuzux1=[shuzux1;q];
shuzuy1=[shuzuy1;m];
plot(handles.axes1,shuzux1,shuzuy1,'.m');
end
%%
set(handles.rec,'string',numRec); %更新接收计数
setappdata(handles.figure1,'hasData',false);%更新hasdata标志,表明串口数据已经显示
setappdata(handles.figure1,'isShow',false);%%给数据显示模块解锁
end
]
如果觉得《matlab gui 实时显示数据 GUI 实时显示数据》对你有帮助,请点赞、收藏,并留下你的观点哦!