老师您好,请问您说的“加入一个逻辑变量 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

]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