从电脑COM2口读取数据,并将数据保存在TXT文件中,方便数据分析,下面是M脚本:
%名称:Matlab串口-Lab1
%描述:串口读,并写入txt文件中
s=serial(‘com2’);
s.BytesAvailableFcnMode=‘byte’;%串口设置
s.InputBufferSize=4096;
s.OutputBufferSize=1024;
s.BytesAvailableFcnCount=100;
s.ReadAsyncMode=‘conTInuous’;
s.Terminator=‘CR’;
fopen(s);%打开串口
out=fread(s,10,‘uint8’);%一次读出10个字符
fprintf(‘%3c’,out);%一个字符占三位输出,%c字符,%d整型
fid=fopen(‘serial_data.txt’,‘w+’);%‘a+’读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
fprintf(fid,‘%3c’,out);%写入文件中
fclose(fid);
fclose(s);
delete(s);
2、实验2: 同样的功能,用函数写更规范,代码如下:%打开串口
funcTIonscom=OpenSerial(sname,HReadFcn)
scom=serial(sname);
scom.BytesAvailableFcnMode=‘terminator’;
scom.Terminator=‘。’;
scom.BytesAvailableFcn=HReadFcn;
try
fopen(scom);
catcherr
fprintf(‘%s打开失败。\n’,sname);
end
fprintf(‘%s成功打开。\n’,sname);
end
%写串口
funcTIonWriteSerial(scom,str)
fprintf(scom,str,‘async’);%异步方式
end
%读串口回调函数
funcTIonReadFcn_Com2(obj,~)
n=get(obj,‘BytesAvailable’);
ifn
a=fread(obj,n,‘uchar’);
c=char(a‘);
fprintf(’%s\n‘,c);
end
end
%关闭串口
functionCloseSerial(scom)
try
fclose(scom);
catcherr
fprintf(’%s关闭失败。‘,scom.Name);
return
end
delete(scom);
end
仿真如下,使用虚拟串口连接串口2和3,打开串口调试助手,以默认方式打开com3
在matlab命令框中如下输入命令打开串口com2
》》scom=OpenSerial(‘com2’,@ReadFcn_Com2);
com2成功打开。
向com2写
》》WriteSerial(scom,‘Hello!’);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)