matlab学习笔记2:搭建简易的串口,并将数据保存至csv

1搭建简易串口

使用matlab搭建串口需要注意以下几个注意事项:
1.进行串口初始化之前先删除所有串口设备,这可以有效防止由于串口被占用造成的串口初始化失败。
2.初始化串口需要配置串口号,波特率,触发方式以及回调函数入口。
3.每次中断成功之后都会跳转至回调函数,在回调函数中使用主函数的变量,必须在回调函数的()内部声明,或者使用全局变量。基本声明形式为:

function Callback(obj,~)%obj为串口的形参

2写入文件到csv

这一步在回调函数里面实现,即每次进入回调函数,便以追加的形式往文件里填入数据。这一步有以下几个注意事项:
1.写入文件,这里需要配置文件的读写限制。

filename2 = 'E:\4.csv';%打开文件
fid2 = fopen(filename2, 'a+');%以追加的方式写入数据

2.读取串口数据并写入文件,重点在于fscanf和fprintf的使用。

out=fscanf(obj,"%d,%d,%d",[1,3])%把数据存入1行3列的矩阵
fprintf(fid2,'%d,%d,%d\n',out(1,1),out(1,2),out(1,3));%写入文件

3.通过静态变量配置读取数据的次数,由于在程序结束静态变量内存不释放,只有关闭matlab,静态变量的内存才被清除。

persistent x; %静态变量
if isempty(x)
x=0;
end
clear x;%清除静态变量

4.关闭文件和串口。

fclose(fid2);
fclose(obj);

3完整程序

function serial_matlab()
delete(instrfindall);%删除所有串口设备
s=serial('com5');
set(s,'BaudRate',115200);
set(s,'BytesAvailableFcnMode','Terminator');%设置中断触发方式,当读取到一个特殊字节时中断
set(s,'Terminator','CR/LF');%换行
s.BytesAvailableFcn=@Callback;
fopen(s);
end 

function Callback(obj,~)
persistent x; %静态变量
if isempty(x)
x=0;
end

filename2 = 'E:\4.csv';%打开文件
fid2 = fopen(filename2, 'a+');%以追加的方式写入数据

out=fscanf(obj,"%d,%d,%d",[1,3])%把数据存入1行3列的矩阵
fprintf(fid2,'%d,%d,%d\n',out(1,1),out(1,2),out(1,3));%写入文件

x=x+1
if (x==10)
    clear x;%清除静态变量
    fclose(fid2);
    fclose(obj);
end
end

版权声明:本文为weixin_38494129原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。