基于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • THINKPHP框架的优秀开源系统推荐

    THINKPHP框架的优秀开源系统推荐

    2021年10月21日
    45
  • linux0.11_linux命令vim什么意思

    linux0.11_linux命令vim什么意思前言所有的UnixLike系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的

    2022年7月31日
    8
  • 什么是国际顶级域名?

    什么是国际顶级域名?

    2021年9月21日
    52
  • 关于用户路径分析模型_spark用户行为分析

    关于用户路径分析模型_spark用户行为分析一、需求背景在互联网数据化运营实践中,有一类数据分析应用是互联网行业所独有的——路径分析。路径分析应用是对特定页面的上下游进行可视化展示并分析用户在使用产品时的路径分布情况。比如:当用户使用某APP时,是怎样从【首页】进入【详情页】的,用户从【首页】分别进入【详情页】、【播放页】、【下载页】的比例是怎样的,以及可以帮助我们分析用户离开的节点是什么。在场景对应到具体的技术方案设计上,我们将访问数据根据session划分,挖掘出用户频繁访问的路径;功能上允许用户即时查看所选节点相关路径,支持用户自定义设

    2022年8月24日
    6
  • 使用awk数组进行求和[通俗易懂]

    使用awk数组进行求和[通俗易懂]使用awk求出三个人消费的累计金额

    2022年7月19日
    43
  • 离散 单射 满射 双射

    离散 单射 满射 双射单射双射满射阐述一下什么是单射,双射,满射1.单射:对于每一个不同的x都有不同的y,即x1!=x2–>y1!+y2条件:|X|<=|Y|2.满射:对于每一个y都有x与之对应条件:|Y|<=|X|3.双射:既是单射又是满射条件:|X|=|Y|代码实现通过map函数建立映射1.单射:map<int,int>BuildInjection(vector<int>src,vector<int>dst){map&l

    2022年6月10日
    34

发表回复

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

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