初级会员
- 积分
- 161
- 金钱
- 161
- 注册时间
- 2016-10-19
- 在线时间
- 36 小时
|
楼主 |
发表于 2017-11-15 21:46:09
|
显示全部楼层
本帖最后由 dmfy 于 2017-11-15 22:03 编辑
就是在上位机串口中断里面需要限制曲线长度,我每次都将接受到的数据写进一个数组,然后每次中断都利用数组画图,如果不限定这些数组的长度,那么到最后这数组会越来越大,自然就会越来越卡,限定后,只要数组长度超过限定值,抛弃数组第一个,将新数据放在数组尾部,这样就不会出现卡顿延迟了。
如: if (length(Xzhou)) >= 400 %% 限定坐标轴X的数组长度,
Xzhou = Xzhou(1,2:end); %% 数组长度一旦超过400就丢弃第1列的值
end
if (length(YData_r)) >= 400
YData_r =YData_r(1,2:end);
end
其中 Xzhou、YData_r 都为数组,在定义的时候
Xzhou=(0); %% 初始化,
YData_r=(0); %% 初始化,
#############################################################
另外matlab里面的画图需要在串口中断外先用画好曲线L,然后在中断里面更新L对应的坐标系就可以了,每次在中断里面都用plot一遍的话,也是会越来越卡的。
中断外:L1=plot(handles.Axes,Xzhou,YData_r,'r','MarkerSize',0.1,'LineWidth',0.05); % 先画图
中断里面:set(L1,'XData',Xzhou,'YData',YData_r); %% 定义XY的坐标值 % 更新坐标轴
|
|