| |||||||||||
crc16 calculation Posted by clubnet (clubnet), 4 November 2008 I am currently trying to get the crc16 of a hex string in tcl ,the hex string is as follows 0x00 0x01 0x11 0xFF and then send it to a serial interface How do i do this in tcl using polynomial 0x8005 The resulting crc checksum should be in two bytes and the result for the above string is 0xE4 and 0x15 which was calculated in C The c code is as follows can I do the same in tcl #define CRC16_POLY 0x8005 #define CRC_INIT 0x0 INT16U culCalcCRC(INT8U crcData, INT16U crcReg) { INT8U i; for (i = 0; i < 8; i++) { if (((crcReg & 0x8000) >> ^ (crcData & 0x80)) crcReg = (crcReg << 1) ^ CRC16_POLY; else crcReg = (crcReg << 1); crcData <<= 1; } return crcReg; } INT16U GenCRC(INT8U *p, INT8U n) { INT8U i; INT16U checksum = CRC_INIT; for(i = 0; i < n; i++) checksum = culCalcCRC(*p++, checksum); //need to change i=(checksum>>&0xff; checksum=(checksum<< + i; return checksum; } This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.
|
Other Forum Posts Follow us on ... | ||||||||||
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho |