⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled.m

📁 matlab环境下的多路串口数据实时绘图显示
💻 M
📖 第 1 页 / 共 5 页
字号:


function   bluesky

global  hmainfig  sampletime;
sampletime=1;
global  hinput1  hinput2;
global  hcurrent  hresult;

def11={'mV','mA','mV','mA','mV','mA','mV','mA'};
fields11={'ch1units','ch2units','ch3units','ch4units','ch5units','ch6units','ch7units','ch8units'};      %该结构体的字段名。
hinput1=cell2struct(def11,fields11,2);                                               %对结构体hinput1进行初始化。

def22={'1','1','1','1','1','1','1','1'};
fields22={'equation1','equation2','equation3','equation4',...                                                              %该结构体的字段名。   
            'equation5','equation6','equation7','equation8'};
hinput2=cell2struct(def22,fields22,2);                                                %对结构体hinput2进行初始化。


close all                                           %关闭当前存在的其它的图象。
hmainfig=figure('name','wangmin(2007)','numbertitle','off','menubar','none',...       %建立一个图,并设置其基本属性。
                             'units','normalized','tag','hmainfig');
set(hmainfig,'units','normalized','position',[0.2,0.2,0.5,0.5]);                                       %把这个图的单位归一化,并定义该图的大小。
set(hmainfig,'defaultuicontrolfontsize',10);                                                                    %设置该图中控件的字体的默认值为13。
set(hmainfig,'defaultuicontrolunits','normalized');                                                          %设置该图中控件的默认单位是normalized。
 set(hmainfig,'visible','off');                                                                                               %暂时让这个界面隐藏起来 。                                                                                            

%以下这一段程序是FILE菜单及其子菜单。
hmenu1=uimenu(hmainfig,'label','File');
          hmenu11=uimenu(hmenu1,'label','Open','accelerator','o');                               %子菜单open,并设置其快捷键为ctrl+o .
                              set(hmenu11,'callback',...                                                                   %子菜单open的回调函数。
                                    ['file=uigetfile(''*.fig'');',...                                                                 %打开扩展名为.fig的文件。
                                     'if  ~isequal(file,0) ',...                                                                     % 若文件存在则达开该文件。
                                        'open(file);',...
                                        'end']);
    hmenu12=uimenu(hmenu1,'label','Save as','accelerator','s');                                 %子菜单save as ,并设置其快捷键为ctrl+s.
                             set(hmenu12,'callback',@saveasfcn);                                               %子菜单save as对应的回调函数为saveasfcn.m文件。
    hmenu13=uimenu(hmenu1,'label','Page setup ','accelerator','g');
                             set(hmenu13,'callback','pagesetupdlg');
                             
                             
   hmenu14=uimenu(hmenu1,'label','Print','accelerator','p');                                  %子菜单print,并设置其快捷键为ctrl+p.
                             set(hmenu14,'callback','printdlg');                                                       %子菜单print对应的回调函数为printdlg。
                             
   hmenu15=uimenu(hmenu1,'label','Quit','accelerator','q');                                   %子菜单quit,并设置其快捷键为ctrl+p.

 %第二个菜单setup及其子菜单,用来对测量对象等进行设置。
hmenu2=uimenu(hmainfig,'label','Setup');                                                                      %菜单setup。
hmenu21=uimenu(hmenu2,'label','Axes range','accelerator','a');                               %子菜单axes range,
             set(hmenu21,'callback',@setup_dlg);                                                                   %并设置其回调函数为setup_dlg文件。    
             
hmenu22=uimenu(hmenu2,'label','Equation','accelerator','e');
             set(hmenu22,'callback',@equationdlg);
hmenu23=uimenu(hmenu2,'label','Measure units','accelerator','m');
           set(hmenu23,'callback',@measureunits);

hmenu24=uimenu(hmenu2,'label','Sample time','accelerator','t');                                %子菜单sample time,
            set(hmenu24,'callback',@sampletimedlg);                                                            %并设置其回调函数为sampletimedlg.m文件。
            
