?? test.m
字號:
function bluesky
global hmainfig sampletime;
sampletime=1;
tmp1 = 0;
global hinput1 hinput2;
global hcurrent hresult;
def11={'mV','mA','mV','mA','mV','mA','mV','mA'};
fields11={'ch1units','ch2units','ch3units','ch4units','ch5units','ch6units','ch7units','ch8units'}; %該結(jié)構(gòu)體的字段名。
hinput1=cell2struct(def11,fields11,2); %對結(jié)構(gòu)體hinput1進(jìn)行初始化。
def22={'1','1','1','1','1','1','1','1'};
fields22={'equation1','equation2','equation3','equation4',... %該結(jié)構(gòu)體的字段名。
'equation5','equation6','equation7','equation8'};
hinput2=cell2struct(def22,fields22,2); %對結(jié)構(gòu)體hinput2進(jìn)行初始化。
close all %關(guān)閉當(dāng)前存在的其它的圖象。
hmainfig=figure('name','Matlab_GUI_Com(2008)','numbertitle','off','menubar','none',... %建立一個圖,并設(shè)置其基本屬性。
'units','normalized','tag','hmainfig');
set(hmainfig,'units','normalized','position',[0.2,0.2,0.5,0.5]); %把這個圖的單位歸一化,并定義該圖的大小。
set(hmainfig,'defaultuicontrolfontsize',10); %設(shè)置該圖中控件的字體的默認(rèn)值為13。
set(hmainfig,'defaultuicontrolunits','normalized'); %設(shè)置該圖中控件的默認(rèn)單位是normalized。
set(hmainfig,'visible','off'); %暫時讓這個界面隱藏起來 。
%以下這一段程序是FILE菜單及其子菜單。
hmenu1=uimenu(hmainfig,'label','File');
hmenu11=uimenu(hmenu1,'label','Open','accelerator','o'); %子菜單open,并設(shè)置其快捷鍵為ctrl+o .
set(hmenu11,'callback',... %子菜單open的回調(diào)函數(shù)。
['file=uigetfile(''*.fig'');',... %打開擴展名為.fig的文件。
'if ~isequal(file,0) ',... % 若文件存在則達(dá)開該文件。
'open(file);',...
'end']);
hmenu12=uimenu(hmenu1,'label','Save as','accelerator','s'); %子菜單save as ,并設(shè)置其快捷鍵為ctrl+s.
set(hmenu12,'callback',@saveasfcn); %子菜單save as對應(yīng)的回調(diào)函數(shù)為saveasfcn.m文件。
hmenu13=uimenu(hmenu1,'label','Page setup ','accelerator','g');
set(hmenu13,'callback','pagesetupdlg');
hmenu14=uimenu(hmenu1,'label','Print','accelerator','p'); %子菜單print,并設(shè)置其快捷鍵為ctrl+p.
set(hmenu14,'callback','printdlg'); %子菜單print對應(yīng)的回調(diào)函數(shù)為printdlg。
hmenu15=uimenu(hmenu1,'label','Quit','accelerator','q'); %子菜單quit,并設(shè)置其快捷鍵為ctrl+p.
%第二個菜單setup及其子菜單,用來對測量對象等進(jìn)行設(shè)置。
hmenu2=uimenu(hmainfig,'label','Setup'); %菜單setup。
hmenu21=uimenu(hmenu2,'label','Axes range','accelerator','a'); %子菜單axes range,
set(hmenu21,'callback',@setup_dlg); %并設(shè)置其回調(diào)函數(shù)為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); %并設(shè)置其回調(diào)函數(shù)為sampletimedlg.m文件。
%第三個菜單zoom及其子菜單,用來對圖形進(jìn)行放大。
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'); %子菜單”恢復(fù)原圖“,恢復(fù)為原圖大小。
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,用來添加網(wǎng)格。
hmenu412=uimenu(hmenu41,'label','Grid off','callback','grid off','accelerator','f'); %grid下的子菜單grid off ,用來去除網(wǎng)格。
hmenu42=uimenu(hmenu4,'label','Linestyle'); %子菜單linestyle,用來設(shè)置曲線的形狀。
hmenu421=uimenu(hmenu42,'label','點線','callback',... %子菜單“:”用來設(shè)置曲線為點線。
['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',... %子菜單,用來設(shè)置曲線為虛線。
['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',...%子菜單,用來設(shè)置曲線為實線。
['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',... %子菜單,用來設(shè)置曲線為虛點線。
['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'); %子菜單,用來設(shè)置線的寬度。
set(hmenu43,'callback',@slider_callback);
hmenu44=uimenu(hmenu4,'label','Color'); %子菜單,用來設(shè)置顏色。
hmenu441=uimenu(hmenu44,'label','Blue','foregroundcolor','blue','checked','on'); %設(shè)置曲線的顏色為藍(lán)色。
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'); %設(shè)置曲線的顏色為紅色。
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'); %設(shè)置曲線的顏色為黑色 。
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'); %設(shè)置曲線的顏色為青色。
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'); %設(shè)置曲線的顏色為洋紅色。
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'); %設(shè)置曲線的顏色為黃色。
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'); %設(shè)置曲線的顏色為綠色。
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,用來顯示當(dāng)前的時間。
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);',... %欲單擊窗口右上角的按鈕后就將窗口關(guān)閉并將定時器對象停止與刪除。
'delete(timer_handle);']);
set(timer_handle,'executionmode','fixedrate'); %執(zhí)行模式fixedrate.
set(timer_handle,'period',1); %記時周期為1秒。
set(timer_handle,'timerfcn',command); %指定定時器timerfcn觸發(fā)后執(zhí)行的操作
set(timer_handle,'errorfcn',['global hmainfig;',...
'timer_handle=getappdata(hmainfig,''timer_handle'');',...
'stop(timer_fcn);',...
' delete(timer_handle);']); %如果該定時器使用上發(fā)生錯誤就將定時器停止與刪除.
start(timer_handle);
%下面這段程序?qū)嵱脕碓贕UI上增加11個工具欄,用來對該圖形進(jìn)行操作。包括通道之間的切換和雙軸顯示等等。
%可以說這些工具欄的使用是我的整個GUI的縮影,因為它的精華部分都通過這些工具欄的使用來體現(xiàn)。
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'));
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -