TRUONG DAI HOC KHOA HOC TU NHIEN KHOA VAT LY-VAT LY KI THUAT
BỘ MÔN : VẬT LÝ ĐIỆN TỬ
BÁO CÁO
MÔN : THỰC TẬP CHUYÊN ĐÈ 4
DE TAI : LAP TRINH GUIDE GIAO DIEN
Sinh viên thưc hiện:
NGUYÊN THÀNH NAM 1113554
NGUYEN HUY HOANG 1113160
Trang 2LOI NOI DAU
Ngày xưa những công cụ tính tốn thủ cơng bằng tay, hoặc những bàn tính
cô điển đề hỗ trợ toán học, giờ đây với sự đôi mới của ngành điện tử, công nghệ
thông tin, các công cụ tính toán hỗ trợ các ngành kĩ thuật hiện đại ra đời, với sự mạnh mẽ và nhanh chóng của các công cụ phần mềm, các công cụ phần lớn đã thay thế cho việc thực hiện thủ công, giúp kiểm tra kết quả một cách nhanh chóng,
giảm chi phí Cùng với đó chính là các phần mềm các công cụ hỗ trợ kĩ thuật
như phần mềm Wñ cc, Protell, Protues, Mlap, Matlab Là những công cụ không thể thiếu trong ngành kĩ thuật Sau đây mình sẽ giới thiệu phần mềm Matlab, một công cụ hỗ trợ tính tốn và mơ phỏng hệ thống hết sức trực quan và
chính xác
Hắn là phần mềm Matlab hiện nay không còn xa lạ gì với người dùng, nó là một công cụ hỗ trợ tính tốn và mơ phỏng thực tế rất mạnh, ngoài các tính năng đề thực hiện những điều đó, Matlab còn hỗ trợ tạo giao diện người dùng (GŨI),
Chúng ta lần lượt tìm hiểu ứng dụng từ cơ bản đề hiệu rõ được dao diện GUI là gi, làm thé nao dé bắt đầu với GUI
Trang 3PHU LUC PHAN DAU 0108) 0 PHAN GIUA Phan 1 : Sơ lược về lập trình giao diện người dùng GUIDE trong matlab x00 n
1.2 Bắt đầu với GUI -c+cccttt th thun 1.3 Các bước thực hiện trước khi bắt đầu -cc+c+cscxecsrrere Phần 2 : Thao tác với CiUI ¿tt tt kg ga
2.1 Khởi động GUI - QQ Gà
2.2_ Mô tả chức năng công cụ trong giao diện GUÏ << 5< <+++<<ss 2.3 Giới thiệu hộp thoại Ïnsp€CfOT - C1 1H 1 ve,
Phân 3 : Thiết kế giao diện UI ¿- - tk tk E1 919gr 3.1 Thiết kế giao diện . «ch ch ng Họng như,
Trang 4“2:19 4009) S17
4.3.3 Nút nhấn RESETT c- c5 SEEEE11E1 1 1 1 g1 11x tru
4.3.4 Nút nhân EZXIT -¿- ¿St EkEEEEEEEEEEE SE kg nh người
4.4 Chạy chương trình trên matlab 555cc c1 S2 Phan 5 : Hướng dẫn xuất file ứng dụng đuôi eXe_ - ¿6 cccccceccsrsreở
Phần 6 : Giao diện chương trình sau khi hoàn thành: . ¿- - se + s+xxe2
PHAN CUOI
Trang 5PHAN 1: SO LUQC VE LAP TRINH GIAO DIEN NGUOI DUNG (GUIDE) TRONG MATLAB
11 GUIDELAGI?
- GUI (Graphical User Interface) là giao diện đồ họa có điều khiển bởi nhiều thanh công cụ được người lập trình tạo sẵn, cho tương tác giữa người dùng là giao diện
chương trình, mỗi chương trình được người lập trình tạp sẵn giao diện thực hiện
một vài chức năng được người lập tình tạo sẵn và giao tiếp với người sử dụng - Ung dung của Matlab lập trình giao diện rất mạnh và dễ thực hiện, nó có thể tạo
ra glao diện người dùng tương tự VBB, C++
- GUI bao gém day đủ các chương trình hỗ trợ như thực hiện phép toán LOGIC,
mô phỏng không gian 2D, 3D, đọc hiển thị dữ liệu, liên kết đa phương tiện Giao
tiếp với người dùng thông qua hình ảnh, các nút nhắn thực thi
- Hầu hết GUIchi thực hiện (trả lời) lệnh người dùng thông qua các tác động của
người dùng lên giao diện, người sử dụng không cần biết câu trúc chương trình
vẫn có thể thực hiện được GUI được thực hiện thông qua các hàm
CALLBACK, khi người dùng tác động lên giao diện bằng các cách khác nhau, ham CALLBACK sẽ được gọi để thực thi
1.2 BAT DAU VOI GUI:
- C62 phuong phap để lập trình GUT:
e Cách đơn giản nhất là sử dụng công cụ có sẵn trong GUI Matlab dé lap
trình Ưu điểm của cách này là dễ thực hiện và các hàm FUNCTION được
Trang 6e_ Cách khác được lập trình từ siêu tệp Mfile bằng các hàm FUNCTION do
người lập trình tự viết, nó có ưu điểm là tùy biến cao Tuy nhiên cách này
khó hơn và đòi hỏi người lập trình phải có hiểu biết sâu và trình độ - _ Ở đây với những bài tập đơn giản về giao diện, ta thực hiện cách thứ nhất để
lập trình giao diện với nhưng công cụ được hỗ trợ sẵn trong Matlab - _ Khi thao tác trên giao diện chúng ta không thể thay đổi các hàm trong nó
13 CÁC BƯỚC CÂN THỰC HIẾN TRƯỚC KHI BẮT ĐẦU:
- _ Trước tiên để bắt đầu lập trình ta cần phải xác định mục đích của chương trình là gì?
- _ Sau đó tiến hành xác định các bước thực hiện để mô phỏng giao diện người
dùng sao cho hợp lí và chính xác
- - Bước cuối cùng là viết chương trình và thực thi
Sơ đồ sau đây mô phỏng trình tự thực hiện với GUI:
Designing a Graphical User Interface Understand Specify GUI(s) Requirements - Inputs
* Purpose _ - Controls Add
« Use cases + Displays another
- Interactivity « Behavior window or
* Functionality * Outputs dialog? | mock-up or prototype Design GUI(s) « Sequencing j * Grouping es « Labeling ce « Styling Program GUI(s)
« Initialization Test GUI(s)
Trang 7- Khi bat dau véi GUI, GUI tu động tạo ra các mã tập tin được thực thi bởi
ham Callback function GUI thao tac trên những kí tự mà người dùng nhập
vào vào chuyển sang dạng số học, nói cách khác, giao diện GUI tương tự như những lệnh thực thi trong Comment Windowns
- _ Tất cả các hàm callback thực thi những lệnh chứa trong nó
- _ Chúng ta nên sử dụng chức năng HELP của Matlab để tìm hiểu thêm tất cả
Trang 8PHAN 2: THAO TAC VOI GUI
Day 1a phién ban Matlab R2012A, các phiên bản khác cũng có thê thao tác tương
tự
2.1 KHỞI ĐỘNG GUI:
- _ Thực hiện khởi động Matlab đến GUI theo hình sau:
e_ Khởi động Matlab từ biểu tượng Matlab trên màn hình desktop e_ Trong cửa số Comment Windowns gõ lệnh “guide” và enter: ta được
giao diện màn hình như sau:
+4 MATLAB R2012a -.ñ e Edit Debug Parallel De Vind
ne @ & of FE) | @ | current Folder C\Users\HOANG\Desktop\Ve do thi v ||.) & Shortcuts 2] Howto Add [2] What's New
Current Folder ' O a x) Command Window “OO a xX) Workspace “OH 4 xX} Dep +O 4 x | & Desktop * Vede thi +| 2 & @- @® Newto MATLAB? Watch this Video, see Demos, or read Getting Started x Bl &) RO sel ~!) Select + @-
Ngày > guide Name Nalue Click here to create
Ẩ cenhi f5] oe =] graph fig graph1.m Sx >> m GUIDE Quick Start z - oe or G| pen a project ject:
#) graph.m
©) graph.ig Create New GUI | Qpen Existing GUI
GUIDE templates Preview _ Blank GUI (Defaut)
| GUI with Uicontrols @ GUI with Axes and Menu @ Modal Question Dialog Command History 0 @ x graph1 0š 50*t, “1 lot(t [ ] Save new fig | raph raphi OK | Cancel Help 22/4 graphi tai de Det ^ @ Start Hình 2.1.1: Khởi động GUI
- - Ta có các lựa chon sau :
* Blank GUI (Default): Hép thoai GUI tréng khong có một điều khiển uicontrol nao ca
* GUI with Uicontrols: Hop thoai GUI voi mot vai uicontrol nhu button, Chương trình có thể chạy ngay
Trang 9button, cdc menu để hiển thị đồ thị
* Modal Question Dialog: Hộp thoại đặt cầu hoi Yes, No
* Open Exiting GUI: Đề mở 1 file có sẵn
- Nhap Blank GUI (Default) chon OK để tạo một giao diện bắt đầu với giao
diện trồng, ta được hình ảnh giao diện trong GUI như sau:
4 MATLAB R2012a - 4
File Edit Debug Parallel Desktop Window Help
86) & & BO © | Beh F | @ | curentFolder|C:\Users\HOANG\Desktop\Ve do thi v ||.) Shortc s 2] How to Add (2) What's New Current Folder "1a xi Com untitled.fig - 4 Ea Workspace “O # X)| Dep *O 4 X - x „ đ } a ° xv
J) « Desktop > Vedo thi POO GS Fie edit View Layout Tools Help me wR se set» i @-
Name © DGG 4B 482g ae Pp — = Click here to create
Trang 102.2 MOTA CHUC NANG GIAO DIEN GUI:
Trang 11MO TA CHUC NANG CAC CONG CU CO BAN Cong cu M6 ta
Layout editor Chọn các thành phân từ bảng thành phân, trình bày, và sắp xếp chúng trong các khu vực bồ trí (Tùy chỉnh hiện tên các thành phân: File => Preferences) Align Objects Dùng đề sắp xêp các đôi tượng điêu khiên
Menu Editor Tạo menu cho giao diện
Tab Order Editor Thiết lập các tab và sắp xêp thứ tự của các thành
phân trong bố trí của bạn
Toolbar Editor Thanh công cụ tạo ra có chứa các nút bâm được xác định trước và tùy chỉnh và chuyển đổi nút
Editor Hiện thị , trong trình soạn thảo mặc định của bạn ,
các tập tin mã kết hợp với giao diện đồ họa
M-file editor Mở cửa sô M-flle
Property Inspector Thiét lập các thuộc tính cảu các đôi tượng điều khiên Nó cung cấp một danh sách tất cả các thuộc tính bạn
có thể thiết lập và hiển thị các giá trị hiện tại của
chúng
Object Browser Hiền thị một danh sách phân cập của các đôi tượng
trong giao diện đỗ họa Run Lưu và chạy giao diện hiện tại Res1ze box Tùy chỉnh kích thước giao diện
Position Readouts Liên tục hiền thị vị trí con trỏ chuột và vị trí của các đối tượng được chọn
Trang 12- _ Phía bên trái là nhóm các biểu tượng được Matlab GUI hỗ trợ sẵn: Lok | ⁄ ⁄ ` ~ 4A kK z e Push Button a : là nút nhân, khi nhân vào sẽ thực thi lệnh trong cau trúc hàm callback của nó e Slider — : là thanh trượt cho phép người dùng di chuyển thanh trượt để thực thi lệnh
e Radio Button 2 : nó giỗng như Check Box nhưng thường được sử dụng để tạo sự lựa chọn duy nhất, tức là 1 lần chỉ được chọn 1 trong số các nhóm nhiêu nút Khi một ô được chọn thì các ô còn lại trong nhóm bị bỏ chọn e Check box xi : sử dụng để đánh dấu tích (thực thi) vào và có thê check
nhiều ô để thực thi
° lich ` - ƑẸ 7 A ` ` ` " ` ` ¢ ` 2
e Edit Text — : là nơi các kí tự được nhập vào từ người dùng, người dùng có thê thay đôi được
e Static Text : là các kí tự được hiền thị thông qua các callback, hoặc
thông thường để viết nhãn cho các biểu tượng, người dùng không thể thay
đôi nội dung
e Pop-up Menu : mở ra danh sách các lực chọn khi người dùng nhấp
chuột vào Chỉ chọn được 1 mục trong danh sách các mục
e List Box = : hộp thoại danh sách cách mục, cho phép người dùng chọn một hoặc nhiều mục
e Toggle Button = : là nút nhân có 2 điều khiến, khi nhấp chuột và nhả ra,
nút nhẫn được giữ và lệnh thực thị, khi nhấp chuột vào lần thứ 2, nút nhân nha ra, hủy bỏ lệnh vừa thực thị
Trang 13Axes ™ đây là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính
bao gồm: không gian 2D (theo trục đứng và trục ngang), 3D (hiên thị không
gian 3 chiều)
ae
Panel : tạo ra một mảng nhóm các biêu tượng lại với nhau giúp ta dễ kiểm soát và thao tác khi di chuyển
Te
Button Group ”: quản lí sự lựa chon của nút Radio Button
Trang 15MOT SO THUOC TINH TRONG INSPECTOR Thuộc tính Mô tả
BackgroundColor Màu nên của đôi tượng BeingDeleted Đỗi tượng đã được xóa
BusyAction Callback thường xuyên gián đoạn ButtonDownFcn Nút nhân Callback thường xuyên
CData Hình ảnh màu thật hiển thị trên điều khiên
Callback Điêu khiến hoạt động
Clipping Thuộc tính này không có tác dụng trên các đôi tượng điêu khiến CreateFcn Thường xuyên thực hiện Callback trong quá trình tạo đôi tượng DeleteFcn Thường xuyên thực hiện Callback trong quá trình xóa đôi tượng Enable Kích hoạt hoặc vô hiệu hóa các đôi tượng điêu khiến Extent VỊ trí hình chữ nhật (chỉ đọc) FontAngle Kiéu chit nghiéng FontName Kiêu chữ FontS1ze Cỡ chữ FontUnits Đơn vị kích thước font chữ FontWeight Nét chữ ForegroundColor Màu chữ
HandleVisibility Cho dù xử lý có thê truy cập từ dòng lệnh và ảnh minh hoạ
HitTest Lua chon bang cách click chuột Thuộc tính này không có tác dụng trên các đôi tượng điêu khiên
Trang 16
HorizontalAlignment | Căn ngang của chuỗi nhãn
SliderStep Chê độ Callback gián đoạn thường xuyên
KeyPressFcn Nhân phím Callback thường xuyên
ListboxTop Chỉ sô trên hâu hết các chuỗi hiên thị trong hộp danh sách
Max Giá trị lớn nhất (phụ thuộc vào đôi tượng điêu khiến) Min Giá trị nhỏ nhật (phụ thuộc vào đôi tượng điêu khiên)
Position Kích thước và vị trí của đôi tưỡng điêu khiên
SliderStep Kích thước bước nhảy của thanh trượt
Sfring Nhãn của các đôi tượng điêu khiên, các mục hộp danh sách, lựa chọn trình đơn pop-up
Style Kiêu của đôi tượng điêu khiên
Tag Dùng đê phân biệt giữa các đôi tượng điêu khiên
TooltipString Tạo tip cho đôi tượng điêu khiên
UIContextMenu Kết hợp một trình đơn ngữ cảnh với đôi tượng điêu khiền
Units Đơn vị đo lường
UserData Dữ liệu liên kết với đôi tượng điêu khiến
Value Giá trị hiện thời của đôi tượng điều khién
Visible Điêu khiên thuộc tính nhìn thây của các đôi tượng
Trang 17
2.4 MOT VAI CHUC NANG MO RONG:
Chú ý, để tạo sự thắng hàng, cột của các hộp thoại cho đẹp mắt ta làm như sau: - Nhấn giữ phím Ctrl và nhập vào các hộp thoại muốn chỉnh sửa, trên Menu
chon Align Objects + Hộp thoai Align hién ra như sau: if untitied1.fig "- File Edit Vieu Layout Tools Help DGH|4aa"* 4B |e |e — Align Objects - ' Ea [3k] scm | | ® my os feelr | (rar Align Ỉ h i q BHE nHc aa = Distribute II || ee ey ee] pee eee Set spacing |cU aa Pal Fe) | =x Horizontal Align *ịP 8 |ä Distribute 1ƯIEPIRT 13 Set spacing | 2Ð OK Cancel Apply i v < › Tag: figurel Current Point: (610 100] Position: [520, 343, 611, 457]
Hình 2.4.1 : Hộp thoại Align ObJects
- Trong hộp thoại trên ta có thê cân chỉnh các nút, nhóm nút sao cho chúng thắng hàng, thắng cột và đều nhau Sau khi cân chỉnh nhấn nút Apply để lưu thay đối -_ Bây giờ ta thiết lập thuộc tính chung cho giao diện (toàn bộ vùng thiết kế hay
nên giao diện) :
Trang 18e Nhap đúp chuột vào bất cứ vị trí nào trên nền giao diện để vào hộp thoại
Inspector (hoặc trên menu chọn View -> Property Inspector), hộp thoại Inspector hiện ra như sau:
e Thiết lập Tag là “exit”
-_ Tiếp tục tùy chọn nâng cao , vào Menu Tools => GUI Options cy untitled 1.fig - a File Edit View Layout Tools Help 7) E3 | * 5à 2 Œ |3 PEmrưấ | BỊ E6 92 | Xí ° @® xi m GUI Options _-= [bit rwr Ga =i Resize behavior: Non-resizable Ma El
ie Command-line accessibility: Callback (GUI becomes Current Figure within Callbacks) v Ts =x (@) Generate FIG file and MATLAB file
I2 Generate callback function prototypes
[Ww] GUI allows only one instance to run (singleton)
[| Use system color scheme for background (recommended) (> Generate FIG file onty
OK Cancel Help
< >
Tag: figure] Current Point: [184, 329] Position: [520, 343, 611, 457] Hinh 2.4.2 : GUI Options
- Trén hép thoai Resize behavior chon dong sé 2 (Proportional), dong nay cho
phép người dùng thay đổi khích thước của giao diện và các đối tượng cũng tự
động thay đôi kích thước phù hợp với nên giao diện, nhấn OK để lưu thay đổi
Trang 19PHAN 3: THIET KE GIAO DIEN GUI
***Trong phân này, giải thích các thông số trong Inspector đồng thời chỉnh sửa trên từng hộp thoai sẽ được trình bày song song
*** Yêu cầu : thiết kế ứng dụng có chức năng vẽ các tín hiệu tương tự cơ bản ( sóng vuông, sin, cos , răng cưa ) yêu câu nhập vào tân sô và thời gian
3.1 KHỞI TẠO CÁC ĐỐI TƯƠNG DIEU KHIEN:
- Nhan té hop phim Ctrl + S để thực hiện lưu file, sau khi chọn đường dẫn đề lưu file (Chú ý không lưu file với các biến đặc biệt hoặc bằng các con số khởi dau),
nhân save Matlab sẽ tự động tạo ra 2 file gdm một file m và một file fig, trong đó file m là Mfile chứa các hàm Matlab đã tạo sẵn hỗ trợ giao diện
Trang 213.2 TẠO THUỘC TÍNH CHO CÁC DOI TUONG:
- Sau day la bang mô tả các giá trị và thuộc tính của các hộp thoại trong hình,
Trang 22- Hinh sau mé ta cach thay déi giá trị trong 6 String cua Select Function: Eổ eh ar et BusyAction ButtonDownFcn CData Callback Clipping CreateFen DeleteFcn Enable #l Extent FontAngle FontName GontSize) FontUnits FontWeight #l ForegroundC olor HandleVisibility HitTest HorizontalAlignment Interruptible KeyP ressFcn ListboxTop Max Min 4] Position SelectionHighlight | 4) SliderStep SS @ Inspector; wicontrol (ham “ (II Square”) - queue | [0x0 double array] [1x1 function_handle array) on [1x1 function_handle array] en [0 D 7.8 1.462) normal MS Sans Serif 8.0 points normal = on en center on 1,0 1.0 0.0 [21.8 17.385 20,2 5.154] on [0.01 0.1] | Square popupmenu ham “® & & % % we & 4 4 % % & & 4 muy’ PRU | he) | Le”! eee << graph2.fig = 19 | > | ` axesl er String ) Square sin Cos Sawtooth | 4 | OK Cancel
Hình 3.2.1: Thiết lập các thuộc tính trong hộp thoai Inspector
- _ Sau khi viết xong, nhân OK để lưu lại
Trang 23- _ Sau khi chỉnh sửa các thông số ta dùng chuột đề di chuyền các hộp thoại, bố
Trang 243.3 MOTSO TINH NANG MO RONG:
Chu y, dé tao su thang hàng, cột của các hộp thoại cho đẹp mắt ta làm như sau: - Nhấn giữ phím Ctrl và nhập vào các hộp thoại muốn chỉnh sửa, Trên Menu
chọn Align Objects “*_ Hép thoai Align hién ra: F ile Edit HG@a|s =A” & a a h& Select Push Button som Slider ® Radio Button M Check Box
felt Edit Text
TY) Static Text x9 Pop-up Menu =i] Listbox Toggle Button EI Table i Axes Ta) Panel 78) Button Group =X ActiveX Control Tag: figurel | Hae coe — Time Distribute a3 | Ss Srey axest | = ¬ o Align | b = al Opti Distribute A PBR ae as $ Set snacing |20 pixels ® OK Cancel Apply graph2.fig Help Align Objects Vertical Align Horizontal Position: [520, 383, 560, 417] Current Point: [5, 152]
Hình 3.3.1: Hộp hoại Align ObJects
- _ Trong hộp thoại trên ta có thể cân chỉnh các nút, nhóm nút sao cho chúng
thẳng hàng,thăng cột và đều nhau Sau khi cân chỉnh nhân nút Apply đề lưu
thay đối
- _ Trên hộp thoại Resize behavior chọn dòng số 2 (Proportional), dong nay
cho phép người dùng thay đổi khích thước của giao diện và các đối tượng cũng tự động thay đổi kích thước phù hợp với nền giao diện, nhân OK dé
lưu thay đồi
Trang 25PHAN 4: THUC THI HAM 4.1 GIAO DIEN TRONG MFILE:
- _ Khi đã cân chỉnh xong toàn bộ giao diện trong GUI, nhắn F5 (hoặc nhân tổ
hợp phím Ctrl + T hoặc nhấp vào biểu tượng trên thanh Menu)
- Khi Run, Matlab sé tu chạy file m va hién thi doa dién đồ họa lên màn
hình ở đây ta bắt đầu thao tác với file m
+ Editor - C:\Users\HOANG\Dropbox\hoang - nam\Tao_song (official)\graph2.m - oO
File Edit Text Go Cell Tools Debug Desktop Window Help ui ax
Dew -& Mv eC |Sb-|& @ @ f |B) - 2&4 BB BF IB DB || pace #x |1 x
"a 56 | - |1.0 + | + |1.1 » | |
158 % — - Executes on gelection change in ham ^ -
140 function ham Callback (hObject, eventdata, handles)
141 = nobject handle to ham (see GCBO)
142 3% eventdata reserved — to be defined ina future version of MATLAB 143 % handles Structure with handles and user data (see GUIDATA)
144 _
145 % Hints: contents = cellstri(get (nobject, 'String')) returns ham contents as fc
146 = contentsiget (nobject, "Value")} returns selected item from ham _ 147
148 ¬
149 % -— Executes during object creation, after setting all properties ¬
150 Function ham CreateFon (hobject, eventdata, handles) —
151 3 hCb1iecr handle to ham (see GCBO)
152 3 eventdatea reserved — to be defined ina future version of MATLAB
153 % handles empty — handles not created until after all CreateFens called = 154
155 % Hint: popupmenu controls usually have a white background on Windows ¬
158 5 See ISPC and COMPUTER ¬
157 — if ispc £6 isequal (get (hObject, "BackoqroundColor'), get(o, "defaultUicontrolsbsa: —
15H — set (hObject, "BackgroundColor', 'white")? _
159 — end aa
160 si
161 =
162 3 — —- Executes on button press in reset —
163 function reset Callback (hObject, eventdata, handles)
1643 — #=œt+ (hancllesz.+anzo, "Z=Trxri1ri7"°,g 66} v
< >
qraph+2 / start_Callback Ln 130 Col 28 OVR
1
Hình 4.1.1: Giao diện Mille
- _ Khi ta chưa thao tác trong Trong file m xuất hiện như trên hình, trong đó, tất cả các hàm function đều được Matlab hỗ trợ tạo sẵn các hàm chức năng
có liên quan, ta chỉ việc thao tác trên đó
- - Mỗi sau một hàm bất kì đều có các chú thích bên dưới (sau dẫu %), ta có thể xóa toàn bộ chúng đi đễ dễ nhìn cũng không ảnh hưởng đến các hàm
Trang 26- Trong Mfile c6é san cdc ham callback, ta c6 thể tìm trong Mfile các hàm liên
quan đề viết câu lệnh, tuy nhiên, đề nhanh hơn chúng ta có thê làm như sau:
e_ Quay lại màn hình giao diện GUI vừa thiết kế, nhấp vào hộp thoại muốn
thực thi hàm callback, nhấp chuột phải chọn View Callbacks ->
Callback, Như hình sau: a MATLAB R2012a - 4 File Edit Debug Parallel Desktop Window Help = 74/47 elavalom 3 E5 H J =e = my < | Shortcuts (@] Howto Add [#) What's New qn ene |
Current Folder J R20128 > bin > + 2|@ @4}— Ae7710 790 26 ch na _Ẻ XỈn ö gỊ| z S8 = 2 œ4 hai BI 9> i = =—r = man ; | pace ae [fa] Fan MR | | set =| | select + lik @- 4 O # X| Dep *'H 2 x :
h Select | L Val
Name © Frequency | SÀNG Click here to create
[#š] worker.bat [#] Push Button I or open a project
|_| ProductRoots nes Slider | |
&) mw_mpiexec.bat axes] J msvc_modules_installer.pm ®& Radio Button
J mexutils.pm Check Box | | mexsetup.pm are v [SE] mexext.bat fr Edit Text a I j me.nl TT Static Text
[Šš] mex,bat
[S8] mcc.bat #3 Pop-upMenu '|
3Š] mbuild.hat EH Listbox rOptions——————
+É\ matlab.exe h 2 ï | | > (&) matlab.bat Tegule Button [ n START p — -
_—j license,tt EB Table i ¬ Cut Ctrl+X jand History +" 1đ ®= x
lcdata_utf8xml @ Hold 22/4/2014 10:08 EA
—¡ ledata_utf8xm _| lcdata.xsd fi Axes [ Ord’ Copy Ctrl+C anne g 22/4/2014 10:34 B aie r
_| Iedata.xml (75) Panel = = leploytool
4) insttype.ini Fl] Button Group Clear 22/4/2014 11:09 E:
&) ideaL Ip.m — [ Duplicate Ctrl+D | | 23/4/2014 1:04 AM _J hs_err_pid1488,log =X ActiveX Control wa bu z6 32
[&) deploytool.bat RE Bring to Front Ctrl+F EXIT aay i teat re = i i | mini 1 23/4/2014 2:01 PM ) baitaplonMatlab_bai_1.m | Send to Back Ctrl+B | Callback | | a 2 <:01 E ® baitaplonMatlab_bai_1.fig | paide by xin32 aye CreateFcn Š574/8N15 g8 gà sject Browser 23/4/2014 8:12 PM util DeleteFcn ủi fe = Editar on Ũ > luide MU AI =gistry onVownrcn os {2014 40-235
BD mndinegietry Tag: pushbutton5 —————— 84, B5, 36] Sater Shes (0165: nh
$ SS View Callbacks Ai KeyPressFcn FEEE—— nid£ Property Inspector Bl s—— 26/4/2014 9:43 AM > ưu1de «< 1052 AM ~ Gal © Hình 4.1.2: Tìm hàm calback cho đối tượng điều khiến == P0 05
e Sau do ham callback sé tu dong duoc gọi và con trỏ chuột sẽ tìm dén vi trí của nó trong Mfile
-_ Bây giờ khi muốn gọi một hàm nào ta cũng có thê thực hiện như trên Sau
đó tiên hành việt câu lệnh cho nó
Trang 274.2 MOT SOHAM TRONG GUI:
Ham callback dugc lap trinh cho cac nut button, checkbox, edit text
nhung static text va axes thi khéng co ham callback
Mỗi một callback được việt với cầu trúc như sau: function Tag_Callback(hObject, eventdata, handles)
Với Tag chính là gia tri cua Tag ma ta da dat khi tạo giao diện Các hàm chứa bên trong callback bao gồm hObject, evendata,handles
hObject là hàm truy cập nội bộ của mỗi function riêng lẽ Evendata là hàm xác định thuộc tính của function
Handles là hàm truy cập liên kết giữa các function, nó bao gồm tất cả các câu trúc của người dùng, được sử dụng để truy xuất qua các điều
khiên khác
Hàm Get cho phép ta gợi thuộc tính của đối tượng
Hàm Set cho phép ta đặt giá trị cho thuộc tính của đối tượng 4.3 LẬP TRÌNH CÁC ĐỐI TƯƠNG : 4.3.1 NUTNHAN START: Thực hiện thao tác như bước vừa nói trên (minh họa trong hình), hàm callback sẽ tự động gọi:
% - Executes on button press in start
function start Callback (hOb Ject, eventdata, handles) f=str2num(get (handles.tanso, 'string'))-
set (handles axesi, 'Visible','on'): t=eval (get (handles.thoigian, 'string')); if get (handles.han, 'value')=1;
plot (handles axesi,t, square (2*pi*50*t,50), '"LineWidth",2); elseif get (handles ham, 'value')==2;
plot (handles axesl1,t, sin(2*pi*50*t), "LineéWidth',2); elseif get (handles.ham, 'valuc')=—3;
plot (handles axes1,t,cos (2*pi*50*t), 'LineWidth',2): elseif get (handles.ham, 'value')=—4;
plot (handles axesi,t, sawtooth (2*pi*S0*t), 'LineWidth',2):3 end
axis([0 O.1 -2 2])
Trang 28- _ Lần lượt viết các hàm sau vào functions : f=str2num(get(handles.tanso, ‘string'));
set(handles.axes1,'Visible','on');
t=eval(get(handles.thoigian, 'string'));
if get(handles.ham, ‘value')==1;
plot(handles.axes 1,t,square(2*pi*50*t,50), ‘Line Width',2);
elseif get(handles.ham, 'value')==2;
plot(handles.axes1,t,sin(2 *pi*50*t), ‘Line Width’, 2);
elseif get(handles.ham, ‘value')==3;
plot(handles.axes1,t,cos(2*pi*50*t), ‘Line Width’, 2); elseif get(handles.ham, '‘value')==4;
plot(handles.axes1,t,sawtooth(2 *pi*50*t), 'LineWidth’,2); end
axis([0 0.1 -2 2]);
Giải (thích:
> Cau lệnh 1: ƒ=sír2num(get(handles.tanso, string ')); = f: 141 bién duoc gan
= Lénh get dé lay gid trị thuộc tính của string, ở đây giá tri string duoc
nhập từ bán phím , matlab sẽ hiểu nó là 1 chuỗi các kí tự get(handles.tanso, ‘string')
Trang 29= Lệnh str2num hoặc str2double dùng để chuyển kí tự thành 1 số Hoặc lệnh num2str dé chuyển số thành kí tự
ƒf=str2num(get(handles.tanso, 'string')); % lẫy giá trị chứa trong 6 tanso và chuyên chuỗi thành số lưu vào biến f
> Cau lénh 2: set(handles.axes1,'Visible’,'on');
Đặt thuộc tinh visible cua axes1 6 trang thai on > Cau lénh 3: t=eval(get(handles.thoigian, 'string'));
"_ Hàm eval cho phép ta chuyển đổi một chuỗi thành một vector hay mảng Ví dụ: thực hiện lệnh
a=eval('0:1:6')
>>a= 0 1 2 3 4 5 6
Kết quả trả về là vector từ 0 đến 6 có bước nháy là 1 > Cau lénh 4: if get(handles.ham, ‘value')==1;
Lénh get lẫy giá trị value cua 6 “ ham”
Lénh if xét diéu kiện nếu value của ô “ham” =1 thực hiện lệnh bên
dưới
> Cau lệnh 5: plot(handles.axes1,t,square(2*pi*50*t, 50), 'LineWidth',2); Cu phap : Plot ( dia chi vé, vé_x,y, ‘cac thudc tinh’)
Lệnh square(2*pi*50*t,50): vẽ đồ thị sóng vuông > Cau lệnh 6 : xem lại câu lênh 4
> Câu lệnh 7 : elseif get(handles.ham, value')==2;
Trang 30Néu giá trị value của ô “ham” == 2 thực hiện lệnh bên dưới > Cau lệnh 8 ,9,10,11,12 tương tự
Cau lénh 13: axis([0 0.1 -2 2]); 4 Can chỉnh lại trục dé thi Cu phap : axis ( [ xmin xmax ymin ymax ] )
4.3.2 BANG OPTIONS GROUP : Cc I2 L bao cao.pdf x | = &— > Œ_ Lì file///C/Users/HOANG/Dranhoxh File Edit View Layout Tools Help HEB 428° | 4Bh4 PRP 0 Km:
| [at] Push Button
eon Slider | , , axes!
@® Radio Button ETm=l , | Check Box ] | | |
Wilf Edit Text ——'
Ii) Static Text | 3 Pop-up Menu = 5 ll | El Listbox “Options Fl Toggle Button START | El Table + @Hoden i Axes === © Grid on [i Panel Cut Ctrl+X | [El Button Group : Copy Ctrl+C | =X ActiveX Control —— Ctrl+V : CC RESET : St Clear EXIT | Duplicate Ctrl+D Bring to Front Ctrl+F
‹ Send to Back Ctrl+B CreateFcn
Trang 31- Lần lượt viết các câu lệnh :
function uipanel3_ SelectionChangeFcn(hObJect, eventdata, handles) Ứ get(handles.erid, vaÌue')== Ï grid on else grid off end if get(handles.hold, 'value')==1 hold on else hold off end
- Giải thích : get(handles grid, '‘value')==
Hàm trên tìm giá trị value của ô Grid on và Hold on tương ứng , nêu được chon
Trang 32set(handles ham, 'value’, 1); set(handles.axes1, ‘visible’, ‘off'); cla; Giai thich: > Cau lénh 1, 2: set(handles.tanso, 'string’,"'); sef(handles.thoigian, string, "); L 66
Đặt lại giá trị của ô “tanso”, “thoigian” là“ “ > Câu lệnh 3,4: sef(handles hold, value 0);
sef(handles erid, value ,0); Bỏ chon 2 6 ‘Grid on’ va ‘Hold on’ > Cau lénh 5: set(handles.ham, ‘value',1);
Mac dinh hién thi function Square
> Cau lénh 6: set(handles.axes 1, ‘visible’, ‘off'); Tắt hiện thị hệ trục tọa độ
> Câu lênh 7: cla;
Trang 334.4 CHAY CHUONG TRINH TREN MATLAB
Sau khi lập trình cho các phím gọi cần thiết ta bắt đầu chạy chương trình
chúng ta làm thao tác như sau :
- NhdnRun ™! ~ trén giao dién Edito M-file
#! Editor - C:\Users\NGUYEN\Dropbox\hoang - nam\Tao_song (official)\graph2.m 4O ax
DER 4B |S] - Mee fe Ce -P HB BM IB B | stack| Base v | fe AOA oO ax "ESB | - [0 [+ | +1 | x | of | @
110s‘) function thoigian CresteFcn(hObie ™ |
120
121
122 3 - Executes on button press in
123 LlIfunction srart Callback(hGbiject, "
124 — #=8crz2num (ger (handles.tanso, "srri =
1575 — set (handles.axesi,'Visible','on') = 126 — t=eval (qet (hand1les.thoiqian, 'scri = đi — if get (handles.han, 'value')=1; i
128 > Plot (handles.axesi,t,square (2 Square v =
125 — elaeif qet (handle3.ham, !+a1ue ! )—== =
130 = Plot (handles.axesi,t,sin(?*pi =
Tad) = elseif get (handles.ham, 'value')= =
132 = Plot (handles.axesi,t,cos (2?*pi Options = 133 — elseif get (handles.ham, 'value')= = 134 — Plot (handles.axesi,t,sawtooth
135 — end w
z nhachap.m x | graph2.m x|
Command Window ©) Grid on 4oax
@ New to MATLAB? Watch this Video, see Demos, or read Gett} x
ees To customize keyboard shortcuts, use = restore previous default settings by s | RESET EXIT | A
from the "Active settings” drop-down 1
Sau khi nhắn Run chạy chương trình , matlab sé tu dong Save lai M-file
Trang 34PHẢN 5ã : HƯỚNG DẪN XUẤT ỨNG DỤNG ĐUÔI EXE
Đề có thê dịch ứng dụng chúng ta vừa làm ra yêu cầu bạn phải có toolbox
MATLAB® Compiler™ Tuy nhiên chương trình matlab cũng hỗ trợ biên dịch chương trình Deploytool
minh xin gidi thiéu cach tao file exe bang Deployment Tool Céng cu giao
diện thân thiện, không phải gõ lệnh, chúng ta làm theo các bước sau đây : bước 1 Chọn công cụ biên dịch C
Bước này chỉ cần thực hiện 1 lần duy nhất ban đầu, nếu muốn chọn công cụ biên dịch khác thì chạy lại bước này
Tai command window g6 lénh mbuild -setup
Bars gr -_?###
File Edit Debug Parallel Desktop Window Help
HS £ BBS © Bev A O| cumentFolder: c\Users\NGUYEN\Dropbox\hosng - nam\Tao_song (official) Wl
Shortcuts @] How to Add [2] What's New
Current Folder "O74 x §
h v + @ Newto MATLAB? Watch this Video, see Demos, or read Getting Started xế
@ & |) « Tao_song (official) » 8| Getting Started 3
D Name + >> mbuild -setup a ũ T Please choose your compiler for building standalone MATLAB applications: g a ao_song n = k fe Would you like mbuild to locate installed compilers [y]/n? > ? 2 gph - 1 ð Tao _song.prị 3 a 5 a Nhẫn “y” để tiếp tục , File Edit Debug Parallel Desktop Window Help
OG) & & BD © | SoH Z| @ | current Folder! C\Users\NGUYEN\Dropbox\hoang - nam\Tao_song (official) a Ea
Shortcuts (@] Howto Add [@) What's New
Current Folder H18 x š
$ (Ì( « Tao song (official) > x.Ø li @œ New to MATLAB? Watch this Video, see Demos, or read Getting Started x ý
a Name >> mbuild —setup a
- Please choose your compiler for building standalone MATLAB applications:
& ) Tao_song 5
be peaphihg 1 Would you like mbuild to locate installed compilers [y]/n? y 2 tối Tao song mị Select a compiler: `
[1] Microsoft Visual C++ 2008 SP1 in C:\Program File3 (x86) \MiCro3oft Vi3ual Studio 9.0
[0] None
Sx Compiler:
Trang 35Chon chuong trinh compiler Sau đó nhẫn “y” để đồng ý và kết thúc Select a compiler: [1] Microsoft Visual C++ 2008 SP1 in C:\Program Files (x86)\Microsoft Visual Studio 9.0 [90] None Compiler: 1
Please verify your choices:
Compiler: Microgoft Visual C++ 2008 5P1
Location: C:\Program Files (x86)\Microsoft Visual Studio 9.0
Are these correct [y]/n? y
EEE EEE EERE EEE EEE EERE EEE EEE EEE EERE EEE ETERS RHEE
Warning: Applications/components generated using Microsoft Visual Studio 2008 require that the Microsoft Visual Studio 2008 run-time libraries be available on the computer used for deployment To redistribute your applications/components, be sure that the deployment machine has these run-time libraries
RRR REE ERE EEE EEE EERE ERE REE EEE EEE EERE RRR REE EEE EEE ER ER RR ee ee & &C
Trying to update options file: C:\Users\NGUYEN\AppData\Roaming\MathWorks\MATLAB\R2009b\ compopts.bat From template: D: \homus\MatLab\bin\win6é4\mbuildopts\msvc90compp.bat
Done
^ fs >> |
Bude 2: Chay céng cu Development Tool
Tai command Window g6 lénh >> deploytool Sau đó hộp thoại từ chương trình deploytool sẽ hiện ra [0] None Compiler: 1 Please veri h New | Open Compiler: Mi
Location: C: Name: Untitled prj
Bre these co Location: C:A\Users\NGUYEN\Dropbox\hoang - nam\Tao_song (official) ail Target: đ Windows Standalone Application »
RRR EER EES ———— — — =
Warning: Al
RRR RR KR REE EEE EEE ER EET RP ES RREERE EES EEE EEE
Trang 36Từ hộp thoại deploytool ta có các lựa chon sau : Thẻ New để tạo mới 1 dự án
© Name : Tên chương trình
© Location : Nơi lưu dự án
o Taget : kiểu ứng dụng tạo ra chúng ta chọn
Target: (3 Windows Standalone Application v
Thẻ Open để mở 1 dự án đã build
Nhan OK , sau đó tại giao diện của deploytool , Add main file
File Edit Project Debug Parallel Desktop Window Help
ie\4a84 6 | aga @ | Current Folder: C:\Users\NGUYEN\Dropbox\hoang - nam\Tao_song (official) v | f8 Shortcuts 2] Howto Add [2] What's New
Current Folder * 0 # x Command Window ‘DeploymentToo |
ao Ri « Tzosong (official) » x0 ( Naw to MATLAB? Watch this Video, see Demos, or read Getting Started, & Untitled pr +4 @ a a
[1] Microsoft Visual C++ 2008 SP1 in C:\Program Files (x86)\Microsoft Visual Studio 9.0 a LÌ Nam 2 Build ° 8| ,Ì¿ Tao song [0] None Main File 2 Ê) yaph2#g 5 fe ‹ > IS © gaph.m - Compiler: 1 - 3 a Tao_song.pr) ‘Add main file 3 Untitled! prj : a
ẽ P9 Please verify your choices: Shared Resources and Helper Files 8
Compiler: Microsoft Visual C++ 2008 SP1 Place images, data files, and GUts (fig [i
Location: C:\Program Files (x86)\Microsoft Visual Studio 9.0 Also place here:
Are these correct [y]/n? y # Functions that are called usin # Functions that are not on the
FOR ROR RRR RR RR RRR RRR # K ‹ —_ ˆ- ——
Warning: Applications/components generated using Microsoft Visual Studio ope ‘Add files/directories 2008 require that the Microsoft Visual Studio 2008 run-time
libraries be available on the computer used for deployment To redistribute your applications/components, be sure that the deployment machine hag these run-time libraries
KERR RRR R RRR E ERE RRRRRRE RE RERRE RRR
Trang 37Bước 3 : Dịch chương trình chon Project => Build File Edit Debug Parallel Desktop 1 : L1 gỗ| 4 Rename Project | Bể =) | @ | c Shortcuts | Settings i Current Fa kaiieiClunl ngu: | Build | : + + *% < | Package ~ || &-~ LÊ] Name = & Jo Tao_song mm graph2.fig | Tao_song.pry 4 Untitled prj
Đề đóng gói chương trình chọn Project => Package
File Edit Debug Parallel Desktop W “ c5 | Rename Project ry =) | © | i Shortcuts Settings hs New Current F “oO ax 4“ s | bb [T1 Name = + de Tao_song #ì qraph2.fiq #_| graph3.m Build Package ~ | — | CC Tao_song.prj (3 Untitled1.prj
Lưu ý : Để chạy được chương trình sau khi xuất ra máy tính phải hỗ trợ
MCRinstaller , matlab có hỗ trợ sẵn chương trình MCRinstaller , ching ta chi can cài đặt vào máy link chương trình :
\MatLab\toolbox\compiler\deploy\win6A\ MCRiInstaller
Trang 38
PHAN 6: GIAO DIEN CHUONG TRINH SAU KHI HOAN THANH
TRUONG DAI HOC KHOA HOC TU NHIEN KHOA : VAT LY - VAT LY KI THUAT
BO MON : VAT LY DIEN TU
UNG DUNG VE CAC TIN HIEU TUONG TU CO BAN
MON > THUC TAP CAUYEN DE 4 Time
sinh vien thue hien : os