%第三个菜单zoom及其子菜单,用来对图形进行放大。
hmenu3=uimenu(hmainfig,'label','Zoom');                                                                     %菜单zoom.
hmenu31=uimenu(hmenu3,'label','Zoom on','callback','zoom on');                           %子菜单"放大“。
hmenu32=uimenu(hmenu3,'label','Zoom off','callback','zoom off');                           %子菜单”停止缩放“,停止放大缩小。
hmenu33=uimenu(hmenu3,'label','Zoom out','callback','zoom out');                         %子菜单”恢复原图“,恢复为原图大小。
hmenu34=uimenu(hmenu3,'label','Zoom xon','callback','zoom xon');                       %子菜单”X轴放大“。
hmenu35=uimenu(hmenu3,'label','Zoom yon','callback','zoom yon');                       %子菜单"Y轴放大”。

%第四个菜单option及其子菜单
hmenu4=uimenu(hmainfig,'label','Option');                                                                     %菜单option.
hmenu41=uimenu(hmenu4,'label','Grid ');                                                                       %子菜单grid.
hmenu411=uimenu(hmenu41,'label','Grid on','callback','grid on','accelerator','n');   %grid 下的子菜单grid on,用来添加网格。
hmenu412=uimenu(hmenu41,'label','Grid off','callback','grid off','accelerator','f');      %grid下的子菜单grid off ,用来去除网格。
hmenu42=uimenu(hmenu4,'label','Linestyle');                                                                %子菜单linestyle,用来设置曲线的形状。
hmenu421=uimenu(hmenu42,'label','点线','callback',...                                                 %子菜单“:”用来设置曲线为点线。  
                                      ['global  hmainfig hresult ;',...
                                        'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                       'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                      'set(hresult,''LineStyle'','':'');',...
                                       'set(allhmenu4(1),''checked'',''on'');',...
                                        'set(allhmenu4(2:4),''checked'',''off'');']);
hmenu422=uimenu(hmenu42,'label','虚线','callback',...                                                 %子菜单,用来设置曲线为虚线。
                                     ['global  hmainfig hresult ;',...
                                        'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                       'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                     'set(hresult,''LineStyle'',''--'');',....
                                    'set(allhmenu4(2),''checked'',''on'');',...
                                     'set([allhmenu4(1),allhmenu4(3:4)],''checked'',''off'');']);
 hmenu423=uimenu(hmenu42,'label','实线','checked','on','Separator','on','callback',...%子菜单,用来设置曲线为实线。
                                     ['global  hmainfig hresult ;',...
                                        'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                       'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                     'set(hresult,''LineStyle'',''-'');',...
                                     'set(allhmenu4(3),''checked'',''on'');',...
                                     'set([allhmenu4(1:2),allhmenu4()],''checked'',''off'');']);     
 hmenu424=uimenu(hmenu42,'label','虚点线','callback',...                                             %子菜单,用来设置曲线为虚点线。
                                     ['global  hmainfig hresult ;',...
                                        'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                       'allhmenu4=getappdata(hmainfig,''allhmenu4'');',...
                                     'set(hresult,''LineStyle'',''-.'');',...
                                     'set(allhmenu4(4),''checked'',''on'');',...
                                     'set(allhmenu4(1:3),''checked'',''off'');']);
   allhmenu4=[hmenu421,hmenu422,hmenu423,hmenu424];
setappdata(hmainfig,'allhmenu4',allhmenu4);

 hmenu43=uimenu(hmenu4,'label','Line width');                                                             %子菜单,用来设置线的宽度。
                                     set(hmenu43,'callback',@slider_callback);
hmenu44=uimenu(hmenu4,'label','Color');                                                                      %子菜单,用来设置颜色。

