MATLAB2021B APP seriallist 串口通信
文章目录
- 前言
- 一、项目需要
- 二、使用步骤
- 1.查找串口填写到查找列表
- 2.发送函数
- 3. 接收函数
- 4.检测串口按钮
- 5.选择串口号
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
项目需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、项目需要
MATLAB 和串口通信为了进一步实现STM32 等单片机通信
二、使用步骤
1.查找串口填写到查找列表
添加初始化函数


代码如下(示例):
% Code that executes after component creationfunction startupFcn(app)comlist=serialportlist;app.DropDown.Items=comlist;end
2.发送函数
点击发送按钮,将数据发送出去, TextArea里面的数据是cell格式,要串口发送要转换成字符数据,这里用了 data=cell2mat(dataToSend);

代码如下(示例):
% Button pushed function: Button_5function send_serial(app, event)dataToSend=app.TextArea.Value;disp(dataToSend)
% dataToSend=(uint8)dataTo;data=cell2mat(dataToSend);% fprintf('com3 %s \n',dataToSend); write(app.Serial_Obj, data,"uint8"); end
3. 接收函数
新建接收函数
输入名称,点击+公共函数

自动生成代码,修改函数名后,添加函数输入参数
参考代码
methods (Access = public)function results = recive(app,src,envent)receivedData = read(app.Serial_Obj, 5, 'char');app.TextArea_2.Value=receivedData; receivedDataStr = char(receivedData); % 显示接收到的数据 disp('Received Data:'); disp(receivedDataStr); end

4.检测串口按钮
% Button pushed function: Button_3
function check_serial(app, event)% global portsapp.ports = serialportlist; % 检查是否有可用的串口 if isempty(app.ports) disp('没有检测到任何串口设备。'); else % 显示串口信息 for i = 1:length(app.ports) fprintf('Port %d: %s\n', i, app.ports(i)); end end% 假设 handles.popupmenu1 是已经创建的 popupmenu 控件 % 创建一个包含多个字符串的单元格数组 % options = {'Oon 1', 'Option 2', 'Option 3'}; % 将这个单元格数组设置为 popupmenu 的 'String' 属性 app.DropDown.Items=app.ports;end
5.选择串口号

function chose_com_v(app, event)value = app.DropDown.Value;
% fprintf('com %s \n',value); switch valuecase 'COM1'fprintf(' com1 \n'); case 'COM2'fprintf('com2 \n'); case 'COM3'fprintf('com3 \n'); endend

