#include "crc.h" #include #include "QString" crc::crc() { } uint8_t crc::crc8(uint8_t *Ptr,uint8_t num) { uint8_t crc = 0; uint16_t j,i; for (j = 0; j < num; j++) { crc ^= *(Ptr+j); for ( i = 0; i < 8; i++) { if ((crc & 0x01) != 0) { crc >>= 1; crc ^= 0x8c; } else { crc >>= 1; } } } return crc; } void crc::crc16(uint8_t *data, int offset, int len,uint8_t *lb,uint8_t *hb) { if (len > 0) { uint16_t crc = 0xFFFF; int i = offset; for (; i < len; i++) { crc = (uint16_t)(crc ^ (data[i])); for (int j = 0; j < 8; j++) { crc = (crc & 1) != 0 ? (uint16_t)((crc >> 1) ^ 0xA001) : (uint16_t)(crc >> 1); } } uint8_t hi = (uint8_t)((crc & 0xFF00) >> 8); //高位置 uint8_t lo = (uint8_t)(crc & 0x00FF); //低位置 *lb=lo;*hb=hi; } } int8_t crc::CheckSumCode(uint8_t CODEMODE, uint8_t *pBuffer, uint16_t Len, uint16_t offset, uint8_t *CHKA, uint8_t *CHKB) { uint16_t i = 0; uint8_t _CHKA = 0x00,_CHKB = 0x00; for(i=offset;i