hmenu441=uimenu(hmenu44,'label','Blue','foregroundcolor','blue','checked','on');   %设置曲线的颜色为蓝色。
                                      set(hmenu441,'callback',...
                                              ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...                                               
                                              'set(hresult,''color'',''blue'');',...
                                              'set(allhmenu44(1),''checked'',''on'');',...
                                              'set(allhmenu44(2:7),''checked'',''off'');'])
hmenu442=uimenu(hmenu44,'label','Red','foregroundcolor','red');                             %设置曲线的颜色为红色。
                                      set(hmenu442,'callback',...
                                             ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                             'set(hresult,''color'',''red'');',...
                                               'set(allhmenu44(2),''checked'',''on'');',...
                                               'set([allhmenu44(1),allhmenu44(2:7)],''checked'',''off'');']);
hmenu443=uimenu(hmenu44,'label','Black','foregroundcolor','black','separator','on');  %设置曲线的颜色为黑色 。
                                      set(hmenu443,'callback',...
                                              ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                              'set(hresult,''color'',''black'');',...
                                               'set(allhmenu44(3),''checked'',''on'');',...
                                               'set([allhmenu44(1:2),allhmenu44(4:7)],''checked'',''off'');']);
hmenu444=uimenu(hmenu44,'label','Cyan','foregroundcolor','cyan');                            %设置曲线的颜色为青色。
                                      set(hmenu444,'callback',...
                                             ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                             'set(hresult,''color'',''cyan'');',...
                                              'set(allhmenu44(4),''checked'',''on'');',...
                                              'set([allhmenu44(1:3),allhmenu44(5:7)],''checked'',''off'');']);
hmenu445=uimenu(hmenu44,'label','Magenta','foregroundcolor','magenta','separator','on');  %设置曲线的颜色为洋红色。
                                       set(hmenu445,'callback',...
                                          ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                          'set(hresult,''color'',''magenta'');',...
                                           'set(allhmenu44(5),''checked'',''on'');',...
                                           'set([allhmenu44(1:4),allhmenu44(6:7)],''checked'',''off'');']);
hmenu446=uimenu(hmenu44,'label','Yellow','foregroundcolor','yellow');                      %设置曲线的颜色为黄色。
                                        set(hmenu446,'callback',...
                                            ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                            'set(hresult,''color'',''yellow'');',...
                                             'set(allhmenu44(6),''checked'',''on'');',...
                                             'set([allhmenu44(1:5),allhmenu44(7)],''checked'',''off'');']);
hmenu447=uimenu(hmenu44,'label','Green','foregroundcolor','green','separator','on');   %设置曲线的颜色为绿色。
                                        set(hmenu447,'callback',...
                                            ['global  hresult hmainfig;',...
                                              'allhmenu44=getappdata(hmainfig,''allhmenu44'');',...        
                                            'set(hresult,''color'',''green'');',...
                                             'set(allhmenu44(7),''checked'',''on'');',...
                                             'set(allhmenu44(1:6),''checked'',''off'');']);
        allhmenu44=[hmenu441,hmenu442,hmenu443,hmenu444,...
                  hmenu445,hmenu446,hmenu447];
 setappdata(hmainfig,'allhmenu44',allhmenu44);                            
                                             
%建立 一个用来显示时间的菜单。
 %第五个菜单time,用来显示当前的时间。


 
 htime=uimenu('label','Time','foregroundcolor','blue');                                                    %建立一个菜单名为Time.
 timer_handle=timer;                                                                                                           %建立一个定时器对象。
 setappdata(hmainfig,'htime',htime);
setappdata(hmainfig,'timer_handle',timer_handle);
 
 command=['global  hmainfig;',...
                        'htime=getappdata(hmainfig,''htime'');',...
                        'timer_handle=getappdata(hmainfig,''timer_handle'');',...
                            'set(htime,''label'',',...                                                                                   %将时间显示在label卷展栏上。
                         'datestr(clock))'];                                                                              
                              
