gui-full-3657

65 1.6K 116
Tài liệu đã được kiểm tra trùng lặp
gui-full-3657

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

matlab hướng dẫn

Hướng Dẫn Lập Trình GUIS Matlab Bài 1: 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.  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  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. 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. 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 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. 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: Nhấn nút Run kiểm tra kết quả xem nào: Tham khảo Bài 2: 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. 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 phần vào tài liệu này và dựa vào kinh nghiệm khi mình lập trình. Mình đang làm đồ án tốt nghiệp nên mỗi ngày cố gắng viết một tí cho các bạn đọc nhé. Mà đồ án của mình làm với FPGA, chỉ dùng System Generator là liên quan đến Matlab thôi :d. Trong bài viết này, mình giới thiệu các bạn các tính chất đặc trưng của các điều khiển mà các bạn hay gặp. Để hiện cửa sổ các tính chất Property Inspector của một điều khiển chúng ta có 3 cách sau:  Nhấn đúp chuột vào mỗi điều khiển.  Chọn điều khiển rồi vào menu View, chọn Property Inspector.  Chọn điều khiển rồi nhấn vào biểu tượng Property Inspector, gần chỗ M-file editor. Khi đó, cửa sổ Property Inspector sẽ hiện ra. Khi nhấn vào các điều khiển khác thì cửa sổ này sẽ hiện thông tin tương ứng cho điều khiển đó. Một vài tính chất chung của các điều khiển mà các bạn nên chú ý: Tính chất (property) Giá trị (value) Miêu tả Enable on, inactive, off Mặc định là: on Xác định khi nào thì điều khiển hiển thị lên giao diện. Đặt = off, thì điều khiển sẽ không xuất hiện. Max Vô hướng. Mặc định là 1. Giá trị lớn nhất, tùy thuộc vào từng điều khiển. Min Vô hướng. Mặc định là 0 Giá trị nhỏ nhất, tùy thuộc vào từng điều khiển. Position Vector gồm 4 phần tử (left, bottom, width, height) Kích thước của điều khiển và vị trí tương đối của nó với điều khiển chứa nó. String Units Đơn vị đo lường dùng trong xác định vị trí. Value Vô hướng hoặc vector Giá trị của component, tùy thuộc vào từng component. Ngoài ra, thuộc tính cực kì quan trọng mà các bạn phải thay ngay từ đâu là: tag. Thuộc tính này giống thuộc tính Caption mà các bạn gặp trong Visual Basic, chính là tên để phân biệt giữa các điều khiển. Mỗi điều khiển chỉ có một tên duy nhất. các bạn nên qui định cho dễ nhớ nhé. Mình nghĩ là nên kết hợp giữa tên của loại điều khiển và mục đích của điều khiển đó. Ví dụ: một ô nhập dữ liệu giá trị tiền, thuộc Edit Box nên mình đặt tag là: editMoney. Bây giờ đi vào từng điều khiển cụ thể. 1. Push Button Thay đổi chữ hiển thị (label) hiển thị trên điều khiển này bằng cách thay đổi thuộc tính String. Chữ hiển thị trên Button chỉ có thể là 1 dòng, nên nếu bạn gõ nhiều dòng trong thuộc tính String thì chỉ hiển thị dòng đầu tiên. Nếu số kí tự dòng đầu tiên lớn hơn bề rộng có thể hiển thị chữ được của bề mặt Button thì Matlab tự rút ngắn String đó với dấu 3 chấm ( .). Thay đổi vị trí của PushButton = thay đổi thuộc tính Position. Có thể code trong MFile (thay đổi trong quá trình thực thi) hoặc thay đổi ngay lúc thiết kế(gắp thả). Để thêm một ảnh vào PushButton thì chúng ta gán thuộc tính CData bằng một ma trận m x n x 3 của giá trị RGB. Thực hiện trong MFile ở hàm Open của điều khiển để ngay khi chạy chương trình đã load ảnh này vào rồi. img = rand(16,64.3); set(handles.pushbutton1, 'CData',img); Chú ý: Có thể tạo biểu tượng riêng của bạn cho các nut Push Button bằng cách dùng Icon Editor, sau đó dùng hàm ind2rgb để chuyển sang ảnh gán vào thuộc tính CData. Các sự kiện xảy ra khi nhấn Push Button được viết trong các hàm ngắt như Callback, 2. Slider (Thanh trượt) Thay đổi khoảng giá trị của Slider bằng cách thay đổi thuộc tính Min và Max. Tất nhiên Min < Max. Giá trị hiện tại của Slider được = giá trị của thuộc tính Value. Nên khi set hoặc get thì ta lấy giá trị này. Khi click vào 2 cái mũi tên 2 bên thì thanh trượt sẽ trượt tương ứng về 2 phía theo một bước nào đó. Thay đổi thuộc tính SliderStep = [min_step, max_step]. min_step là giá trị bước nhảy khi click vào 2 mũi tên. Còn Max_step là giá trị khi mà click vào trong vùng trượt. 3. Radio Button Để biết nút Radio có được đánh dấu hay là không thì chúng ta xem thuộc tính Value của nó. Value = 1 thì check Value = 0 thì là k check 4. Check Box Check Box thì thuộc tính quan trọng cũng tương tự như Radio Button. 5. Edit Text Thuộc tính quan trọng là Stri ng, chính là xâu kí tự hiển thị trên Edit Text. Chú ý: để hiển thị như ý muốn thì các bạn cần phải xem kĩ thêm các hàm xử lý string nhé. Để hiển thị Edit Text dạng Multi-line thì cần thay đổi thuộc tính Max, Min. Max> Min. Ví dụ: Max = 2, Min = 0 sẽ hiển thị 2 dòng đó. 6. Static Text Thằng này tương tự như Edit Text. 7. Popup Menu 8. List Box 9. Toggle Button Hic hic, viết dài quá mỏi tay hật. Rảnh rỗi viết cập nhật thêm vài cái, còn không thì các bạn thực hành trong các bài khác nhé Bài 3 : Tổng quan về hàm Callback trong lập trình GUI APRIL 17, 2008 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 hàm sự kiện trong Visual Basic). Thế nào là hàm Callback ? Callback là một hàm mà các bạn viết miêu tả hành vi của một thành phần GUI xác định hoặc là của chính GUI figure, điều khiển các hành vi của chúng bằng cách thực hiện một số hành động được viết trong hàm, để đáp ứng lại một sự kiện của chính thành phần đó. Cách lập trình này thường gọi là : Lập trình lái sự kiện (event driven programming). Ví dụ, khi bạn nhấn một Button thì vẽ đồ thị đúng không ?? Vậy thì khi nhấn phím thì hiển nhiên đã gọi hàm Callback nhấn phím của Button đó, và trong hàm Callback này có lệnh vẽ đồ thị rồi. Các loại hàm Callback ? Mỗi thành phần có nhiều hàm Callback khác nhau, các bạn xem thêm ở Properties nhé. Sau đây liệt kê các loại hàm Callback và các điều khiển có thể có hàm này. Callback property Sự kiện xảy ra Thành phần có hàm này ButtonDownFcn Thực hiện khi người dùng nhấn chuột lên hoặc trong 5 pixels của component hoặc figure. Nếu là component thì thuộc tính Enable phải on ( tất nhiên rùi ). Axes,figure,button group,panel,user interfacecontrols Callback Hành động của các component, ví dụ như thực thi khi người dùng click lên Push Button hoặc chọn một thành phần menu. Contextmenu, menu,userinterface controls CloseRequestFcn Thực thi trước khi figure đóng. Figure CreateFcn Tạo các thành phần.Nó được dùng để khởi tạo các thành phần khi nó được tạo ra. Nó thực thi sau khi thành phần hoặc figure được tạo, nhưng trước khi hiển thị lên trên giao diện người dùng. Axes,figure,button group,contextmenu, menu,panel,user interfacecontrols DeleteFcn Xóa thành phần. Nó có thể được dùng để thực hiện hành động xóa bỏ trước khi component hoặc figure bị hủy bỏ. Axes,figure,button group,contextmenu, menu,panel,user interfacecontrols KeyPressFcn Thực thi khi người dùng nhấn một phím trong keyboard và component hoặc figure của hàm callback đó đang được focus. Figure,userinterface controls KeyReleaseFcn Thực thi khi người dùng nhả một phím đang bấm và figure vẫn đang được focus. Figure ResizeFcn Thực thi khi người dùng thay đổi kích thước của panel, button group, hoặc figure với Buttongroup,figure, panel điều kiện thuộc tính Resize của figure = on. SelectiononChangeFcn Thực thi khi người dùng lựa chọn một nút Radio Button khác hoặc toggle button khác trong thành phần Button Group. Buttongroup WindowButtonDownFcn Thực thi khi bạn nhấn chuột (trái hoặc phải) trong khi con trỏ vẫn nằm trong vùng cửa sổ figure. Figure WindowButtonMotionFcn Thực thi khi bạn di chuyển con trỏ trong vùng cửa sổ figure. Figure WindowButtonUpFcn Ban đầu bạn nhấn chuột (trái, hoặc phải) thì khi nhả phím đó ra thì hàm này sẽ được gọi. Figure WindowScrollWheelFcn Thực thi khi nút cuộn của chuột cuộn trong khi figure vẫn trong tầm focus. Figure Bài 4: Tạo file .exe trong Matlab dùng Matlab Compiler MARCH 27, 2008 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 bạn phải có toolbox MATLAB® Compiler™. Các bạn có thể xem chi tiết về toolbox này và cách dùng nó tại đây. Mình nghĩ là nó hướng dẫn quá đầy đủ về Matlab Compiler, các bạn chịu khó đọc từ đầu đến cuối là được. Các bạn đã cài bộ Help cho Matlab có thể tìm Toolbox này trong phần Help (nhấn F1). Trong bài viết này, 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ỉ gắp thả là được. Yêu cầu Matlab 7.0 trở lên (vì mình test từ 7.0 ). 123doc.vn

