110457915-lập-trinh-giao-diện-gui-trong-matlab

8
Lập trình giao diện GUI trong Matlab (Phần 1) April 4, 2008 Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các bạn dễ dàng thực hiện. Phần mềm: Matlab R2007a 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.

Upload: do-minh-toan

Post on 08-Feb-2016

86 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

Lập trình giao diện GUI trong Matlab (Phần

1)

April 4, 2008

Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các

bạn dễ dàng thực hiện.

Phần mềm: Matlab R2007a

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.

Page 2: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

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 GUI: mở 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: giống như nút Command Button trong VB. Là các nút bấm như nút OK,

Cancel mà ta vẫn bấm.

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

Edit Text

Static Text

Pop-up Menu

List Box

Axes

Panel

Page 3: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

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 ngày

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: TUT01, khi đó đồng thời xuất hiện cửa sổ Editor và đang mở file

TUT01.m của bạn. Trong thư mục bạn save sẽ có 2 file là:

TUT01.fig : file này chứa giao diện của chương trình

TUT01.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

Nói hơi nhiều nên các bạn ghét rồi, nên hãy làm một ví dụ đơn giản cho vui còn học tiếp nào.

Hãy kéo vào trong giao diện 2 edit box, 1 static box và 1 Push Button.

Page 4: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

Chương trình có chức năng khi nhấn vào nút bấm thì kết quả của phép tính cộng 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.

Page 5: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

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à: editStr1.

String : là xâu kí tự hiện lên Edit Box. Các bạn xóa cái này đi.

Tương tự, thay đổi thuộc tính tag của Edit Box thứ 2 thành editStr2. Static Box cũng tương tự

thành staticStr3.

Push Button: thuộc tính tag = buttonCalculate, string = calculate

5. Viết lệnh cho chương trình

Page 6: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

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ọi. Chí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. Trong này còn một số hàm nữa sẽ tính sau.

src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutori

al_006.gif" />

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 buttonCalculate

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

editStr1, editStr2,editStr3 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.

Vậy chúng ta sẽ viết hàm như sau:

Page 7: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

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

Tham khảo

Ngô Hải Bắc, Lập trình GUI trong Matlab, www.dientuvietnam.net, 2005

Ngô Hải Bắc, Giao tiếp RS232 trên PC qua Matlab, www.picvietnam.com, 2006

Các bài viết liên quan:

1. Các tính chất của các điều khiển trong GUIDE Matlab Chào các bạn. Mình xin gửi các bạn tài

liệu Matlab 7 - Creating Graphical User Interfaces, là tài liệu dạng .pdf của tài liệu trong Help của Matlab.

Page 8: 110457915-Lập-trinh-giao-diện-GUI-trong-Matlab

Các bạn nào có thể tự đọc hiểu được English thì tài liệu này là quá đầy đủ rồi. Các bài viết của mình dựa

một [...]... 2. Tổng quan về hàm Callback trong lập trình GUI Sau khi các bạn tạo cái giao diện đã xong thì đến

phần lập trình rất quan trọng, chính là lập trình các hành vi của các điều khiển để đáp ứng lại các sự kiện

như nhấn phím, kéo thanh trượt, khi chọn menu, ... đó chính là các hàm Callback (giống như các [...]... 3. Tạo hình nền cho giao diện GUI Chào các bạn. Trong bài này mình sẽ hướng dẫn các bạn tạo hình

nền hoặc một phần của giao diện GUI. Ý tưởng: dùng một Axes control để load hình ảnh. Như vậy, ngay

khi chạy GUI thì ảnh đã hiển thị lên axes rồi nên trông như là hình nền của GUI vậy. [...]... 4. Tạo file .exe cho giao diện GUI Matlab Chào các bạn. Sau khi các bạn đã biết cách để viết một giao

diện GUI, biết cách dịch ra file .exe tự chạy trên một máy khác thì bây giờ mình kết hợp làm sao đây ?? Bài

này mình dịch một project GUI tương đối là nhiều thành phần: RS232 Communication đã được [...]... 5. Lập trình giao diện với Python: QT Edition PyQT là gì ? PyQt is a comprehensive set of Python

bindings for the Qt cross-platform GUI/XML/SQL C++ framework from Qt Software (renamed from

Trolltech). PyQt provides bindings for Qt 2 and Qt 3. PyQt4, a separate set of bindings, covers the Qt 4

series of releases. PyQt implements around 300 classes and over 5,750 [...]... 6. Tạo file .exe trong Matlab dùng Matlab Compiler Có nhiều bạn khá băn khoăn về việc dịch một

ứng dụng trong Matlab ra file .exe để chạy độc lập trên các máy không cài Matlab đúng không ?? Hay là

cách để đóng gói sản phẩm của mình thì nên làm thế nào ? Để có thể dịch ra file .exe yêu cầu [...]...