当前位置: 首页 > news >正文

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.选择串口号 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…...

【Python爬虫系列】_033.Scrapy_分布式爬虫

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…...

2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码

系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块&#xff0c;旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项&#xff0c;企业可实现精细化管理&#xff0c;提升运营效…...

Android实战经验篇-busybox小工具

Android开发系列文章请转如下链接 Android实战经验篇-系列文章 Android Display Graphics系列文章-汇总 俗话说“工欲善其事&#xff0c;必先利其器&#xff01;” 在原生Android系统中&#xff0c;提供的基础调试命令是基于toybox的。支持的命令不够全面&#xff0c;而Busy…...

上海艾一公司-运维工程师知识点备战

1.AD域控&#xff08;ActionDirectory活动目录&#xff09; ad域的作用&#xff1a;批量管理主机和用户&#xff08;所以数量要多用这个才合适&#xff09; 前置1&#xff1a;VM安装Windows镜像 2.IT资产管理 3.会议室管理...

【网络安全】Web安全基础- 第一节:web前置基础知识

目录 前言一、 中间件1.1消息中间件1.2数据库中间件1.3web服务器中间件1.4应用服务器中间件1.5远程过程调用中间件 二、源码**组成部分&#xff1a;**1、**前端&#xff08;客户端&#xff09;代码&#xff1a;**2、**后端&#xff08;服务器端&#xff09;代码**&#xff1a;3…...

数仓开发那些事_番外(2)

一闪在摸爬滚打了数年后&#xff0c;结合去年获得了个优秀员工&#xff0c;现在负责数据开发一面。 神州员工&#xff1a;一闪&#xff0c;你们还缺人不&#xff0c;不想当外包了。 一闪&#xff1a;我只负责招开发&#xff0c;实施的招聘我参与不了哇。&#xff08;所以你能…...

Linux常用指令-----下

Linux常用指令------上 Linux常用指令------中 Linux系列 文章目录 Linux系列前言一、more指令二、less指令三、head指令和tail指令四、grep指令五、zip指令和unzip指令六、tar指令1、打包压缩2. 预览3. 解压解包 前言 在上一篇博客中&#xff0c;我給大家介绍了cat指令&#…...

MySQL通过binlog日志进行数据恢复

记录一次阿里云MySQL通过binlog日志进行数据回滚 问题描述由于阿里云远程mysql没有做安全策略 所以服务器被别人远程攻击把数据库给删除&#xff0c;通过查看binlog日志可以看到进行了drop操作&#xff0c;下面将演示通过binlog日志进行数据回滚操作。 1、查询是否开始binlog …...

【AIGC】与模型对话:理解与预防ChatGPT中的常见误解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…...

字符2

strncpy n表示最多拷贝n个字符到目标字符串&#xff0c;当源字符串的字符个数不够时&#xff0c;就拷贝\0直至拷贝n个(源字符串不一定有\0&#xff09;&#xff0c;相对strcpy更加安全 char* strncpy (char* destination, const char* source, size_t n); strncat 当源字符串…...

25年宁德时代社招在职晋升Verify测评SHL题库:语言理解+数字推理考什么?

宁德时代的社招测评采用Verify系统&#xff0c;主要分为两大核心部分&#xff1a;语言理解和数字推理。 1. **语言理解部分**&#xff1a;包括阅读理解、逻辑填空和语句排序等题型。要求应聘者在17分钟内完成30题&#xff0c;旨在考察应聘者的阅读速度、理解准确性和逻辑性。 …...

数据转换:连接数据孤岛,释放信息价值

引言 在当今这个数据驱动的时代&#xff0c;数据转换已成为企业获取竞争优势的关键。随着数据量的爆炸性增长&#xff0c;不同来源、不同格式的数据需要被整合和转换&#xff0c;以便于分析和决策。本文将探讨数据转换的重要性、常见方法、工具以及最佳实践。 数据转换的重要…...

提升PHP技能:18个实用高级特性

掌握PHP基础知识只是第一步。 深入了解这18个强大的PHP特性&#xff0c;将显著提升您的开发效率和代码质量。 1、超越 __construct() 的魔法方法 虽然 __construct() 为大多数开发者所熟知&#xff0c;PHP 却提供了更多强大的魔术方法&#xff0c;例如&#xff1a; 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&#xff0c;贴近Linux的线上环境&#xff1b; 2 RabbitMQ用erlang语言编写的&#xff0c;先安装erlang的运行环境&#xff1b; 2 用Linux的apt-get命令安装&#xff0c;解决软件依赖…...

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…...

LN61C 高精度 低功耗 小封装 电压检测芯片

1、产品概述 LN61C 系列芯片是使用 CMOS 技术开发的高精度、低功耗、 小封装电压检测芯片。检测电压在小温度漂移的情况下保持 极高的精度。客户可选择 CMOS 输出或 Open Drain 输出。 2、产品特点 高精度&#xff1a; 2% 低功耗&#xff1a;2.0A &#xff08; VIN1.5V …...

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…...

Bootstrap-HTML(五)图像基础样式

Bootstrap-HTML&#xff08;五&#xff09;图像基础样式 前言一、圆角图片二、圆形图片三、缩略图四、对齐图像五、图片居中六、响应式图片 前言 在之前的博客中&#xff0c;我们已经详细了解了 Bootstrap5 中诸多实用的组件和样式类&#xff0c;比如徽章与表格等&#xff0c;…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...