matlab可不可以把串口采集的数据实时进行显示呢?
2个回答
展开全部
可以的,简单一点的话会很简单,数据自己解析,一下只是个例子
function initCtrl(com)
global data
t=cputime;
data=[t;0];
global s_p;
global fig;
fig= plot(0,0,...
'EraseMode','background','MarkerSize',5);
try
s_p=serial(com);
catch
error('Can''t create serial object');
end
%设定串口对象属性,波特率默认9600
s_p.BytesAvailableFcnMode='byte';
s_p.BytesAvailableFcnCount=1;
s_p.BytesAvailableFcn=@ctrlcom;
%打开串口
fopen(s_p);
设置了一个Callback,ctrlcom,根据接收到的串口数据来动态绘图
function ctrlcom(obj,event)
global fig
global data
if('BytesAvailable'==event.Type)
d=fread(obj,1,'int8');
t=cputime;
m=[t-data(1,1);d];
data=[data m];
len=size(data,2);
set(fig'XData',data(1,2:len),'YData',data(2,2:len))
drawnow
axis([0 data(1,data(1,len) 0 255]);
end
关闭端口,删除对象,释放资源:
function closeCtrl()
global s_p;
fclose(s_p);
delete(s_p);
参考http://blog.sina.com.cn/s/blog_4513dde60100o6uw.html
http://apps.hi.baidu.com/share/detail/14842492
function initCtrl(com)
global data
t=cputime;
data=[t;0];
global s_p;
global fig;
fig= plot(0,0,...
'EraseMode','background','MarkerSize',5);
try
s_p=serial(com);
catch
error('Can''t create serial object');
end
%设定串口对象属性,波特率默认9600
s_p.BytesAvailableFcnMode='byte';
s_p.BytesAvailableFcnCount=1;
s_p.BytesAvailableFcn=@ctrlcom;
%打开串口
fopen(s_p);
设置了一个Callback,ctrlcom,根据接收到的串口数据来动态绘图
function ctrlcom(obj,event)
global fig
global data
if('BytesAvailable'==event.Type)
d=fread(obj,1,'int8');
t=cputime;
m=[t-data(1,1);d];
data=[data m];
len=size(data,2);
set(fig'XData',data(1,2:len),'YData',data(2,2:len))
drawnow
axis([0 data(1,data(1,len) 0 255]);
end
关闭端口,删除对象,释放资源:
function closeCtrl()
global s_p;
fclose(s_p);
delete(s_p);
参考http://blog.sina.com.cn/s/blog_4513dde60100o6uw.html
http://apps.hi.baidu.com/share/detail/14842492
2011-09-22
展开全部
应该 可以
不过,难度不小
建议去 百度文库 里搜搜
不过,难度不小
建议去 百度文库 里搜搜
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询