PIC18F4550_USB_CDC] Dữ liệu nhận về bị sai khi chứa byte có giá trị 27.

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • duong_act
    Thành viên tích cực
    • Nov 2008
    • 4903

    #1

    PIC18F4550_USB_CDC] Dữ liệu nhận về bị sai khi chứa byte có giá trị 27.

    Xin chào mọi người !

    Có 1 vấn đề mình nhờ mọi người giúp đỡ !

    Mình đang xây dựng 1 USB CDC với PIC18F4550, thư viện usb, driver lấy từ mla ( microchip libraries application).
    Quá trình kết nối và truyền nhận dữ liệu không có sự số tuy nhiên có 1 trường hợp đặc biệt nếu trong dữ liệu gửi lên PC có chứa byte = 27 ( escape ).
    Nếu trong đoạn dữ liệu gửi lên có chứa 27 thì các giá trị của byte khác bị sai.

    Đây là đoạn mã xử lý dưới PIC cho 4byte trong dữ liệu tăng lên 1 trước mỗi lần truyền :
    Code:
    WRITEBUFF[0]++;
    WRITEBUFF[1]++;
    WRITEBUFF[2]++;
    WRITEBUFF[3]++;
    
    putUSBUSART(WRITEBUFF,CDC_DATA_IN_EP_SIZE);
    Đây là đoạn code nhận dữ liệu trên PC ( C#)
    Code:
    byte[] bdat = new byte[4];
    private void sPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
    
           sPort.Read(bdat, 0, 4);
           lblStatus.Text = bdat[0].ToString() + "," + bdat[1].ToString() + "," + bdat[2].ToString() + "," + bdat[3].ToString();
           listBox1.Items.Add(lblStatus.Text);
    }
    Về nguyên lý trên phần mềm sẽ nhận được 4 byte dữ liệu lệch nhau 1 đơn vị theo hướng tăng dần. ( 4byte được khởi tạo lệch 1 ở đầu hàm main).
    Tuy nhiên nếu dữ liệu gửi lên PC có chứa byte = 27 thì dữ liệu nhận sai như hình:




    Attached Files
  • bqviet
    Linux zealot
    • Jun 2007
    • 6171

    #2
    Nhận định sơ bộ : có vẻ đây là lỗi của phần nhận phía PC hơn là phía bên gửi.
    Phần mềm tự do hoặc không dùng máy tính nữa !.

    Comment

    • davidcopy
      Thành viên tích cực
      • Sep 2012
      • 344

      #3
      Có lẽ 27 = ESC(escape) nên phát sinh lỗi.

      Comment

      • duong_act
        Thành viên tích cực
        • Nov 2008
        • 4903

        #4
        Nguyên văn bởi bqviet Xem bài viết
        Nhận định sơ bộ : có vẻ đây là lỗi của phần nhận phía PC hơn là phía bên gửi.
        Để em thử với con PC cùi bắp ở nhà xem sao

        Comment

        • duong_act
          Thành viên tích cực
          • Nov 2008
          • 4903

          #5
          Nguyên văn bởi davidcopy Xem bài viết
          Có lẽ 27 = ESC(escape) nên phát sinh lỗi.
          Cái này mình nghĩ không đúng. Nếu giá trị 27 gây lỗi thì khi muốn truyền 27 thì hết cách @@

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...