当前位置: 首页 > 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;…...

bain.js(十二):RNN神经网络实战教程 - 音乐乐谱生成 -人人都是作曲家~

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍&#xff08;二&#xff09;&#xff1a;项目集成方式详解&#xff08;三&#xff09;&#xff1a;手把手教你配置和训练神经网络&#xff08;四&#xff09…...

Endnote | 查看文献所在分组

软件版本&#xff1a;Endnote X8 第一种方式&#xff1a; 在文献上右键——记录摘要&#xff0c;即可在弹出页面上看到自定义和智能组的分组情况。 第二种方式&#xff1a; 在菜单栏点击文献——记录摘要&#xff0c;也可以查看分组情况。 注&#xff1a; 新版本的endnote软件…...

DateRangePickerDialog组件的用法

文章目录 概念介绍使用方法示例代码我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍DateRangePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的DateRangePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为…...

数据库合并操作:深入理解 MERGE INTO 语句

在数据管理和操作中&#xff0c;我们常常面临着将源数据合并到目标表中的需求。无论是对现有记录进行更新&#xff0c;还是对缺失的记录进行插入&#xff0c;甚至有时候需要删除不再符合条件的记录&#xff0c;这些操作通常都需要多条 SQL 语句来完成。然而&#xff0c;SQL 中有…...

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商

MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块&#xff0c;是一个高度集成的基带平台&#xff0c;包括调制解调器和应用处理子系统&#xff0c;启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…...

计算机网络技术基础:6.数据传输方式

数据传输是指利用信号把数据从发送端传送到接收端的过程&#xff0c;通常可以从多个不同的角度对数据传输方式进行描述。 一、并行传输和串行传输 数据在信道上传输时&#xff0c;按照使用信道的多少可以分为串行传输和并行传输两种方式。 1.串行传输 在计算机中&#xff0c;…...

免费开源了一个图床工具 github-spring-boot-starter

文章目录 第一步&#xff0c;新建一个SpringBoot项目第二步&#xff0c;在pom文件里面引入jar包第三步&#xff0c;配置你的github信息github.authorization1、进入github官网&#xff0c;登录账号&#xff0c;点击头像&#xff0c;选择setting2、选择[Developer Settings](htt…...

Mysql之YUM安装时GPG 密钥报错问题处理

一、背景说明 使用YUM安装mysql5.7的时候报错&#xff0c;报错信息提示未安装公钥。博主查看/etc/yum.repos.d/mysql-community.repo配置文件中关于公钥的配置&#xff0c;确实启用了公钥验证&#xff0c;博主再排查过程中还是走了一些弯路&#xff0c;最终顺利解决了&#xff…...

Hw亮度省电

1. 亮度控制策略 /decompile-hw/decompile/app/HwPowerGenieEngine3/src/main/res/xml/backlight_policy.xml <?xml version"1.0" encoding"utf-8"?> 2 <backlight_policy xmlns:android"http://schemas.android.com/apk/res/android&qu…...

【信息系统项目管理师-论文真题】2015下半年论文详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论题一:大项目或多项目的成本管理解题思路写作要点论题二:项目的采购管理解题思路写作要点论题一:大项目或多项目的成本管理 随着移动互联网、物联网、云计算、大数据等新一代信息技术的广泛应用,我国目前…...