串口是使用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接收单片机的数据,现在使用虚拟串口进行模拟,这个问题会不会和虚拟串口有关?
|