Hướng dẫn lập trình MatLab GUI

Bài đầu tiên mình sẽ giới thiệu các bạn giao diện GUI.
1. Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command
>> guide



Trong cửa sổ GUIDE Quick Start có nhiều lựa chọn theo một trong các khuân mẫu sau:
Create New GUI: Tạo một hộp thoại GUI mới theo một trong các loại sau
  • Blank GUI (Default): Hộp thoại GUI trống không có một điều khiển uicontrol nào cả.
  • GUI with Uicontrols: Hộp thoại GUI với một vài uicontrol như button, ... Chương trình có thể chạy ngay.
  • GUI with Axes and Menu: Hộp thoại GUI với một uicontrol axes và button, các menu để hiển thị đồ thị.
  • Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.
Open Existing GUImở một project có sẵn.
Trong hướng dẫn này, các bạn tạo một project mới nên sẽ chọn Blank GUI
2. Cửa sổ GUI hiện ra

Giao diện rất giống với các chương trình lập trình giao diện như Visual Basic, Visual C++, ... Các bạn di chuột qua các biểu tượng ở bên trái sẽ thấy tên của các điều khiển. Xin nói qua một vài điều khiển hay dùng:
  • Push Button: Khi ta nhấn nút thì 1 sự kiện sẽ xảy ra.
  • Slider : Thanh trượt có một con trượt chạy trên đó.
  • Radio Button : Nút nhỏ hình tròn để chọn lựa
  • Check Box :dùng để chọn có hay không. 
  • Edit Text : nơi nhập một text
  • Static Text: không thể nhập text ,chỉ dùng để hiển thị một text
  • Pop-up Menu: khi kích vào thì sẽ ra một danh sách để lựa chọn
  • List Box: một danh sách hiển thị sẵn
  • Axes: một trục tọa độ
  • Panel: là một bảng điều khiển ,nơi đặt các đối tượng như push button , edit text ,static text .........thành một nhóm.
  • Button Group 
  • ActiveX Control
  • Toggle Button
Các bạn hãy thử gắp thả vài điều khiển vào trong giao diện bên phải xem hình dạng thế nào ?? Hình dạng ra sao nhỉ ??
Còn menu thì quan trọng nhất là menu Tools có:
  • Run (Ctr + T) : nhấn vào để chạy chương trình mà ta đã viết. Có lỗi là hiện ra ngay
  • Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ý mình như cùng căn lề bên trái, ...
  • Grid and Rulers : dùng để cấu hình về lưới trong giao diện vì nó sẽ coi giao diện như một ma trận các ô vuông nhỏ, ta sẽ thay đổi giá trị này để cho các điều khiển có thể thả ở đâu tùy ý cho đẹp.
  • Menu Editor : trình này để tạo menu cho điều khiển
  • Tab Order Editor : sắp xếp Tab order là thứ tự khi ta nhấn phím Tab
  • Gui Options : lựa chọn cho giao diện GUI.
Các bạn nên vào menu Help để xem hướng dẫn thêm trong Help.
Các bạn save dưới tên: test, khi đó đồng thời xuất hiện cửa sổ Editor và đang mở file test.m của bạn. Trong thư mục bạn save sẽ có 2 file là:
  • test.fig : file này chứa giao diện của chương trình
  • test.m : file chứa các mã thực thi cho chương trình như các hàm khởi tạo, các hàm callback,... (sẽ nói chi tiết vào bài khác).
3. Kéo thả các điều khiển
Sau đây mình sẽ đưa ra một ví dụ đơn giản
Hãy kéo vào trong giao diện 2 edit box, 1 static box và 1 Push Button.


Chương trình có chức năng khi nhấn vào nút bấm Calculate thì kết quả của phép tính "+" giữa 2 số được gõ vào 2 ô sẽ hiện lên trong Static Text.
4. Thay đổi các thuộc tính của các điều khiển
Click đúp vào Edit Text bên trái để xuất hiện cửa sổ các thuộc tính của điều khiển. Có thể sắp xếp theo chức năng hoặc theo thứ tự A-Z của tên thuộc tính bằng nút hiện ở gõ bên trái.

Các thuộc tính này các bạn hãy thử thay đổi xem nó thế nào nhỉ ??
Thuộc tính quan trọng của Edit Box bao gồm:
  • Tag: đây là thuộc tính giống như Caption trong Visual Basic để đặt tên điều khiển. Dùng tên này có thể thao tác đến các thuộc tính của đối tượng. Mình đặt tên là: x_et.
  • String : là xâu kí tự hiện lên Edit Box. Các bạn nhập vào là x.
Tương tự, thuộc tính tag của Edit Box thứ 2 là y_etStatic Box cũng tương tự là ans_st.
Push Button: thuộc tính tag = Cal_pb, string = Calculate
5. Viết lệnh cho chương trình
Chương trình có tác dụng khi nhấn vào nút Push Button sẽ hiện lên kết quả ở Static Box. Vì thế nên sẽ phải viết vào hàm nào mà khi nhấn vào Push Button sẽ gọiChính là hàm Callback. Điều khiển nào cũng có hàm callback, như hàm ngắt trong vi điều khiển vậy  .
Click chuột phải vào nút Calculate chọn Callback
Nhìn vào định nghĩa của hàm trong Editor bạn sẽ thấy là: hàm này được thực hiện khi nhấn vào nút buttonCalculate.
Hàm có một số tham số:
  • hObject : handle của điều khiển nút bấm Calculate
  • eventdata
  • handles : là một cấu trúc chứa tất cả các điều khiển và dữ liệu người dùng. Dùng cái này để truy suất các điều khiển khác.
Qua thuộc tính tag của các điều khiển ta sẽ truy suất đến thuộc tính string của các điều khiển x_et, y_et, ans_st bằng lệnh get và set.
get(handles.tag_dieu_khien, 'ten thuoc tinh');         
set(handles.tag_dieu_khien, 'ten_thuoc_tinh', gia_tri);
và hàm quan trọng nữa biến từ string sang số là hàm: str2num và num2str để biến trở lại.
Code viết cho hàm Calculate:
x=get(handles.x_et,'string');     %lấy giá trị từ x (x_et là tag của đối tượng x)
y=get(handles.y_et,'string');     %lấy giá trị từ y(y_et là tag của đối tượng y)
x=str2num(x);                             %chuyển từ kiểu string sang kiểu số
y=str2num(y);
ans=x+y;

set(handles.ans_st,'string', num2str(ans)); %đưa giá trị đã tính ans lên đối tượng ans (ans_st là tag của đối tượng ans)


Nhấn nút Run kiểm tra kết quả xem nào:


Nhận xét