Đăng Ký
Kết quả 1 đến 2 của 2

Hybrid View

  1. #1
    Thành viên Mới
    Ngày tham gia
    Nov 2013
    Bài viết
    4
    Thanks
    2
    Thanked 5 Times in 1 Post
    Hoặc có hàm tính CRC này thấy dễ xem hơn .
    Khi sử dụng, thì hãy truyền vào 1 mảng, kiểu dữ liệu là byte và "len" là số byte của chuỗi truyền.
    Ví dụ: Với chuỗi "01 03 00 01 00 04". Ta khai báo 1 mảng byte mang[];
    Hãy gán giá trị cho mảng như sau: mang[0] = Convert.ToByte("01",16) ....và tiếp tục với
    các giá trị còn lại còn lại.
    chuỗi truyền có 6 byte nên "len = 6";
    Khi sử dụng thì hãy gọi hàm ModRTU_CRC(mang,len);


    Code:
    UInt16 ModRTU_CRC(byte[] buf, int len)
    {
    UInt16 crc = 0xFFFF;
    
    for (int pos = 0; pos < len; pos++) {
    crc ^= (UInt16)buf[pos]; // XOR byte into least sig. byte of crc
    
    for (int i = 8; i != 0; i--) { // Loop over each bit
    if ((crc & 0x0001) != 0) { // If the LSB is set
    crc >>= 1; // Shift right and XOR 0xA001
    crc ^= 0xA001;
    }
    else // Else LSB is not set
    crc >>= 1; // Just shift right
    }
    }
    // Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes)
    return crc;

    Và đây là 1 video để bạn biết rằng cỡ như mình cũng có thể làm được




    Lời kết: Hãy học hỏi như cái cách mà những người khác đã từng làm.
    Lần sửa cuối bởi LSL_LSL, ngày 02-01-2015 lúc 10:40 PM.

  2. The Following 5 Users Say Thank You to LSL_LSL For This Useful Post:


Đánh dấu

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Back to Top