完整程序
classdef app1 < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access = public)UIFigure matlab.ui.FigureTextArea_2 matlab.ui.control.TextAreaLabel_2 matlab.ui.control.LabelButton_5 matlab.ui.control.ButtonTextArea matlab.ui.control.TextAreaLabel matlab.ui.control.LabelButton_4 matlab.ui.control.ButtonButton_3 matlab.ui.control.ButtonDropDown matlab.ui.control.DropDownDropDownLabel matlab.ui.control.LabelButton_2 matlab.ui.control.ButtonImage2 matlab.ui.control.ImageImage matlab.ui.control.ImageButton matlab.ui.control.Buttonendproperties (Access = public)
% Property % Descriptionimage1portsSerial_Objend% Callbacks that handle component eventsmethods (Access = private)% Button pushed function: Buttonfunction open_image(app, event)app.image1=imread('img6_1.jpg');
% imshow(image1);% i=imread('1.jpg');app.Image.ImageSource=app.image1;end% Button pushed function: Button_2function open_image2(app, event)app.Image2.ImageSource=app.image1;end% Button pushed function: Button_3function check_serial(app, event)% global portsapp.ports = serialportlist; % 检查是否有可用的串口
if isempty(app.ports) disp('没有检测到任何串口设备。');
else % 显示串口信息 for i = 1:length(app.ports) fprintf('Port %d: %s\n', i, app.ports(i)); end
end% 假设 handles.popupmenu1 是已经创建的 popupmenu 控件
% 创建一个包含多个字符串的单元格数组
% options = {'Oon 1', 'Option 2', 'Option 3'}; % 将这个单元格数组设置为 popupmenu 的 'String' 属性
app.DropDown.Items=app.ports;end% Drop down opening function: DropDownfunction chose_com(app, event)% value = app.DropDown.Value;% x=0:0.01:5;
% y=sin(x);
% switch value
% case '红色'
% plot(app.UIAxes,x,y,'r')
% case '绿色'
% plot(app.UIAxes,x,y,'g')
% case '黄色'
% plot(app.UIAxes,x,y,'y')
% endend% Value changed function: DropDownfunction chose_com_v(app, event)value = app.DropDown.Value;
% fprintf('com %s \n',value); switch valuecase 'COM1'fprintf(' com1 \n'); case 'COM2'fprintf('com2 \n'); case 'COM3'fprintf('com3 \n'); endend% Button pushed function: Button_4function open_seiral(app, event)% 获取所有可用的串口端口号
% portNames = {app.ports(var)}; % 这是一个单元数组 portNames=app.DropDown.Value;% 将单元数组转换为字符串数组(如果需要) portNamesStr = string(portNames); % 在 MATLAB R2016b 及更高版本中可用 % 显示端口号 disp(portNamesStr);% 创建并打开串口 serialComName = portNamesStr;serialBaudrate = 9600;serialDataBit = 8;serialCheckBit = 'none';serialStopBit = 1;% 尝试打开串口tryapp.Serial_Obj=serialport(serialComName,serialBaudrate,"Parity",serialCheckBit,"DataBits",serialDataBit,"StopBits",serialStopBit,"Timeout",1);text1 = '串口打开成功';disp(text1)dataToSend = 'Hello, Serial Port!'; write(app.Serial_Obj, dataToSend, "uint8"); catch% 串口打开失败text = '串口打开失败';disp(text)% 删除串口delete(app.Serial_Obj);endend% Button pushed function: Button_5function send_serial(app, event)dataToSend=app.TextArea.Value;disp(dataToSend)
% dataToSend=(uint8)dataTo;data=cell2mat(dataToSend);% fprintf('com3 %s \n',dataToSend); write(app.Serial_Obj, data,"uint8"); endend% Component initializationmethods (Access = private)% Create UIFigure and componentsfunction createComponents(app)% Create UIFigure and hide until all components are createdapp.UIFigure = uifigure('Visible', 'off');app.UIFigure.Position = [100 100 737 525];app.UIFigure.Name = 'MATLAB App';% Create Buttonapp.Button = uibutton(app.UIFigure, 'push');app.Button.ButtonPushedFcn = createCallbackFcn(app, @open_image, true);app.Button.Position = [98 409 100 24];app.Button.Text = {'打开图像'; ''};% Create Imageapp.Image = uiimage(app.UIFigure);app.Image.Position = [524 275 200 251];% Create Image2app.Image2 = uiimage(app.UIFigure);app.Image2.Position = [525 97 210 200];% Create Button_2app.Button_2 = uibutton(app.UIFigure, 'push');app.Button_2.ButtonPushedFcn = createCallbackFcn(app, @open_image2, true);app.Button_2.Position = [99 354 100 24];app.Button_2.Text = '打开图像2';% Create DropDownLabelapp.DropDownLabel = uilabel(app.UIFigure);app.DropDownLabel.HorizontalAlignment = 'right';app.DropDownLabel.Position = [71 275 66 22];app.DropDownLabel.Text = 'Drop Down';% Create DropDownapp.DropDown = uidropdown(app.UIFigure);app.DropDown.DropDownOpeningFcn = createCallbackFcn(app, @chose_com, true);app.DropDown.ValueChangedFcn = createCallbackFcn(app, @chose_com_v, true);app.DropDown.Position = [152 275 100 22];% Create Button_3app.Button_3 = uibutton(app.UIFigure, 'push');app.Button_3.ButtonPushedFcn = createCallbackFcn(app, @check_serial, true);app.Button_3.Position = [99 191 100 24];app.Button_3.Text = '查找串口';% Create Button_4app.Button_4 = uibutton(app.UIFigure, 'push');app.Button_4.ButtonPushedFcn = createCallbackFcn(app, @open_seiral, true);app.Button_4.Position = [99 120 100 24];app.Button_4.Text = '打开串口';% Create Labelapp.Label = uilabel(app.UIFigure);app.Label.HorizontalAlignment = 'right';app.Label.Position = [278 390 29 22];app.Label.Text = '发送';% Create TextAreaapp.TextArea = uitextarea(app.UIFigure);app.TextArea.Position = [322 354 150 60];% Create Button_5app.Button_5 = uibutton(app.UIFigure, 'push');app.Button_5.ButtonPushedFcn = createCallbackFcn(app, @send_serial, true);app.Button_5.Position = [100 49 100 24];app.Button_5.Text = '发送';% Create Label_2app.Label_2 = uilabel(app.UIFigure);app.Label_2.HorizontalAlignment = 'right';app.Label_2.Position = [279 301 29 22];app.Label_2.Text = '接收';% Create TextArea_2app.TextArea_2 = uitextarea(app.UIFigure);app.TextArea_2.Position = [324 269 150 60];% Show the figure after all components are createdapp.UIFigure.Visible = 'on';endend% App creation and deletionmethods (Access = public)% Construct appfunction app = app1% Create UIFigure and componentscreateComponents(app)% Register the app with App DesignerregisterApp(app, app.UIFigure)if nargout == 0clear appendend% Code that executes before app deletionfunction delete(app)% Delete UIFigure when app is deleteddelete(app.UIFigure)endend
end
总结
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!
相关文章:
MATLAB2021B APP seriallist 串口通信
文章目录 前言一、项目需要二、使用步骤1.查找串口填写到查找列表2.发送函数3. 接收函数4.检测串口按钮5.选择串口号 总结 前言 提示:这里可以添加本文要记录的大概内容: 项目需要: 提示:以下是本篇文章正文内容,下面…...
【Python爬虫系列】_033.Scrapy_分布式爬虫
课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…...
2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码
系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块,旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项,企业可实现精细化管理,提升运营效…...
Android实战经验篇-busybox小工具
Android开发系列文章请转如下链接 Android实战经验篇-系列文章 Android Display Graphics系列文章-汇总 俗话说“工欲善其事,必先利其器!” 在原生Android系统中,提供的基础调试命令是基于toybox的。支持的命令不够全面,而Busy…...
上海艾一公司-运维工程师知识点备战
1.AD域控(ActionDirectory活动目录) ad域的作用:批量管理主机和用户(所以数量要多用这个才合适) 前置1:VM安装Windows镜像 2.IT资产管理 3.会议室管理...
【网络安全】Web安全基础- 第一节:web前置基础知识
目录 前言一、 中间件1.1消息中间件1.2数据库中间件1.3web服务器中间件1.4应用服务器中间件1.5远程过程调用中间件 二、源码**组成部分:**1、**前端(客户端)代码:**2、**后端(服务器端)代码**:3…...
数仓开发那些事_番外(2)
一闪在摸爬滚打了数年后,结合去年获得了个优秀员工,现在负责数据开发一面。 神州员工:一闪,你们还缺人不,不想当外包了。 一闪:我只负责招开发,实施的招聘我参与不了哇。(所以你能…...
Linux常用指令-----下
Linux常用指令------上 Linux常用指令------中 Linux系列 文章目录 Linux系列前言一、more指令二、less指令三、head指令和tail指令四、grep指令五、zip指令和unzip指令六、tar指令1、打包压缩2. 预览3. 解压解包 前言 在上一篇博客中,我給大家介绍了cat指令&#…...
MySQL通过binlog日志进行数据恢复
记录一次阿里云MySQL通过binlog日志进行数据回滚 问题描述由于阿里云远程mysql没有做安全策略 所以服务器被别人远程攻击把数据库给删除,通过查看binlog日志可以看到进行了drop操作,下面将演示通过binlog日志进行数据回滚操作。 1、查询是否开始binlog …...
【AIGC】与模型对话:理解与预防ChatGPT中的常见误解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…...
字符2
strncpy n表示最多拷贝n个字符到目标字符串,当源字符串的字符个数不够时,就拷贝\0直至拷贝n个(源字符串不一定有\0),相对strcpy更加安全 char* strncpy (char* destination, const char* source, size_t n); strncat 当源字符串…...
25年宁德时代社招在职晋升Verify测评SHL题库:语言理解+数字推理考什么?
宁德时代的社招测评采用Verify系统,主要分为两大核心部分:语言理解和数字推理。 1. **语言理解部分**:包括阅读理解、逻辑填空和语句排序等题型。要求应聘者在17分钟内完成30题,旨在考察应聘者的阅读速度、理解准确性和逻辑性。 …...
数据转换:连接数据孤岛,释放信息价值
引言 在当今这个数据驱动的时代,数据转换已成为企业获取竞争优势的关键。随着数据量的爆炸性增长,不同来源、不同格式的数据需要被整合和转换,以便于分析和决策。本文将探讨数据转换的重要性、常见方法、工具以及最佳实践。 数据转换的重要…...
提升PHP技能:18个实用高级特性
掌握PHP基础知识只是第一步。 深入了解这18个强大的PHP特性,将显著提升您的开发效率和代码质量。 1、超越 __construct() 的魔法方法 虽然 __construct() 为大多数开发者所熟知,PHP 却提供了更多强大的魔术方法,例如: class Da…...
MySQL基础操作(2)
目录 1. CONCAT() 2. 3. ! 或 <> 4. IS NULL 5. IS NOT NULL 6. BETWEEN ... AND ... 7. LIKE 8. ORDER BY 9. LIMIT 10. LENGTH() 11. SUBSTR() 12. UPPER() 13. LOWER() 14. CONCAT_WS() 15. REPLACE() 16. INSTR() 17. TRIM() 18. IFNULL() 19. SY…...
Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ
一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…...
web网页前后端交互方式
参考该文, 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单,设置method属性定义发送表单数据的方式是get还是post。 如使用get方式,则提交的数据会在url中显示;如使用post方式,提交…...
LN61C 高精度 低功耗 小封装 电压检测芯片
1、产品概述 LN61C 系列芯片是使用 CMOS 技术开发的高精度、低功耗、 小封装电压检测芯片。检测电压在小温度漂移的情况下保持 极高的精度。客户可选择 CMOS 输出或 Open Drain 输出。 2、产品特点 高精度: 2% 低功耗:2.0A ( VIN1.5V …...
自动驾驶控制与规划——Project 2: 车辆横向控制
目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu,…...
Bootstrap-HTML(五)图像基础样式
Bootstrap-HTML(五)图像基础样式 前言一、圆角图片二、圆形图片三、缩略图四、对齐图像五、图片居中六、响应式图片 前言 在之前的博客中,我们已经详细了解了 Bootstrap5 中诸多实用的组件和样式类,比如徽章与表格等,…...
Phi-3-mini-4k-instruct-gguf完整指南:模型原理、部署、调参、运维一体化
Phi-3-mini-4k-instruct-gguf完整指南:模型原理、部署、调参、运维一体化 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创作等任务。相比完整版模型,…...
如何用AI将视频从24FPS提升到120FPS?Video2X帧插值技术全解析
如何用AI将视频从24FPS提升到120FPS?Video2X帧插值技术全解析 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/v…...
OpenClaw多模态实践:Qwen3.5-9B-VL图文报告自动生成
OpenClaw多模态实践:Qwen3.5-9B-VL图文报告自动生成 1. 为什么需要多模态自动化 去年整理学术文献时,我每天要手动截取论文图表、复制关键数据、整理成Markdown笔记。这个过程不仅耗时,还经常漏掉重要细节。直到发现OpenClaw可以对接Qwen3.…...
OpenClaw 是基于 Node.js 开发的本地 AI 智能体网关,部署核心是先装 **Node.js ≥ 22**,再用 npm 全局安装并完成配置向导
OpenClaw 是基于 Node.js 开发的本地 AI 智能体网关,部署核心是先装 Node.js ≥ 22,再用 npm 全局安装并完成配置向导。以下是完整部署流程: 一、环境准备(必做) 1. 安装 Node.js 22 OpenClaw 要求 Node.js ≥ 22&…...
C++ 性能评测工程:基于 Google Benchmark 的 C++ 函数级性能基准测试方法论
各位技术同仁,下午好!今天,我们将深入探讨一个在C开发中至关重要的话题:C 函数级性能基准测试。尤其是在追求极致性能的C世界里,仅仅依靠经验和直觉来优化代码是远远不够的。我们需要一套科学、严谨的方法论来量化和评…...
宁德时代2026春招开启:6000+offer,这一轮机会在扩大
很多人现在还在犹豫一个问题:新能源是不是已经开始降温了?现在再投,还能不能拿到好的岗位?但从今年的招聘情况来看,趋势其实很清晰:岗位没有减少,而是在结构性增加。尤其是动力电池、储能、电池…...
数据科学驱动的自动化分析:缠论量化开源工具包的技术实践与价值
数据科学驱动的自动化分析:缠论量化开源工具包的技术实践与价值 【免费下载链接】chanvis 基于TradingView本地SDK的可视化前后端代码,适用于缠论量化研究,和其他的基于几何交易的量化研究。 缠论量化 摩尔缠论 缠论可视化 TradingView TV-SD…...
汽车动力性能计算工具插件:一键测算电机需求与整车性能,工程师专属轻量级辅助软件
温馨提示:文末有联系方式插件核心功能亮点 本款汽车动力性系统专用计算小工具,可精准推演电机功率与扭矩需求,同步输出整车加速性能、最大爬坡度、最高稳定车速等关键动力参数,覆盖常规工况与典型驱动场景,满足前期方案…...
Phi-4-mini-reasoning推理模型5分钟快速上手:数学题逻辑题一键解答
Phi-4-mini-reasoning推理模型5分钟快速上手:数学题逻辑题一键解答 1. 为什么选择Phi-4-mini-reasoning? 如果你经常需要解决数学题、逻辑题或者需要一步步分析的问题,Phi-4-mini-reasoning就是为你量身定制的AI助手。这个模型不像那些通用…...
Android定时开关机的5种实现方式对比:哪种最适合你的设备?
Android定时开关机技术全景解析:从系统API到硬件层控制的深度实践 在智能设备管理领域,定时开关机功能一直是工业控制、物联网终端和定制化Android设备的核心需求之一。想象一下,你正在部署一批智能售货机,需要在营业时间自动唤醒…...
