基于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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • springboot 启动的时候加载外部配置文件_java读取外部配置文件

    springboot 启动的时候加载外部配置文件_java读取外部配置文件springboot启动读取外部配置文件  有时候项目打包成一个jar或者war,通过java-jar命令运行springboot项目,因为springboot项目有自己的application.properties配置文件,但是我们打完包之后,它也会打到包里边,倒是也能打开压缩包修改properties文件,但是也是较为麻烦。  现在有如下需求,比如客户需要在很多个服务器…

  • 什么是正则化_lo正则化求解方式

    什么是正则化_lo正则化求解方式COUTCutout[1]是一种新的正则化方法。原理是在训练时随机把图片的一部分减掉,这样能提高模型的鲁棒性。它的来源是计算机视觉任务中经常遇到的物体遮挡问题。通过cutout生成一些类似被遮挡的物体,不仅可以让模型在遇到遮挡问题时表现更好,还能让模型在做决定时更多地考虑环境(context)。Theimplementationofcout1.自己码importtorchimpo…

  • MCDEX 与 Celer cBridge 达成合作,将更多用户带向以太坊二层

    MCDEX 与 Celer cBridge 达成合作,将更多用户带向以太坊二层我们很高兴地宣布,MCDEX已与Celer达成合作并集成了cBridge,让用户能够以更低的成本和延迟在部署于Arbitrumrollup上的MCDEX中桥接来自其他一层链和以太坊二层的资产。CelercBridge还允许MCDEX用户跳过Arbitrum的7天等待期,以提高DeFi流动性及交易效率,进一步推动对MCDEX的采用。用户现可通过MCDEX上的集成链接访问cBridge。此外,cBridge还将支持MCDEX的治理代币MCB从Arbitrum到以太坊的跨链快速提…

  • Java输入输出

    源代码见:点击打开链接引言:在平时java开发中,被输入输出搞得头疼。特此写下这篇博客,一是为了总结输入输出,二是为了和大家分享。如果大家觉得写得好,就请高抬贵手点个赞呗!!!1.输入格式,输出格式控制1.1输入处理java的输入,我们用到Scanner类,可以用它创建一个对象Scannerreader=newScanner(System.in);…

  • linux 磁盘碎片整理

    linux 磁盘碎片整理1、sudofdisk-l查看各分区情况2、sudoe4defrag-c/dev/sda2查看碎片情况3、sudoe4defrag-v/dev/sda2碎片整理

  • jdk9新特性

    jdk9新特性jdk目录结构变化JDK=JRE+开发工具集(javac编译工具等)JRE=JVM+JavaSE标准类库jdk8的目录结构:jdk9目录结构:模块化先创建两个modul

发表回复

您的电子邮箱地址不会被公开。

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