基于MATLAB GUI的串口通信

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

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

效果如下 

 

 

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

 

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

 

 

 

 

 

 

 

 

 

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

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中点击使能绘图 在Axes框中就会出现  每一时刻接收的  数据的图   具体效果如下

 

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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页