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