واسط گرافیکی کاربر (GUI) graphical user interface

Download Report

Transcript واسط گرافیکی کاربر (GUI) graphical user interface

‫درس نرم افزارهای کاربردی در الکترونیک‬
‫آشنایی با ‪GUI‬‬
‫در متلب‬
‫مهدی اکبری‬
‫اردیبهشت ‪87‬‬
‫‪1‬‬
‫واسط گرافیکی کاربر ‪(GUI) graphical user interface‬‬
‫• همان طور که برای خیلی از زبانهای برنامه نویس ی پایه مثل ‪ Basic‬و قسمتی‬
‫به نام ‪ visual‬ایجاد شده است ‪ MATLAB ،‬هم ابزاری به نام ‪ GUIDE‬دارد که‬
‫توسط آن می توان رابط های گرافیکی مثل دکمه ها (‪ ، (PUSH BUTTON‬لیست‬
‫ها (‪ ، )LIST BOX‬اسالیدرها( ‪ )SLIDER‬و‪ . . .‬ایجاد کرد‪.‬‬
‫‪2‬‬
‫این ابزار زمانی به درد می خورد که شما آن را برای افرادی که احتماال با کار با دستورات‬
‫‪ MATLAB‬را آشنایی ندارند به کار ببرید ‪.‬مثال فرض کنید شما می خواهید یک‬
‫نمودار را با قطر های مختلف رنگهای متفاوت و اندازه های گوناگون رسم کنید‪.‬اگر‬
‫شما کمی با برنامه نویس ی در ‪ MATLAB‬آشنا باشید می توانید تمام دستورات را به‬
‫اجزای گرافیکی بسپارید تا مثال با فشار یک دکمه یک نمودار رسم شود و با انتخاب یک‬
‫یک گزینه از منوی کشویی فرضا شکل نمودار تغییر کند ‪.‬‬
‫‪3‬‬
‫شروع کار با ‪: GUI‬‬
‫‪ .1‬استفاده ازابزار‪GUIDE‬‬
‫‪ .2‬استفاده از منوی ‪ File‬و انتخاب گزینه ‪ New‬و سپس ‪GUI‬‬
‫‪4‬‬
‫در ادامه در برگه ‪ Create New GUI‬و با انتخاب ‪Blank GUI‬صفحه ای مانند‬
‫شکل زیر ایجاد می شود ‪:‬‬
‫‪5‬‬
‫مثال‬
‫• پنجره ای بسازید شامل‪:‬‬
‫‪ -1‬یک دکمه فشاری ‪ Push Button‬که روی آن کلمه ‪ Time‬نوشته شده‬
‫باشد و پس از کلیک ساعت را روی خودش نمایش دهد‪.‬‬
‫‪ -2‬یک دکمه متن ایستا ‪ Static text button‬که روی آن ‪ Date‬نوشته شده‬
‫باشد و پس از فشردن دکمه فشاری قبلی تاریخ را نشان دهد‪.‬‬
‫‪ -3‬یک دکمه فشاری که روی آن ‪ Refresh‬نوشته باشد و دو دکمه قبل را به‬
‫حالت اول برگرداند‪.‬‬
‫‪6‬‬
7
‫نکته‬
‫• هر ش ی کنترلی در صفحه ‪ GUI‬با یک سریمشخصات شناخته می شود که‬
‫آنها را می توان با دو بار کلیک روی ش ی در صفحه ‪ Guide‬بدست آورد‪.‬‬
‫‪8‬‬
‫• شاخصه عنوان ‪String‬‬
‫این شاخصه برای بعض ی از اشیاء ‪ String‬و برای بعض ی از اشیاء ‪Name‬‬
‫گفته می شود و روی شیئ حک می شود‪.‬‬
‫• شاخصه برچسب )‪(Tag‬‬
‫شاخصه برچسب ‪ Tag‬نام شیئ است که در برنامه با این نام به شیئ‬
‫مراجعه می شود‪.‬‬
‫‪9‬‬
10
‫• بعد از ایجاد دکمه های کنترلی برنامه را ‪ save‬می کنیم‪.‬‬
‫• بعد از ‪ save‬برنامه دو فایل با پسوند ‪ *.m‬و ‪ *.fig‬ایجاد می شود و‬
‫‪ MATLAB‬کدی را ایجاد می کند و به اشیا درون شکل ‪ ،‬یک تابع و‬
‫‪ callback‬را نسبت می دهد‪.‬‬
‫‪11‬‬
‫توابع فراخوان ‪Callback Function‬‬
‫• در داخل برنامه برای عمل یا اعمالی که با فشردن یک دکمه یا کلیک روی یک‬
‫پنجره انجام می شود تابعی می نویسیم که تابع فراخوان آن پنجره و یا‬
‫‪ Callback Function‬آن دکمه نامیده می شود‪.‬‬
‫‪12‬‬
‫برنامه نویس ی‬
‫• در محیط ‪ M-File‬با استفاده از کلید ‪ F‬در قسمت ‪ Tool Bar‬می توان‬
‫به ‪ CallBack‬مربوط به هر کلید مراجعه نمود و عملکرد مربوط به آن‬
‫کلید را برایش تعریف کرد‪.‬‬
‫‪13‬‬
function pushbutton1_Callback(hObject, eventdata, handles)
t = clock;
d = date;
tm = sprintf('%2.0f: %2.0f: %2.0f:',t(4),t(5),t(6));
.‫ می نویسد‬tm ‫ دقیقه و ثانیه را داخل متغیر رشته ای‬،‫دو رقم از رشته های ساعت‬
dt = sprintf('%12s',d);
.‫ مکان ایجاد و رشته ی تاریخ را در آن می نویسد‬12 ‫ را با‬dt ‫متغیر‬
set(handles. pushbutton1,'String',tm)
set(handles.text1,'String',char(dt))
14
‫• دستور ‪: double‬‬
‫متغیر ها می توانند با استفاده از این تابع از نوع ‪ char‬به ‪ double‬تبدیل شوند‪.‬‬
‫'‪>> a='matlab‬‬
‫=‪a‬‬
‫‪matlab‬‬
‫)‪>> x=double(a‬‬
‫=‪x‬‬
‫‪109 97 116 108 97 98‬‬
‫•‬
‫دستور ‪: char‬‬
‫عکس عمل باال را انجام می دهد یعنی متغیر ها را از نوع دابل به کاراکتری تبدیل می کند‪.‬‬
‫)‪>> char(x‬‬
‫= ‪ans‬‬
‫‪matlab‬‬
‫‪15‬‬
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.pushbutton1,'String','Time')
set(handles.text1,'String','Date')
16
‫برنامه ی ‪ GUI‬فوق از ‪ 3‬طریق اجرا است‪:‬‬
‫‪ .1‬در پنجره ‪ LE‬با انتخاب ‪ Run‬از میله ابزار‬
‫‪ .2‬در پنجره ‪ LE‬با انتخاب ‪ Run‬از منوی ‪Tools‬‬
‫‪ .3‬از داخل ‪ M-File‬به طریق معمول اجرای آنها‬
‫‪17‬‬
‫برنامه نویس ی اسالیدر در ‪Mtatlab‬‬
‫• ‪ Slider‬اشیاء گرافیکی هستند که به کاربر این امکان را می دهند تا مقداری‬
‫را از میان دامنه پیوسته ای از مقادیر ‪ ،‬با حرکت یک ‪ bar‬به وسیله ماوس ‪،‬‬
‫انتخاب کند ‪ .‬این مقدار بین مینیمم و ماکزیمم مقادیر پیش فرض تغییر می‬
‫کند ‪.‬‬
‫‪18‬‬
‫مثال‬
‫• یک ‪ GUI‬طراحی کنید که با لغزاندن ‪ BAR‬آن اعدادی بین ‪ 0‬تا ‪ 100‬تغییر‬
‫کند و در یک ‪ statictext‬نمایش داده شود حال فرض کنید این داده ها‬
‫دمای بر حسب سانتیگراد باشند در ادامه برنامه را طوری طراحی کنید که‬
‫همین دما ها که بین ‪ 0‬تا ‪ 100‬هستند در یک ‪ statictext‬دیگر برحسب‬
‫درجه فارانهایت نمایش داده شوند‪.‬‬
‫‪19‬‬
20
‫‪ )1‬تنظیم اسالیدر‬
‫• ‪ tag‬را به ‪ slider‬تغییر می دهیم ‪.‬‬
‫• در حالت پیش فرض که از اسالیدر استفاده می کنیم اعداد آن بین ‪ 0‬تا ‪ 1‬و با استپ ‪ 0.01‬تغییر می‬
‫کنند‪ .‬برای اینکه اسالیدر بین ‪ 0‬تا ‪ 100‬تغییر کند در ‪ property inspector‬مربوط به اسالیدر‬
‫گزینه ‪ Min‬را به ‪ 0‬و گزینه ‪ Max‬را به ‪ 100‬تغییر می دهیم ‪.‬‬
‫• برای اینکه اسالیدر با استپ ‪ 1‬حرکت کند باید در ‪ property inspector‬دنبال گزینه ای به نام‬
‫‪ slider step‬بگردیم که یک بردار با دو عضو ‪ x‬و ‪ y‬است ‪.‬‬
‫• هر وقت خواستیم یک بازه را به نقاط دلخواه خود تقسیم بندی کنیم تعداد آن نقاط را معکوس می کنیم و‬
‫در ‪ x‬قرار می دهیم‪ .‬بنابراین برای تقسیم بندی به ‪ 100‬قسمت بایستی مقدار ‪ x‬را برابر ‪ 0.01‬قرار دهیم ‪.‬‬
‫• ‪ x‬برای کلیک روی فلش ها است یعنی با هر بار کلیک روی فلش یکی مقدار اسالیدر تغییر می کند اما ‪y‬‬
‫درصد تغییر را برای کلیک روی سایر قسمتهای اسالیدر مشخص می کند‪.‬‬
‫‪ )2‬دو ‪ statictext‬به نامهای ‪ Celsius‬و ‪ Fahrenheit‬با ‪ tag‬های ‪ text1‬و ‪ text2‬ایجاد می کنیم‪.‬‬
‫‪21‬‬
22
function slider_Callback(hObject, eventdata, handles)
celsius=get(handles.slider,'value');
.‫مقادیر را از اسالیدر دریافت می کند‬
set(handles.text1,'string',celsius);
.‫ قرار می گیرند‬static text ‫این مقادیر در‬
fahrenheit=(9/5)*(celsius)+32;
.‫مقادیر طبق رابطه به فارانهایت تبدیل می شوند‬
fahrenheit=num2str(fahrenheit);
.‫به رشته تبدیل می شوند‬
set(handles.text2,'string',fahrenheit);
.‫ قرار می گیرند‬static text ‫این مقادیر در‬
23
‫منیو‬
.‫ ساده است که امکان انتخاب چند گزینه را فراهم می کند‬GUI ‫منیو یک‬
.‫ اجرا کنید‬menu()‫ فایل راهنمای چند دستور متلب را با استفاده از دستور‬-‫ در یک ام‬:‫مثال‬
k = 0;
while k < 4;
k = menu('Help Menu','Operators','Mod','Rem','Exit');
if k == 1
help \
elseif k == 2
help mod
elseif k == 3
help rem
else
a = input('Really Exit? (Y/N) ','s');
if (a == 'n') || (a =='N')
k = 3;
end
end
end
24
•
•
‫روش ایجاد فایل اجرایی در ‪: MATLAB‬‬
‫• بعد از اینکه ‪ m-file‬را در ‪ matlab‬ایجاد کردیم وکد نویس ی آن تمام شد و اطمینان حاصل کردیم‬
‫که فایل ما در ‪ Current directory‬وجود دارد باید اطمینان حاصل کنید که یک کامپایلر مناسب‬
‫با کار ما روی کامپیوتر نصب باشد که برای این منظورکامپایلر ‪ visual c++‬توصیه می شود ‪.‬‬
‫•‬
‫•‬
‫حال به این صورت عمل می کنیم‪:‬‬
‫فرض می کنیم نام فایل شما ‪ test.m‬باشد در پنجره فرمان تایپ می کنیم‪:‬‬
‫‪>> mcc –m test.m‬‬
‫• پس از مدتی ‪ matlab‬یک سری فایل در دایرکتوری جاری ایجاد می کند که یکی از آنها ‪test.exe‬‬
‫است ‪.‬‬
‫• اکنون در صورتی که حتی با بسته بودن ‪ matlab‬فایل اجرایی را اجرا کنید اول یک پنجره مثل پنجره‬
‫های داس باز میشود که در حکم ‪ Command Window‬شماست ‪.‬‬
‫اما این نکته را بایستی به یاد داشته باشید که این فایل در کامپیوتری اجرا میشود که در آن کامپایلر ‪ matlab‬نصب‬
‫باشد ‪.‬‬
‫‪25‬‬