حال میخواهیم در این قسمت ادامهی کدنویسی آنرا انجام داده و GUI نهایی را تست کنیم.
به Callback منوی Exit رفته و قطعه کد زیر را وارد کنید:
button = questdlg('Do you want to quit the ControlTool?', ...
'Quit the ControlTool','Yes','No','No');
switch button
case 'Yes',
close('ControlTool');
case 'No',
quit cancel;
end
توضیح کد:
این کد یک دیالوگ پرسشی را برای
کاربر به نمایش درمیآورد. این دیالوگ معمولا دارای گزینههای Yes ، No و
Cancel میباشد که در این مورد ما فقط از گزینههای Yes و No استفاده
کردهایم. اگر کاربر دگمهی Yes را بفشارد، از برنامهی ControlTool خارج
میشود و اگر No را انتخاب کند، عملیات خروج، لغو میگردد.
به Callback منوی Reset رفته و همان کدی را که برای دگمهی فشاری Reset در قسمت سوم آموزش شرح دادم، قرار دهید.
حال به Callback منوی Figure رفته و کد زیر را وارد کنید:
printdlg(ControlTool);
این کد از کل GUIی ما پرینت
میگیرد. درواقع این دستور از کل محتویات یک شیء گرافیکی(که در این مورد
این شیء گرافیکی ControlTool نام دارد)، پرینت تهیه میکند.
سپس به Callback منوی Response of LTI System رفته و قطعه کد زیر را وارد کنید:
axes1fig = figure(10010);
axes1copy = copyobj(handles.axes1,axes1fig);
set(axes1copy,'Units','default','Position','default');
printdlg(10010);
close 10010
توضیح کد:
این کد ابتدا یک شیء گرافیکی
ایجاد کرده و سپس axes موردنظر را بوسیلهی دستور copyobj در آن شیء کپی
میکند. پس از آن واحدها و مکان axes کپی شده در شیء ساخته شده به حالت
پیشفرض خود میروند. بعد از آن از شیء گرافیکی ایجاد شده، پرینت گرفته
میشود و نهایت هم شیء گرافیکی بسته میشود.
درادامه به Callbackهای Roots
analysis و Frequency response رفته و همان کد بالا را برای آنها بنویسید.
فقط تنها تغییری که میدهید این است که برای هرکدام، axes مربوطه را قرار
میدهید.
حال به Callback منوی Show grid رفته و قطعه کد زیر را وارد کنید:
grid(handles.axes1,'on');
grid(handles.axes2,'on');
grid(handles.axes3,'on');