Báo cáo Lập trình Guide giao diện
PHỤ LỤC
PHẦN ĐẦU
Lời nói đầu .
PHẦN GIỮA
Phần 1 : Sơ lược về lập trình giao diện người dùng GUIDE trong matlab .
1.1 GUI là gì? .
1.2 Bắt đầu với GUI .
1.3 Các bước thực hiện trước khi bắt đầu .
Phần 2 : Thao tác với GUI .
2.1 Khởi động GUI .
2.2 Mô tả chức năng công cụ trong giao diện GUI .
2.3 Giới thiệu hộp thoại Inspector .
Phần 3 : Thiết kế giao diện GUI .
3.1 Thiết kế giao diện .
3.2 Tạo thuộc tính cho các đối tượng .
3.3 Các tính năng mở rộng .
Phần 4 : Thực thi hàm .
4.1 Giao diện M.file .
4.2 Một số hàm trong GUI .
4.3 Lập trình .
4.3.1 Nút nhấn START .
iii
4.3.2 Bảng OPTIONS .
4.3.3 Nút nhấn RESET .
4.3.4 Nút nhấn EXIT .
4.4 Chạy chương trình trên matlab .
Phần 5 : Hướng dẫn xuất file ứng dụng đuôi exe .
Phần 6 : Giao diện chương trình sau khi hoàn thành .
PHẦN CUỐI
Tài liệu tham khảo .
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 ĐIỀU KHIỂN:
- Nhấn tổ hợp phím 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 đầu),
nhấn save Matlab sẽ tự động tạo ra 2 file gồm 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.
- Lần lượt kéo thả các nút như hình sau:
Hình 3.1.1: Khởi tạo các đối tượng điều khiển.
16
- Mỗi hộp thoại có Inspector , bằng cách nhâp đúp chuột vào hoặc chuột phải
chọn Property Inspector.
- Sau đây là hình ảnh được đánh số để đánh dấu từng thay đổi một:
Hình 3.1.2
17
3.2 TẠO THUỘC TÍNH CHO CÁC ĐỐI TƯỢNG:
- Sau đây là bảng mô tả các giá trị và thuộc tính của các hộp thoại trong hình,
chúng ta tiến hành thay đổi các giá trị tương ứng theo bảng sau:
STT Tên thuộc tính Giá trị thuộc tính
1 string Frequency
2 String
tag tanso
3 String Time
4 String
Tag thoigian
5 String Function
6 String Square
Sin
Cos
sawtooth
Tag ham
7 Title Options
8 String START
Tag Start
9 String Hold on
Tag hold
10 String Grid on
Tag grid
11 String RESET
Tag reset
12 String EXIT
Tag exit
13 Tag axes1
Visible off
18
- Hình sau mô tả cách thay đổi giá trị trong ô String của Select Function:
Hình 3.2.1: Thiết lập các thuộc tính trong hộp thoại Inspector.
- Sau khi viết xong, nhấn OK để lưu lại.
19
- 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ố
trí hộp thoại theo mong muốn, ta được giao diện như sau:
Hình 3.2.2: Giao diện của ứng dụng.
20
3.3 MỘT SỐ TÍNH NĂNG MỞ RỘNG:
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
chọn Align Objects . Hộp thoại Align hiện ra:
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), dòng này
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.
21
PHẦN 4 : THỰC THI HÀM
4.1 GIAO DIỆN 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ẽ tự chạy file .m và hiển thị doa diện đồ họa lên màn
hình. ở đây ta bắt đầu thao tác với file .m
Hình 4.1.1: Giao diện Mfile.
- 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.
22
- Trong Mfile có sẵn các hàm callback, ta có 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:
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:
Hình 4.1.2: Tìm hàm calback cho đối tượng điều khiển.
Sau đó hàm callback sẽ tự động được gọi và con trỏ chuột sẽ tìm đến vị
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ó.
23
4.2 MỘT SỐ HÀM TRONG GUI:
- Hàm callback được lập trình cho các nút button, checkbox, edit text…
nhưng static text và axes… thì không có hàm 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à giá trị của Tag mà ta đã đặt 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 đinh 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 NÚT NHẤN 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:
24
- 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.axes1,t,square(2*pi*50*t,50),'LineWidth',2);
elseif get(handles.ham,'value')==2;
plot(handles.axes1,t,sin(2*pi*50*t),'LineWidth',2);
elseif get(handles.ham,'value')==3;
plot(handles.axes1,t,cos(2*pi*50*t),'LineWidth',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:
Câu lệnh 1: f=str2num(get(handles.tanso,'string'));
f: là 1 biến được gán
Lệnh get để lấy giá trị thuộc tính của string, ở đây giá trị string được
nhập từ bán phím , matlab sẽ hiểu nó là 1 chuỗi các kí tự .
get(handles.tanso,'string')
25
Lệnh str2num hoặc str2double dùng để chuyển kí tự thành 1 số.
Hoặc lệnh num2str để chuyển số thành kí tự.
f=str2num(get(handles.tanso,'string')); % lấy giá trị chứa trong ô
tanso và chuyển chuỗi thành số lưu vào biến f.
Câu lệnh 2: set(handles.axes1,'Visible','on');
Đặt thuộc tính visible của axes1 ở trạng thái on.
Câu 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.
Câu lệnh 4: if get(handles.ham,'value')==1;
Lệnh get lấy giá trị value của ô “ ham”
Lệnh if xét điều kiện nếu value của ô “ham” =1 thực hiện lệnh bên
dưới
Câu lệnh 5: plot(handles.axes1,t,square(2*pi*50*t,50),'LineWidth',2);
Cú pháp : Plot ( địa chỉ vẽ, vẽ_x,y, ‘các thuộc tính’)
Lệnh square(2*pi*50*t,50): vẽ đồ thị sóng vuông.
Câu lệnh 6 : xem lại câu lênh 4.
Câu lệnh 7 : elseif get(handles.ham,'value')==2;
26
Nếu giá trị value của ô “ham” == 2 thực hiện lệnh bên dưới.
Câu lệnh 8 ,9,10,11,12 tương tự.
Câu lệnh 13: axis([0 0.1 -2 2]); % Căn chỉnh lại trục đồ thị
Cú pháp : axis ( [ xmin xmax ymin ymax ] )
4.3.2 BẢNG OPTIONS GROUP :
c
Hình 4.3.2.1: Viết code cho bảng OPTIONS.
27
- Lần lượt viết các câu lệnh :
function uipanel3_SelectionChangeFcn(hObject, eventdata, handles)
if get(handles.grid,'value')==1
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')==1
Hàm trên tìm giá trị value của ô Grid on và Hold on tương ứng , nếu được chon
tương ứng value =1 , nếu bỏ chọn tương ứng value =0.
4.3.3 NÚT RESET
- Các lệnh sau :
set(handles.tanso,'string','');
set(handles.thoigian,'string','');
set(handles.hold,'value',0);
set(handles.grid,'value',0);
28
set(handles.ham,'value',1);
set(handles.axes1,'visible','off');
cla;
Giải thích:
Câu lệnh 1, 2: set(handles.tanso,'string','');
set(handles.thoigian,'string','');
Đặt lại giá trị của ô “tanso”, “thoigian” là “ “ .
Câu lệnh 3,4: set(handles.hold,'value',0);
set(handles.grid,'value',0);
Bỏ chọn 2 ô ‘Grid on’ và ‘Hold on’ .
Câu lênh 5: set(handles.ham,'value',1);
Mặc định hiển thị function square.
Câu lệnh 6: set(handles.axes1,'visible','off');
Tắt hiện thị hệ trục tọa độ
Câu lênh 7: cla;
Xóa tất cả các đối tượng như: đường đồ thị, tên đồ thị…nhưng không
xóa trục tọa độ.
4.3.4 NÚT EXIT
Lệnh : close;
Đóng chương trình.
29
4.4 CHẠY CHƯƠNG TRÌNH TRÊN 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 :
- Nhấn Run trên giao diện Edito M-file .
Sau khi nhấn Run chạy chương trình , matlab sẽ tự động Save lại M-file.
30
PHẦ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
mình xin giới thiệu cách tạo file .exe bằng Deployment Tool. Công cụ 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.
Tại command window gõ lênh mbuild -setup
Nhấn “y” để tiếp tục ,
31
Chọn chương trình compiler .
Sau đó nhấn “y” để đồng ý và kết thúc.
Bước 2: Chạy công cụ Development Tool.
Tại command Window gõ lệnh .
>> deploytool
Sau đó hộp thoại từ chương trình deploytool sẽ hiện ra .
32
Từ hộp thoại deploytool ta có các lựa chon sau :
Thẻ New để tạo mới 1 dự án
o Name : Tên chương trình
o Location : Nơi lưu dự án
o Taget : kiểu ứng dụng tạo ra . chúng ta chọn
Thẻ Open để mở 1 dự án đã build.
Nhấn OK , sau đó tại giao diện của deploytool , Add main file
33
Bước 3 : Dịch chương trình
chọn Project => Build
Để đóng gói chương trình chọn Project => Package.
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 , chúng ta chỉ cần
cài đặt vào máy . link chương trình :
\MatLab\toolbox\compiler\deploy\win64\ MCRInstaller
34
PHẦN 6 : GIAO DIỆN CHƯƠNG TRÌNH SAU KHI HOÀN THÀNH
35
PHẦN CUỐI
TÀI LIỆU THAM KHẢO:
Internet:
Matlab: Examples, Help
36
File đính kèm:
Báo cáo Lập trình Guide giao diện.pdf

