Thông báo

Collapse
No announcement yet.

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

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

  • 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

  • #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


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

      Comment


      • #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


        • #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

          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          • afrendly
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi afrendly
            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
            04-12-2025, 01:27
          • nick22
            Trả lời cho Máy điện châm ?
            bởi nick22
            Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
            01-12-2025, 13:23
          Đang tải...
          X