Ngày đăng: 16/03/2013, 15:21

Hình ảnh liên quan

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ỉ ?? - gui-full-3657

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ỉ ?? Xem tại trang 2 của tài liệu.
 Grid and Ruler s: 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 - gui-full-3657

rid.

and Ruler s: 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 Xem tại trang 3 của tài liệu.
GRAPHICAL USERINTERFACE II. - gui-full-3657
GRAPHICAL USERINTERFACE II Xem tại trang 33 của tài liệu.
 Cách vẽ hình trong GUI - gui-full-3657

ch.

vẽ hình trong GUI Xem tại trang 36 của tài liệu.
3. T oạ trục để vẽ hình        Chọn bi uể tượng Axes đ ể  t oạ  tr cụ  v ẽ - gui-full-3657

3..

T oạ trục để vẽ hình  Chọn bi uể tượng Axes đ ể t oạ tr cụ v ẽ Xem tại trang 37 của tài liệu.
 T ạo GUI như hình vẽ - gui-full-3657

o.

GUI như hình vẽ Xem tại trang 40 của tài liệu.
 T ạo và vẽ nhi uề hình trên cùng một tr cụ Axes - gui-full-3657

o.

và vẽ nhi uề hình trên cùng một tr cụ Axes Xem tại trang 40 của tài liệu.
3. Vẽ nhi uề hình trên cùng tộ tr c: ụ - gui-full-3657

