Thông báo

Collapse
No announcement yet.

Lập trình GUI trong Matlab

Collapse
This is a sticky topic.
X
X
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Trân trọng cảm ơn Ngô Hải Bắc về bài viết này.

    Tôi đã copy bài viết này sang diễn đàn picvietnam, tại địa chỉ:

    http://picvietnam.com/showthread.php?p=1190#post1190

    Tôi trích các bài viết của bạn, và copy không sửa chữa toàn bộ bài viết, ngoài ra cung cấp đầy đủ thông tin về tác giả cũng như source tìm được.

    Xin chân thành cảm ơn bạn đã đóng góp cho các sinh viên một bài viết rất hay và mang tính hướng dẫn cao.

    Chúc vui.
    Falleaf
    Công ty TNHH Thương mại và Giao nhận R&P
    58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
    mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

    Comment


    • #17
      Bác Bắc có bài viết khá ấn tượng!!!
      -------------------

      Comment


      • #18
        Cảm ơn các bạn đã đọc bài viết của mình. Mình viết những bài viết này trên cơ sở tham khảo bộ Help của Matlab. Với bộ help này quả thật là chi tiết, có cả ví dụ, cách dùng như là MSDN của Microsoft vậy. Với một mục đích cụ thể cho công việc cần làm, mình nghĩ là các bạn sẽ biết cách tìm hiểu các điều mình cần trong bộ Help này. Không phải là đọc tất cả mà chỉ đọc cái mình cần, nếu không hiểu vấn đề nào thuộc những phần khác thì bạn lại quay sang đọc cái đó để hiểu rõ, rồi lại trở lại vấn đề đang đọc. Với cách đọc tài liệu như thế mình nghĩ là sẽ nhanh đạt mục đích hơn. Mình viết chương trình điều khiển động cơ trên cơ sở câu hỏi của bạn SonIC gửi đến email của mình. Các bạn có câu hỏi, mục đích gì thì cứ đưa ra diễn đàn này để chúng ta cùng giải quyết.

        Mình sẽ tiếp tục giới thiệu cho các bạn một số hướng dẫn cụ thể để lập trình cho GUI liên kết với các ứng dụng khác, điển hình là bộ mô phỏng hệ thống Simulink.

        Cảm ơn các bạn.
        Last edited by ngohaibac; 31-12-2005, 15:45.
        Technical sale at WT Microelectronics S'pore
        Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
        Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

        Comment


        • #19
          Nhờ có Hải Bắc mà mình có thể hiểu cách thức thực hiện GUI cho mô hình Simulink(tuy còn hơi non nớt!!!!)
          Bộ Help của Matlab7.0 quả là rất phong phú,nó cũng có vd đề cập đến vấn đề này nhưng mình đọc mà chẳng hiểu gì cả(vì mình mới tiếp cận với Matlab nên kiến thức về nó còn rất hạn chế)
          Bài viết của Ngô Hải Bắc rất dễ hiểu,mình thực sự cảm ơn sự quan tâm về vấn đề này
          Cảm ơn Ngô Hải Bắc nhiều nhiều,mong bạn đóng góp nhiều hơn nữa cho diễn đàn,chia sẻ những kiến thức mà bạn tích tũy được cho bạn bè cùng biết nha!!!!!!!!!!!!!!

          Comment


          • #20
            Động cơ một chiều

            - Các bạn lưu ý: khi làm lại giao diện mà lại copy lại y nguyên mã lại không chạy sẽ báo lỗi là vì với mỗi điều khiển thì sẽ có một tên riêng trong thuộc tính tag của nó( ứng với thuộc tính Name trong VB) để các bạn làm việc với điều khiển. Nên các bạn khi download chương trình về cần đọc kĩ mã nhé. Cần phải biết hàm đó viết cho điều khiển nào, lấy thông tin từ điều khiển gì.

            -Thứ hai là các bạn phải đặt tên .mdl khác với tên của cái gui tức là đuôi .m đó. Vì cả 2 file này đều có thể chạy được khi bạn gõ tên trong command của workspace nhưng file đuôi .mdl( simulink) được ưu tiên hơn nên đó là lí do tại sao mà khi đặt tên giống nhau mà lại chỉ có thể chạy được file .mdl thôi.

            - Các bạn không thể chạy ứng dụng bằng cách di chuột đến file .fig trong curent directory được vì nó chạy đây đơn thuần là chạy một file hình ảnh thôi. Nó sẽ không thể liên kết được với file .m chứa mã chương trình, các hàm callback đo đó sẽ báo lỗi ngay. Các bạn có nhiều cách làm: gõ lệnh trong command trùng với tên của file .m đó, mở file .m đó rồi ấn phím tắt F5 hoặc vào Debug-> Run, ấn vào biểu tượng trên thành toolbar hình mũi tên trỏ xuống đó.

            Mình xin tiếp tục hướng dẫn các bạn làm thêm một số phần trong giao diện điều khiển mô phỏng Simulink bằng GUI.

            Tôi sẽ thêm vào đó popupmenu để các bạn hiển thị màu của đường đặc tính và checkbox để khi cần thì giữ lại hình để so sánh, khi không thì thôi. Thêm cả thêm thuộc tính cho các transfer fcn.

            Để có thể làm việc đối với popupmenu thì bạn nên thêm sẵn cho nó trong thuộc tính String của nó ngay khi thiết kế: đánh thành nhiều dòng bao gồm:
            Blue, Green,Red,...

            Sau đó khi người dùng chọn một trong các màu đó thì sẽ có giá trị lấy từ thuộc tính Value của điều khiển này. Các bạn dùng thuộc tính này để quết định xem đó là màu gì bằng cách dùng Switch trong PlotButton_callback:
            Code:
            ColorIndex = get(handles.popupmenu1,'Value');
                switch ColorIndex
                    case 1, a = 'b';
                    case 2, a = 'g';
                    case 3, a = 'r';
                    case 4, a= 'c';
                    case 5, a= 'm';
                    case 6, a= 'y';
                    case 7, a= 'k';
                    otherwise, 
                        a= 'k';
                 end
            Nút checkbox có thuộc tính value =1 khi nó được check , =0 khi không check.
            Do đó lấy giá trị này:
            Code:
            if get(handles.checkHold,'Value') == 0 
                    hold off;
              end
            không cần else vì ở dưới trong khi vẽ hai hình đã có hàm hold on;
            Không set nó thành off thì nó vẫn giữ nguyên.
            ----- Chúc các bác thành công.

            Last edited by ngohaibac; 31-12-2005, 15:46.
            Technical sale at WT Microelectronics S'pore
            Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
            Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

            Comment


            • #21
              Mình thực sự cảm ơn Bắc nhiều lắm!!!!!!!!
              Với khả năng hạn hẹp của mình thì còn nhiều thứ mình chưa biết,cảm ơn bạn đã chỉ dẫn tận tình.
              Mình cũng muốn gởi bài cho diễn đàn,nhưng chưa làm được gì hoàn hảo cả!!!!!!!!!
              Mình sẽ cố gắng vậy!!!!!!!

              Comment


              • #22
                Các bạn thân mến, mai tôi sẽ hướng dẫn các bạn làm quen với menu, sử dụng nhiều form khác nhau trên cùng một ứng dụng. Phát triển tiếp tục từ ControlDCMotor và DongcoDC ở trên.
                Các bạn lưu ý là muốn chạy được phải đánh trong command đúng tên của .m file chứa những hàm callback của ứng dụng.
                Technical sale at WT Microelectronics S'pore
                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                Comment


                • #23
                  ControlDCMotor V3.0

                  Chào các bạn, nay tôi xin giới thiệu cho các bạn một cách tạo menu và sử dụng một temp để làm trung gian để tạo dữ liệu cho đơn giản.

                  ở phiên bản trước chắc các bạn thấy rằng với cả 3 hàm Tranfer Fcn mà phải tạo tới 3 cái panel để điền thông số thì quả là rắc rối. Mình xin cải tiến thêm và dùng Temp là một popupmenu, thuộc tính String của nó làm nới chứa dữ liệu các tham số của hàm truyền của các hàm truyền 1,2,3. Khi bạn ấn vào nút Edit thì sẽ nhập thay đổi dữ liệu cho nó và nút biến thành Apply, bạn ấn vào nút đó để cập nhật. Thuộc tính String trong popupmenu là kiểu cell( trường) do đó để cập nhật bạn lấy thuộc tính String sau đó thay đổi từng thành phần của biến này sau đó cập nhật trở lại. Còn nếu muốn lấy dữ liệu cũng tương tự mỗi thành phần trong cell này có kiểu String, ta dùng dấu {} để xâm nhập vào từng thành phần của nó:

                  VD:
                  Code:
                  value= get(handles.Temp,'String');
                       a = value{1};
                  Thuộc tính String của Temp tôi đã làm sẵn trong thiết kế. Và bị thay đổi khi ấn vào nút Apply. Do đó các điều khiển có thể dùng điều khiển Temp này.Điều khiển Temp cho thuộc tính Visible là Off để không nhìn thấy lúc thi hành mà chỉ thấy lúc thiết kế. Dữ liệu trong Temp thay đổi được trong chương trình và việc khởi tạo ban đầu có thể bằng tay hay trong hàm CreatFcn của điều khiển này.

                  Còn tạo menu thì các bạn vào Tools-> menu editors. Sẽ có dialog mới mở ra. Các bạn kích vào nút New menu để tạo ra menu mới, sau đó thay đổi thuộc tính Label, Tag của nó. Còn muốn tạo menu con thì bạn select vào menu muốn tạo menu con sau đó kích trái chuột vào biểu tượng <-> trên toolbar để tạo thêm menu con tương tự như trên. Còn muốn thấy được các hàm Callback của nó bạn chọn menu tương ứng kích vào View, nên để mặc định là tự động tạo hàm callback. Sau đó viết code cho các hàm callback đó. Quả thật là nếu mà viết lại mã của những callback giống của các điều khiển khác thì chỉ cần copy -> paste là xong nhưng tôi xin giới thiệu cho các bạn cách để gọi một hàm callback khác trong callback hiện tại:


                  Ví dụ: bạn muốn gọi hàm callback : function SimulateButton_Callback(hObject, eventdata, handles)

                  Thì chỉ cần thay hObject thành handles.SimulateButton là xong.

                  Còn tại sao mà ấn vào nút Edit lại thành Apply thì chỉ là thay đổi thuộc tính String trong callback của nó. Quan trọng là khi ấn vào nút Apply thì mới cập nhật dữ liệu. Tôi thông qua một biến Bool là value{10} trong String của Temp.
                  Các menu tôi mới chỉ viết code cho các menu Exit, About, Run.
                  Các bạn ấn vào popupmenu gần nút Edit để xem các thông số của các hàm truyền tương ứng.

                  Tôi sẽ hoàn thành việc phát triển cho ứng dụng này làm việc với các form khác nhau sau. Nói chung là cũng phức tạp hơn chưa các bạn. Có giống với VB chưa.

                  Chào các bạn. Chúc thành công.


                  Last edited by ngohaibac; 31-12-2005, 15:49.
                  Technical sale at WT Microelectronics S'pore
                  Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                  Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                  Comment


                  • #24
                    Bầu chọn cho luồng của bác Bắc 5 sao.
                    Chắc bác là dân tự động hóa rồi?

                    Comment


                    • #25
                      Ừ có thể coi là như vậy. Mình học ngành điều khiển tự động BKHN Khoa điện - học tương đương với tự động hóa. Bên tự động hóa chuyên hơn bên mình về lĩnh vự tự động, còn bên mình thường sâu về mảng lí thuyết điều khiển tự động.
                      Technical sale at WT Microelectronics S'pore
                      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                      Comment


                      • #26
                        hic hic,mình cũng học điều khiển tự động mà chẳng rành về cái gì cả,xấu hổ quá,cái gì cũng phải hỏi bạn Bắc cả!!!!!

                        Comment


                        • #27
                          Chết thời gian này bận quá. Có lẽ phải mấy ngày nữa mới có bài mới giới thiệu cho các bạn.
                          Các bạn chịu khó luyện với mấy chiêu ở trên nha. Mấy nữa tôi up lên tiếp.
                          Technical sale at WT Microelectronics S'pore
                          Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                          Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                          Comment


                          • #28
                            ControlDCMotor v3.1

                            Các bác thân.
                            Bận quá mới làm xong mấy cái giao diện để hiện lên khi ấn vào menu nên chưa up hoàn chỉnh được. Nhưng cũng xin tối ưu cho chương trình trước về cách nhập hàm truyền đơn giản hơn rất nhiều.

                            Các bác chịu khó đọc lại mã nha. Dưới đây là hình minh họa và file đính kèm.

                            Chúc các bạn thành công.
                            Attached Files
                            Last edited by ngohaibac; 26-05-2006, 07:25.
                            Technical sale at WT Microelectronics S'pore
                            Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                            Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                            Comment


                            • #29
                              cái này coi bộ hay ah nha!!!!!!!
                              cang ngày giao diện càng nhiều tính năng hơn
                              Cảm ơn Hải Bắc!

                              Comment


                              • #30
                                Bác NgoHaiBac có thể viết toturial về Lập trình M-file và toolbox neural cho anh em tham khảo không?
                                Thanks!
                                Last edited by nhh; 20-02-2006, 10:56.

                                Comment

                                Về tác giả

                                Collapse

                                ngohaibac Tìm hiểu thêm về ngohaibac

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X