User's Guide

Revision 1.0 STX3 Users Manual
11/5/2013
Revision 1.0 Subject To Change without Notice P a g e | 19
The following example is written in the Java programming language:
char crc16_lsb(byte pData[], int length)
{
int pData_i = 0;
char s1,s2;
byte i;
char data, crc;
crc = (char) 0xFFFF;
if (length == 0)
return 0;
do
{
data = (char)((char)0x00FF & pData[pData_i++]);
crc = (char)(crc ^ data);
for (i = 8; i > 0; i--)
{
if ((crc & 0x0001) != 0)
crc = (char)((crc >> 1) ^ 0x8408);
else
crc >>= 1;
}
}while (--length != 0);
crc = (char)~crc;
return (crc);
}
USAGE: calculate the CRC for a message and update the message CRC
byte msg[]; int len;
char crc = crc16_lsb(msg,len-2);
msg[len-2] = (byte)((short)crc & (short)0xff);
msg[len-1] = (byte)((short)crc >> 8);