使用matlab写了一个串口助手如下:
目前完成了第一版本,后续我会不断优化。
关键代码:
%%串口发送模块
%检查端口是否在线--串口
if isempty(app.sObject)
StrArrayNew={
'串口未连接 '};
logRefresh_func(app,StrArrayNew);
return
end
%按照空格键将字符串拆分
%将1*1的字符串数组拆分成1*n的字符串数组
temp=cellstr(app.TextArea_Send.Value);
C=strsplit(temp{
1});
nn=length(C);
decData=zeros(1,nn);
for ii=1:nn
decData(ii)=hex2dec(C(ii));
end
%开始发送
fwrite(app.sObject, decData,'uint8'); % 以二进制形式向obj写入数据dataSend
xx=decMat2binMat_func(app,decData);
stairs(app.UIAxes,xx,'b-');
app.UIAxes.YLim=[-1,2];
%发送完成,日志显示
StrArrayNew={
'<-',temp{
1}};
logRefresh_func(app,StrArrayNew);
value = app.Button_OpenSeriCom.Value;
%%创建串口以及判断串口状态
switch value
case 1
%串口创建
delete(instrfindall);%注销系统之前已经打开的串口资源
try
seriComName=app.DropDown_SeriComName.Value;
app.sObject=serial(seriComName);%创建串口
catch
StrArrayNew={
'error:该串口可能被别的应用占用或串口命名错误!'};
logRefresh_func(app,StrArrayNew);
return;
end
set(app.sObject,'inputBufferSize',1024) %设置输入缓冲区域为1K,单位字节
set(app.sObject,'outputBufferSize',1024) %设置输出缓冲区域为1K,单位字节
set(app.sObject,'ReadAsyncMode','continuous'); %设置数据读取模式
set(app.sObject,'Timeout',0.5);%设置一次写入或者读入操作完成最大时间为0.5s,单位为秒
set(app.sObject,'Terminator','LF');%触发中断的字符(一般是"换行符"LF)
set(app.sObject,'BaudRate',str2double(app.DropDown_BaudRate.Value)); %设置波特率
% set(app.sObject,'BaudRate',app.DropDown_BaudRate.Value); %设置校验位
% set(app.sObject,'BaudRate',app.DropDown_BaudRate.Value); %设置数据位
% set(app.sObject,'BaudRate',app.DropDown_BaudRate.Value); %设置停止位
% set(app.sObject,'BaudRate',app.DropDown_BaudRate.Value); %设置停止位
if app.sObject.Status == "closed"
% 打开串口
try
fopen(app.sObject);
catch
StrArrayNew={
'error:该串口可能被别的应用占用或串口命名错误'};
logRefresh_func(app,StrArrayNew);
return
end
if(app.sObject.Status == "open")
app.Lamp_seriComStatus.Color="green";
StrArrayNew={
'msg:串口打开成功'};
logRefresh_func(app,StrArrayNew);
else
app.Lamp_seriComStatus.Color="red";
StrArrayNew={
'error:串口打开失败'};
logRefresh_func(app,StrArrayNew);
end
else
app.Lamp_seriComStatus.Color="yellow";
StrArrayNew={
'error:串口被占用'};
logRefresh_func(app,StrArrayNew);
end
case 0
%断开串口
delete(instrfindall);
app.sObject=[];
app.Lamp_seriComStatus.Color="red";
StrArrayNew={
'msg:串口已断开'};
logRefresh_func(app,StrArrayNew);
end
需要下载该app的同学,通过网盘可下载。
app 文件链接如下:
https://pan.baidu.com/s/1vLNekFZCdw1GSRg7sn_JZg
链接:https://pan.baidu.com/s/1vLNekFZCdw1GSRg7sn_JZg
提取码:0814
附: 更多阅读
【MATLAB-app】系列教程(含视频)00_csdn上第一套关于matlab appdesigner系列“视频课”来啦~~