Пример расчета CRC на QT. Списан откуда-то с форума и подточен для QT. Я думаю будет полезен.
Еще можно глянуть здесь: http://code.google.com/p/mdvvconf/

QByteArray ModbusFunction::getCRC16Owen(QByteArray _data)
{
int i, j;
unsigned short crc;
crc = 0x0000;
for (i = 0; i < _data.size(); i++)
{
unsigned char b = _data[i];
for (j = 0; j < 8; ++j, b <<= 1)
{
if ((b ^ (crc >> 8)) & 0x80)
{
crc <<= 1;
crc ^= 0x8F57;
}
else
crc <<= 1;
}
}
unsigned char crcH = crc >> 8;
unsigned char crcL = crc & 255;
QByteArray res;
res.append(crcH);
res.append(crcL);
return res;
}