set(htime,'deletefcn',[ 'global  hmainfig;',...
                                    'timer_handle=getappdata(hmainfig,''timer_handle'');',...
                                  'stop(timer_handle);',...                                                                   %欲单击窗口右上角的按钮后就将窗口关闭并将定时器对象停止与删除。
                                   'delete(timer_handle);']);            

set(timer_handle,'executionmode','fixedrate');                                                                 %执行模式fixedrate.
set(timer_handle,'period',1);                                                                                               %记时周期为1秒。
set(timer_handle,'timerfcn',command);                                                                             %指定定时器timerfcn触发后执行的操作
set(timer_handle,'errorfcn',['global  hmainfig;',...
                                                'timer_handle=getappdata(hmainfig,''timer_handle'');',...
                                                'stop(timer_fcn);',...
                                               ' delete(timer_handle);']);                                                   %如果该定时器使用上发生错误就将定时器停止与删除.
start(timer_handle);
                                       

 

%下面这段程序实用来在GUI上增加11个工具栏,用来对该图形进行操作。包括通道之间的切换和双轴显示等等。
%可以说这些工具栏的使用是我的整个GUI的缩影,因为它的精华部分都通过这些工具栏的使用来体现。
 hzoomin=uipushtool('separator','on','tooltipstring','放大',...                                             %建立“放大”工具栏。
                             'clickedcallback','zoom on',...
                           'CData',imread('zoomin.png'));
hzoomout= uipushtool('separator','on','tooltipstring','停止缩放',...                                   %建立“缩小”工具栏。
                             'clickedcallback','zoom out',...
                            'CData',imread('zoomout.bmp'));
                   
huipushtoolcons=uipushtool('tooltipstring','比较','separator','on',...                                 %建立“比较”工具栏。
                         'CData',imread('cons.jpg'));
huipushtool1=uipushtool('tooltipstring','通道1','separator','on',...                                     %建立push1工具栏。
                         'CData',imread('1.jpg'));
huipushtool2=uipushtool('tooltipstring','通道2',...                                                               %建立push2工具栏。
                         'CData',imread('2.jpg'));
huipushtool3=uipushtool('tooltipstring','通道3',...                                                               %建立push3工具栏。
                         'CData',imread('3.jpg'));
huipushtool4=uipushtool('tooltipstring','通道4',...                                                              %建立push4工具栏。
                         'CData',imread('4.jpg'));
huipushtool5=uipushtool('tooltipstring','通道5' ,...                                                              %建立push5工具栏。
                         'CData',imread('5.jpg'));
huipushtool6=uipushtool('tooltipstring','通道6',...                                                               %建立push6工具栏。
                         'CData',imread('6.jpg'));
huipushtool7=uipushtool('tooltipstring','通道7' ,...                                                             %建立push7工具栏。
                         'CData',imread('7.jpg'));
huipushtool8=uipushtool('tooltipstring','通道8',...                                                               %建立push8工具栏。
                         'CData',imread('8.jpg'));

%下面这一段程序是用来建立控件和确定坐标轴的大小。
htext1=uicontrol(hmainfig,'style','text','position',[0.04,0.82,0.05,0.05],...                        %建立一个静态文本框用来显示测量单位(左上)。
                             'backgroundcolor',[0.8,0.8,0.8],'string','单位',...
                             'foregroundcolor','magenta','tag','htext1');
 setappdata(hmainfig,'htext1',htext1);
htext2=uicontrol(hmainfig,'style','text','position',[0.04,0.38,0.05,0.05],...                        %建立一个静态文本框用来显示测量单位(左下)。
                              'backgroundcolor',[0.8,0.8,0.8],'string','',...
                              'foregroundcolor','magenta','tag','htext2');
  setappdata(hmainfig,'htext2',htext2);
 htext5=uicontrol(hmainfig,'style','text','position',[0.93,0.82,0.06,0.05],...
                              'backgroundcolor',[0.8,0.8,0.8],'string','',...
                                'tag','htext5');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -