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