3..

Vẽ nhi uề hình trên cùng tộ tr c: ụ Xem tại trang 42 của tài liệu.
 Vẽ hình bằng cách tặ lại - gui-full-3657

h.

ình bằng cách tặ lại Xem tại trang 46 của tài liệu.
 T ạo một GUI như hình vẽ: - gui-full-3657

o.

một GUI như hình vẽ: Xem tại trang 47 của tài liệu.
1. T oạ GUI: - gui-full-3657

1..

T oạ GUI: Xem tại trang 47 của tài liệu.
 T ạo một GUI như hình vẽ: - gui-full-3657

o.

một GUI như hình vẽ: Xem tại trang 50 của tài liệu.
VII.BIẾN ĐIỆU ANALOG - gui-full-3657
VII.BIẾN ĐIỆU ANALOG Xem tại trang 53 của tài liệu.
 T ạo một GUI như hình vẽ: - gui-full-3657

o.

một GUI như hình vẽ: Xem tại trang 53 của tài liệu.
 T ạo một GUI như hình vẽ: - gui-full-3657

o.

một GUI như hình vẽ: Xem tại trang 55 của tài liệu.
VII.BIẾN ĐIỆU ANALOG 3.    Ch yạứng dụng: - gui-full-3657

3..

Ch yạứng dụng: Xem tại trang 55 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan