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

📄 qbutnset.m

📁 机器人控制仿真程序一书的所有源代码
💻 M
字号:
function [bt,bnd_bt]=qbutnset(bnd,flag,delay,nom,f)
% QBUTNSET Button setup. (Utility Function)
%          QBUTNSET sets up the entire interface for the IDE programs
%          LPSHAPE, DLPSHAPE, PFSHAPE, and DPFSHAPE.

% Author: Craig Borghesani
% Date: 8/31/93
% Revised: 2/16/96 12:39 PM V1.1 updates
% Copyright (c) 1995-98 by The MathWorks, Inc.
%       $Revision: 1.7 $

lf1=0.0781;
wdt=0.0578;
ht=0.0417;
top=1-0.0625;
rt=1-wdt;

%%%%%% V5 initialization
bnd_bt = [];

estr='on';
estr2='on';
xstr=['xitcade(',int2str(f),',0);'];
if any(flag==[3,4])   % FSHAPE,DFSHAPE
 estr='off';
 estr2='off';
elseif any(flag==[5,6]),
 estr2='off';
end

% create uimenus
qfile=uimenu('label','QFile');
s_qfile(1)=uimenu(qfile,'label','Open...','callback','cntopen(1)');
s_qfile(2)=uimenu(qfile,'label','Save...','callback','cntsave(1)');
s_qfile(3)=uimenu(qfile,'label','Quick Open','callback','cntopen(2)','vis','off');
s_qfile(4)=uimenu(qfile,'label','Quick Save','callback','cntsave(2)','vis','off');
s_qfile(5)=uimenu(qfile,'label','Out to Workspace...','callback','envtowks(0,0)',...
               'separator','on');

%%%%%% V1.1 addition
uimenu(qfile,'label','Print...',....
             'callback','printdlg(gcf,[0.14,0.16,0.775,0.745],get(gcf,''defaultaxesposition''));',...
             'separator','on');
%%%%%%

s_qfile(6)=uimenu(qfile,'label','Exit','callback','close(gcf)','separator','on');
set(f,'closerequestfcn',xstr);

qdes=uimenu('label','QDesign');
s_qdes(1)=uimenu(qdes,'label','UnDo','callback','qundoit');
s_qdes(2)=uimenu(qdes,'label','Add via Numeric...',...
                      'separator','on','callback','qaddelmt(0)');
s_qdes(3)=uimenu(qdes,'label','Add via Graphic');
ss_qdes(1)=uimenu(s_qdes(3),'label','Gain','callback','qscrelmt(1)');
ss_qdes(2)=uimenu(s_qdes(3),'label','First Order','callback','qscrelmt(2)');
ss_qdes(3)=uimenu(s_qdes(3),'label','Second Order','callback','qscrelmt(3)');
ss_qdes(4)=uimenu(s_qdes(3),'label','Lead/Lag','callback','qscrelmt(4)',...
                            'enable',estr);
ss_qdes(5)=uimenu(s_qdes(3),'label','Notch','callback','qscrelmt(5)');
ss_qdes(6)=uimenu(s_qdes(3),'label','2/2','callback','qscrelmt(6)',...
                            'enable',estr2);
s_qdes(4)=uimenu(qdes,'label','Delete...','callback','qdelelmt(0)');
s_qdes(5)=uimenu(qdes,'label','Edit...','callback','qedtelmt(0,0)');
s_qdes(6)=uimenu(qdes,'label','Iterate...','callback','qitrelmt(0,0)');

qview=uimenu('label','QView');
s_qview(1)=uimenu(qview,'label','Full','callback','qcadevuw(1)');
s_qview(2)=uimenu(qview,'label','In','callback','qcadevuw(2)');
s_qview(3)=uimenu(qview,'label','Out','callback','qcadevuw(3)');
s_qview(4)=uimenu(qview,'label','Last','callback','qcadevuw(4)');
s_qview(5)=uimenu(qview,'label','Move','callback','qcadevuw(11)',...
                        'separator','on');
s_qview(6)=uimenu(qview,'label','Zoom','callback','qcadevuw(13)');
s_qview(7)=uimenu(qview,'label','Axis...','callback','qaxschng(0)',...
                        'separator','on');

qtools=uimenu('label','QTools');
s_qtools(1)=uimenu(qtools,'label','Elements','callback','qcadevuw(9)');
s_qtools(2)=uimenu(qtools,'label','Plant','callback','qcadevuw(14)');
s_qtools(3)=uimenu(qtools,'label','Reduction...','separator','on',...
                          'callback','qmodlred(0)');
s_qtools(4)=uimenu(qtools,'label','Conversion...','callback','cntcnvt(0)',...
                          'enable',estr);
s_qtools(5)=uimenu(qtools,'label','Stability','separator','on',...
                          'callback','qcadevuw(8)','enable',estr);
s_qtools(6)=uimenu(qtools,'label','Frequency...','callback','qfrqchng(0)',...
                    'enable',estr);
s_qtools(7)=uimenu(qtools,'label','Store','callback','cntstor',...
                    'separator','on');
s_qtools(8)=uimenu(qtools,'label','Recall','callback','cntrecl');

if any(flag==[2,4,6]),
 set(s_qtools(3),'enable','off');
end

if ~length(nom) | flag > 2,
 set(s_qtools(2),'enable','off');
end

if delay~=0 | (~length(nom)),
 set(s_qtools(5),'enable','off');
 if ~length(nom),
  set(s_qtools(6),'enable','off');
 end
end

bt=[qfile,s_qfile,qdes,s_qdes,ss_qdes,qview,s_qview,qtools,s_qtools];

hlbl = uimenu('label','QHelp');
help = uimenu(hlbl,'label','QFT Interface Help','callback','web([''file:///'',which(''qindex.htm'')]);');

%%%%%% V5 help udate
%uimenu(help,'label','QFile',...
%            'callback','helpdlg(''qfile.hlp'',''QFile Help'');');
%uimenu(help,'label','QDesign',...
%            'callback','helpdlg(''qdesign.hlp'',''QDesign Help'');');
%uimenu(help,'label','QView',...
%            'callback','helpdlg(''qview.hlp'',''QView Help'');');
%uimenu(help,'label','QTools',...
%            'callback','helpdlg(''qtools.hlp'',''QTools Help'');');

% setup ESC button
uicontrol(f,'style','push','units','norm',...
          'pos',[lf1, top, wdt, ht],...
          'string','ESC',...
          'callback','qclswin(0)',...
          'horizontalalignment','center');

% set up 'quick access' buttons
btn_info = ['K   qscrelmt(1)  ';'1   qscrelmt(2)  ';'2   qscrelmt(3)  ';
            'L/L qscrelmt(4)  ';'NTC qscrelmt(5)  ';'2/2 qscrelmt(6)  ';
            'ADD qaddelmt(0)  ';'DEL qdelelmt(0)  ';'EDT qedtelmt(0,0)';
            'ITR qitrelmt     ';'RED qmodlred(0)  ';'CVT cntcnvt(0)   ';
            'VUW qcadevuw(9)  ';'STB qcadevuw(8)  ';'FRQ qfrqchng(0)  ';
            'FUL qcadevuw(1)  ';'IN  qcadevuw(2)  ';'OUT qcadevuw(3)  ';
            'UP  qcadevuw(4)  ';'DN  qcadevuw(5)  ';'AXS qcadevuw(11) ';
            'STR cntstor      ';'RCL cntrecl      ';'SAV cntsave(1)   ';
            'OPN cntopen(1)   ';];

lft=lf1+wdt; tp=top;
btnct=1;
for btn=1:6,
 vstr='on';
 btn_pos=[lft,tp,wdt,ht];
 btn_str=btn_info(btn,1:3);
 if btnct<=13, lft=lft+wdt;
 else tp=tp-ht; end
 if any(flag==[3,4]),
  if strcmp('L/L',btn_str) | strcmp('CVT',btn_str) | ...
     strcmp('STB',btn_str) | strcmp('2/2',btn_str),
   vstr='off';
  end
 elseif any(flag==[2,4,6]),
  if strcmp('RED',btn_str),
   vstr='off';
  end
 end
 if any(flag==[5,6]),
  if strcmp('2/2',btn_str),
   vstr='off';
  end
 end
 btn_call=btn_info(btn,5:17);
 q(btn)=uicontrol(f,'style','push','units','norm','pos',btn_pos,...
             'string',btn_str(btn_str~=' '),...
             'callback',btn_call,...
             'horizontalalignment','center');
 set(q(btn),'enable',vstr);
 btnct=btnct+1;
end
set(bt(34),'userdata',q);

% setup REF button
uicontrol(f,'style','push','units','norm',...
          'pos',[lft, tp, wdt, ht],...
          'string','REF',...
          'callback','qcadevuw(15)',...
          'horizontalalignment','center');

% set up buttons for toggling bounds from visible to invisible
ct=1;
cvec=['r';'g';'b';'y';'c';'m'];
clr=[cvec;cvec;cvec;cvec];
[rb,cb]=size(bnd);
if rb,
 ow=bnd(rb,:); ow=sort(ow); ow(find(diff(ow)==0))=[];
 tp=top-ht;
 for t=1:length(ow),
  wstr=sprintf('%4.4g',ow(t));
  loc=find(wstr=='e');
  if length(loc),
   wstr(find(wstr(loc:length(wstr))=='0')+(loc-1))=[];
  else
   wstr(find(wstr==' '))=[];
  end
  st=[wstr,',',clr(t)];
  bnddata=bnd(1:(rb-1),find(ow(t)==bnd(rb,:)));
  bnd_bt(ct)=uicontrol(f,'style','push','units','norm','pos',[0 tp lf1 ht],...
                    'callback','bndonoff','string',st,'userdata',bnddata);
  tp=tp-ht;
  ct=ct+1;
 end
 bnd_bt(ct)=uicontrol(f,'style','push','units','norm','pos',[0 tp lf1 ht],...
                    'callback','bndonoff','string','Off',...
                    'userdata',bnd(1:(rb-1),:));
end

⌨️ 快捷键说明

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