4 - 38
PN 074-550-P1C
SQC-310 Operating Manual
4.4.3 C++
class CRC14
{
public:
CRC14(void) { crc = 0x0;};
public:
short crc;
public:
short calcCRC( unsigned char * str)
{
int length = (str != NULL) ? 1 + str[1] - 34 : 0;
if (length > 0) {
crc = (short) 0x3fff;
for (int jx = 1; jx <= length; jx++) {
crc = (short) (crc ^ (short) str[jx]);
for (int ix = 0; ix < 8; ix++) {
short tmpCRC = crc;
crc = (short) (crc >> 1);
if ((tmpCRC & 0x1) == 1) {
crc = (short) (crc ^ 0x2001);
}
}
crc = (short) (crc & 0x3fff);
}
}
return crc;
}
unsigned char crc2() {
unsigned char val = (unsigned char) (((crc >> 7) & 0x7f) +
34);
return val;
}
unsigned char crc1() {
unsigned char val = (unsigned char) ((crc & 0x7f) + 34);
return val;
}
};