MATLAB GUI 实现串口通信,制作串口助手(附关键代码)

使用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系列“视频课”来啦~~

【图像算法&MATLAB】一文讲明白:图像的直方图均衡化(附作者自编源代码)

【探测器与相机标准】我对图像(图像传感器/相机)“非均匀性”的理解与学习笔记

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值