unsigned short CRC16 (unsigned char *Data,unsigned int Len)
{
unsigned short Flag_1 = 0xffff;
unsigned short Flag_2 = 0x1021;
unsigned char Flag_3=0;
while(Len--)
{
Flag_3 = *(Data++);
Flag_1 ^= (Flag_3<<8);
for(int i=0;i<8;i++)
{
if(Flag_1 & 0x8000)
Flag_1=(Flag_1<<1)^Flag_2;
else
Flag_1=Flag_1<<1;
}
}
return Flag_1;
}