Matlab使用串口和下位机通信(解决下位机重启问题)

Matlab使用串口功能时,发现发送数据会让下位机重启,检测发现有自动下载电路的单片机,一般会让DTR位通过三极管控制下位机的EN位或者RST位以达到复位的效果。

delete(instrfindall);   %关闭所有串口
handlesUart = serial(Com5);   %创建串口对象
%初始化串口
set(handlesUart,BaudRate,115200,DataBits,8,Parity,none,Stopbits,1);
set(handlesUart,Terminator,CR);%设置终止符号为CR
set(handlesUart,InputBufferSize,1024);%输入缓存区为1024B 
set(handlesUart,OutputBufferSize,2048);%输出缓存区为2048B
% 设置串口数据最大读写时间,如果超过这个时间,仍读取不到数据,那么则终止读写
set(handlesUart,Timeout,10000);

set(handlesUart,BytesAvailableFcnMode,byte);%设置串口中断响应模式,byte是达到一定字节数,terminator是某个按键
set(handlesUart,BytesAvailableFcnCount,1);%接受缓存区接受到2B,触发回调函数
set(handlesUart,BytesAvailableFcn,{
          
   @instrcallback});%得到回调函数句柄
handlesUart.DataTerminalReady=on;   %设置DTR,一般的单片机一键下载功能是把DTR位设置为低达到复位单片机
handlesUart.RequestToSend=off;
fopen(handlesUart);%打开串口
str = 123456;
fwrite(handlesUart,str);%发送数据

%回调函数
function instrcallback(obj,event)
TWM = fscanf(obj);%读取出来的就是字符
disp(TWM);
end

%下面是关闭串口,但是执行了这几条语句就无法执行回调函数,因此注释
%fclose(handlesUart);%关闭串口操作
%delete(handlesUart);
%clear handlesUart;
经验分享 程序员 微信小程序 职场和发展