Thông báo

Collapse
No announcement yet.

Mình muốn hỏi về việc dùng Matlab trong giao tiếp VDK với máy tính!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #31
    Nguyên văn bởi ngohaibac Xem bài viết
    Để biết thêm chi tiết về giao tiếp với PC qua cổng RS232 qua Matlab các bạn dùng Help của Matlab và search với từ khóa: serial.

    Việc giao tiếp này cũng rất dễ dàng thực hiện, không có gì là quá cao siêu cả. Mình đã giao tiếp thành công rùi. Để test nó các bạn hãy đấu tắt 2 chân 2 và 3 (TX và RX) của cổng COM lại.

    Đầu tiên mình sẽ đưa ra môt chương trình thật là đơn giản, thiết lập ít tham số, còn chi tiết về thiết lập tham số nó thế nào? ý nghĩa ra sao? thì sẽ nói sau, mình cứ làm đơn giản trước rùi phức tạp -> hiểu hết về thiết lập này sau.

    Bài này mình giới thiệu cách tạo đối tượng, kết nối, viêt hàm callback.

    Tạo đối tượng:
    Chúng ta gõ lệnh và kết quả hiện luôn (nhớ là k có dấu ; ở cuối lệnh
    Code:
    >> s = serial('COM1')
    
       Serial Port Object : Serial-COM1
    
       Communication Settings 
          Port:               COM1
          BaudRate:           9600
          Terminator:         'LF'
    
       Communication State 
          Status:             closed
          RecordStatus:       off
    
       Read/Write State  
          TransferStatus:     idle
          BytesAvailable:     0
          ValuesReceived:     0
          ValuesSent:         0
    Như vậy đối tượng là Serial-COM1, tốc độ 9600,..

    Tiếp theo, chúng ta xem các tham số của đối tượng như thế nào bằng lệnh get(s):
    Code:
    >> get(s)
        ByteOrder = littleEndian
        BytesAvailable = 0
        BytesAvailableFcn = 
        BytesAvailableFcnCount = 48
        BytesAvailableFcnMode = terminator
        BytesToOutput = 0
        ErrorFcn = 
        InputBufferSize = 512
        Name = Serial-COM1
        ObjectVisibility = on
        OutputBufferSize = 512
        OutputEmptyFcn = 
        RecordDetail = compact
        RecordMode = overwrite
        RecordName = record.txt
        RecordStatus = off
        Status = closed
        Tag = 
        Timeout = 10
        TimerFcn = 
        TimerPeriod = 1
        TransferStatus = idle
        Type = serial
        UserData = []
        ValuesReceived = 0
        ValuesSent = 0
    
        SERIAL specific properties:
        BaudRate = 9600
        BreakInterruptFcn = 
        DataBits = 8
        DataTerminalReady = on
        FlowControl = none
        Parity = none
        PinStatus = [1x1 struct]
        PinStatusFcn = 
        Port = COM1
        ReadAsyncMode = continuous
        RequestToSend = on
        StopBits = 1
        Terminator = LF
    Các bạn thấy là có rất nhiều tham số phải không? chúng ta ở đây quan tâm đến tham số: BytesAvailableFcn tham số này chưa thết lập. Tham số này chính là hàm callback mà nó sẽ gọi khi có byte nhận được ở bộ đệm nhận.Vậy chúng ta viết hàm này chính là viết hàm OnComm đáp ứng sự kiện ReceiveEvent như trong MSCOMM của MS vậy.

    Thiết lập này phải thực hiện trước khi mở cổng để giao tiếp, nên chúng ta sẽ viết hàm callback trước. Bạn viết 1 m-file với tên Serial_Callback.m như sau:
    Code:
    function Serial_Callback(obj,event)
        ind = fscanf(obj)
    Cú pháp của hàm callback như trên với obj là đối tượng kiểu Serial như trên. Hàm có tác dụng đọc dữ liệu và hiển thị luôn kết quả lên command window.

    Chúng ta đưa tham số tên hàm vào cho đối tượng s của ta:

    Code:
    >> s.BytesAvailableFcn = @Serial_Callback;
    Tiếp theo chúng ta bắt đầu giao tiếp:
    Code:
    >>fopen(s);
    >>fprintf(s,'chao cac ban');
    Sau đó các bạn xem kết quả thế nào, sau đó thử truyền các kí tự khác xem bằng lệnh fprintf(s,...), hoặc thử với vi xử lý xem cho nó truyền lên các bạn sẽ thấy rất hay.

    Bạn không giao tiếp nữa thì đóng cổng lại:
    Code:
    >>fclose(s);
    Mình viết tiếp sau còn giờ đi ngủ đã.

    Chúc các bạn thành công.
    chuỗi dữ liệu truyền ra nó hiện lên ở chỗ Command Window luôn hay là như thê náo vậy a ngohaibac???

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X