matlab串口编程中 出现这个问题,怎么解决? “A timeout occurred during the write operation.” 源程序

[复制链接]
查看11 | 回复1 | 2011-2-1 13:44:44 | 显示全部楼层 |阅读模式
串口是使用VSPD虚拟出来的两个串口,一发一接受,接收数据后用plot绘制图形。
obj1=instrfind('Type','serial','Port','COM1','Tag','');
obj2=instrfind('Type','serial','Port','COM2','Tag','');
if isempty(obj1)

obj1=serial('COM1');

obj2=serial('COM2');
else

fclose(obj1);

obj1=obj1(1);

fclose(obj2);

obj2=obj2(1);
end
%com1
set(obj1,'BaudRate',9600,'FlowControl','none','Timeout',0.2)
set(obj1,'Inputbuffersize',512,'Outputbuffersize',512,'parity','none','databits',8,'stopbits',1);
%com2
set(obj2,'BaudRate',9600,'FlowControl','none','Timeout',0.2)
set(obj2,'Inputbuffersize',512,'Outputbuffersize',512,'parity','none','databits',8,'stopbits',1);
fopen(obj1);
fopen(obj2);
k=1;
datas=zeros([1,1000]);
while(k<1001)

if obj1.BytesAvailable

datas(1,k)=fread(obj1,1);

end

k=k+1;

plot(datas);

fwrite(obj2,round(255*rand(1)));

pause(0.01);
end
fclose(obj1);
delete(obj1);
fclose(obj2);
delete(obj2);
这个程序能执行,但是总是随机的出错(不是在一定的位置发生错误),有时能执行完,有时执行一半就发生上述错误。这个程序最终目的是想用matlab接收单片机的数据,现在使用虚拟串口进行模拟,这个问题会不会和虚拟串口有关?

回复

使用道具 举报

千问 | 2011-2-1 13:44:44 | 显示全部楼层
随便找个开发板试验下就可以验证是否是虚拟串口问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行