基于MATLAB GUI的串口通信

基于MATLAB GUI的串口通信之前学过单片机对于串口通信比较了解最近在学习MATLAB发现它还可以控制串口于是通过MATLAB的GUI创建了一个串口通信的小软件效果如下如果没有单片机或者其他硬件的话我们可以直接用软件模拟串口本人选择了ConfigureVirtualSerialPortDriver这个软件软件网上就有下一个使用几天就行了 选…

大家好,又见面了,我是你们的朋友全栈君。

之前学过单片机 对于串口通信比较了解 

最近在学习MATLAB   发现它还可以控制串口   于是通过MATLAB 的GUI创建了一个串口通信的小软件

效果如下 

 

基于MATLAB GUI的串口通信

 

如果没有单片机或者其他硬件的话 我们可以直接用软件模拟串口  本人选择了Configure Virtual Serial Port Driver  这个软件   软件网上就有  下一个使用几天就行了  

 

选择两个没有被占用的串口  点击Add pair 会发现左边多出了一对串口  这对串口现在已经连接在了一起    我的是COM1和COM2    现在如果往    COM1发信息 那么COM2就会接收到  之后我通过MATLAB的  uicontrol 函数搭建了  UI界面 并逐步实现了 串口通信 布局代码如下

基于MATLAB GUI的串口通信

 

 

 

 

 

 

 

 

 

打开串口以及接收数据  以及动态显示的代码如下

function openserial(h1,h2,h3,h4,h5,h6,h7)
    global s;
    baud=[600,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800];
    v1=get(h1,’value’);
    v2=get(h2,’value’);
    m=strcat(‘com’,num2str(v1));
    if strcmp(get(gco,’string’),’打开串口’)
        try 
            s = serial(m);
            fopen(s);                 %打开串口  
            set(s,’BytesAvailableFcnMode’,’Terminator’); %设置中断触发方式  
            set(s,’Terminator’,’H’,’BaudRate’,baud(v2),’DataBits’,7); 
            set(s,’BytesAvailableFcn’,{@ReceiveCallback,h3,h4,h5,h6,h7});
%             s.BytesAvailableFcn =@ReceiveCallback;       % 定义中断响应函数对象  
            set(gco,’string’,’关闭串口’);
            msgbox([‘打开’,m,’成功’]);
        catch err
            msgbox(‘打开失败’);
        end
    else
      try
        fclose(s);
        set(gco,’string’,’打开串口’);
        msgbox([‘关闭’,m,’成功’]);
      catch err
        msgbox(‘关闭失败’);
      end
        delete(s);
    end
end

function ReceiveCallback(obj,event,h3,h4,h5,h6,h7)     %创建中断响应函数  
   global s;  
   global a;
   global recnuma;
   global recstr;
   global x;
   global y;
   global ii;
   a = fscanf(s);      % 接收数据并显示(无分号) 
   a(end)=[];
   if(strcmp(get(h5,’string’),’关闭接收’))
       recstr=strcat(recstr,a);
       recnuma=recnuma+length(a);
   end
   set(h3,’string’,num2str(recnuma));
   set(h4,’string’,recstr);
   if(get(h7,’value’)==1)
       m=str2double(a);
       x=[x ii];
       y=[y m];
       set(h6,’XData’,x,’YData’,y);
       ii=ii+1;
       axis([ii-100,ii+100,-100,100]);
   end
end 

 

这时就可以选择一个串口助手  发送数据  在 MATLAB中打开相应串口并使能接收  就看到数据的显示了

 

基于MATLAB GUI的串口通信

 

如果在串口中一直发送数据  同时在MATLAB中点击使能绘图 在Axes框中就会出现  每一时刻接收的  数据的图   具体效果如下

 

基于MATLAB GUI的串口通信

代码下载地址: https://download.csdn.net/download/qq_34020487/9992347

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131334.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月12日 下午3:00
下一篇 2022年6月12日 下午3:00


相关推荐

  • CVE-2022-23131——绕过 SAML SSO 身份验证

    CVE-2022-23131——绕过 SAML SSO 身份验证漏洞描述安全断言标记语言 SAML 是最常见的单点登录 SSO 标准之一 围绕 XML 实现 它允许身份提供者 IdP 一个能够对用户进行身份验证的实体 告诉服务提供者 SP 这里是 Zabbix 你是谁 您可以将 ZabbixWeb 前端配置为允许通过 SAML 进行用户身份验证 但默认情况下不启用它 因为它需要了解身份提供者的详细信息 这是企业部署最常见的设置 在启用 SAMLSSO 身份验证的实例上 它允许绕过身份验证并获得管理员权限 攻击者可以使用此访问权限在链接的 ZabbixSer

    2026年3月26日
    2
  • windows比cmd更强大的 WMIC命令使用详解

    windows比cmd更强大的 WMIC命令使用详解文章目录什么是 wmic WMIC 能做什么 WMIC 命令使用帮助文档 WMIC 命令使用实例 wmic 的运行方式可以有两种法 1 显示进程的详细信息 2 停止 暂停和运行服务功能 3 显示出 BIOS 信息 4 停止进程的操作 5 连接远程电脑 6 BIOS 基本输入 输出服务 BIOS 管理 7 WMIC 设置 IP 地址 8 COMPUTERSYST 计算机系统管理 9 CPU CPU 管理 10 DATA

    2026年3月17日
    2
  • 质量工具因果图_质量管理因果图例题

    质量工具因果图_质量管理因果图例题前言在项目中,我们经常需要用到不同的工具对项目质量进行评审。使用不同的质量工具可能得到的结果不太一样。下面简单说下项目中常用到的质量分析工具因果图。释义:什么是因果图因果图又称为石川图、Ishikawa或鱼骨图,它把影响质量诸因素之间的关系以树状图的方式表示出来,使人一目了然,便于分析原因并采取相应的措施。它是一种在问题发生后,寻找根本原因的一种方法。它取名石川图是因为它是由日

    2022年8月14日
    11
  • JS数组转字符串(3种方法)和字符串转数组(2种)

    JS数组转字符串(3种方法)和字符串转数组(2种)一 数组转字符串 3 种方法 同样是数组转字符串 toString toLocaleStri join join 的区别是什么 JavaScript 允许数组与字符串之间相互转换 其中 Array 方法对象定义了 3 个方法 可以把数组转换为字符串 如表所示 数组方法说明 toString 将数组转换成一个字符串 toLocaleStri 把数组转换成本地约定的字符串 join 将数组元素连接起来以构建一个字符串 1 join 方法

    2025年7月30日
    5
  • Hunyuan-MT 7B与STM32嵌入式系统集成:边缘设备翻译方案

    Hunyuan-MT 7B与STM32嵌入式系统集成:边缘设备翻译方案

    2026年3月16日
    2
  • wing是什么_完全二叉树的深度

    wing是什么_完全二叉树的深度设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree的左子树的加分 × subtree的右子树的加分 + subtree的根的分数若某个子树为空,规定其加分为 1。叶子的加分就是叶节点本身的分数,不考虑它的空子树。试求一棵符合中序遍历为(1,2,

    2022年8月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号