MODBUS CRC16 C ++ソースコード

// 124.cpp:コンソールアプリケーションのエントリポイントを定義します。
//


の#include "STDAFX.H"




// INT _tmain(INT ARGC、_TCHAR * ARGV [])
// {
// 戻り0;
//}




の#include "STDAFX.H"
の#include "float.hの"


の#define UCHAR unsigned char型
の#define UINT unsigned int型


UCHAR auchCRCHi [] =
{
0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、
0x40の、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、
0x80を、0×41、0x01で、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x00で、0xC1、0x81と、0x40の、0x01で、
0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、
$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、 0x81と、0x40の、0x00で、0xC1、0x81と、
0x40の、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、
0x80を、0×41、$ 00、0xC1、0x81と、 0x40の、0x00の、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、
0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、
0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、
0x40の、0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、$ 00、 0xC1、0x81と、0x40の、0x01の、0xC0の、
0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x00で、0xC1、0x81と、0x40の、0x01の、
0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、
$ 00、0xC1、0x81と、0x40の、0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、 0x80を、0×41、$ 00、0xC1、0x81と、
0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x01の、0xC0の、
0x80を、0×41、$ 00、0xC1、0x81と、 0x40の、0x00の、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、
0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、0x40の、0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、
0x00で、0xC1、0x81と、0x40の、0x01の、0xC0の、0x80を、0×41、0x01の、0xC0の、0x80を、0×41、$ 00、0xC1、0x81と、
0x40の
}。


フライングauchCRCLo [] =
{
0x00で、0xC0の、0xC1、0x01の、0xC3、0x03の、0x02のに0xC2、0xC6、0x06で、0x07の、0xC7に、0x05の、0xC5、0xC4、
0x04の、0xCC、0x0Cの、0x0Dの、0xCD、0x0Fの、0xCF、0xCE、0x0Eの、は0x0A、0xCA、0xCB、0x0Bの、0xC9、0x09の、
0x08に、0xC8、0xD8、0x18の、0x19、0xD9、として0x1B、0xDB、0xDA、0x1A、 0x1Eを、0xDE、0xDF、0x1Fの、0xDD、
0x1Dの、0x1cに、0xDC、0x14に、は0xD4、に0xD5、0x15の、0xD7、0x17の、0x16、0xD6、0xD2、0x12を、0x13に、0xD3、
0x11を、0xD1、0xD0、0x10を、0xF0が、 0x30から、0x31、0xF1、0x33の、0xF3、0xF2、0x32の、0x36、0xF6、0xF7、
0x37は、0xF5、0x35の0x34の、0xF4、0x3cの、0xFC、0xFDで、0x3D、0xFFで、は0x3F、0x3E、0xFEの、0xFA、0x3A、
0x3B、0xFB、ます。0x39、0xF9、0xF8、0x38、の0x28、0xE8、0xE9、0x29、0xEB、0x2Bを、0x2A、0xEA、0xEE、
0x2E、0x2F、0xEFという、0x2D、0xED、0xEC、0x2C、0xE4、0x24を、0x25、 0xE5、は0x27、0xE7、0xE6、0x26、
ただし0x22、0xE2、0xE3、0x23、0xE1の、0x21で、0x20に、0xE0となっ、0xA0を、0x60、の0x61、0xA1の、は0x63、0xA3の、0xA2、
0x62、は0x66、は0xA6、0xA7、0x67、0xA5の、0x65、0x64、0xA4の、0x6C、0xACの、0xADの、0x6D、0xAF、0x6F、
0x6E、0xAEの、0xAAを、0x6A、0x6B、0xAB、0x69の、0xA9、0xA8、0x68、 0x78と、0xB8、0xB9、0x79、0xBB、
0x7Bと、0x7Aの、0xBA、0xBE、0x7Eを、0x7Fの、0xbfの、0x7D、0xBD、の0xBC、0x7C、0xB4、0x74、0x75、0xB5、
0x77、0xB7、0xB6、0x76、0x72、コード(0xB2)、0xB3、0x73、の0xB1、(0x71)を、0x70、0xB0、0x50を、0x90を、0x91を、
0x51、0x93、$ 53、0x52、0x92、0x96、0x56、0x57、0x97、0x55を、0x95、0x94、が0x54、0x9C、0x5Cを、
0x5D、0x9D、0x5F、0x9F、0x9E、0x5Eの、0x5A、0x9A、0x9B、0x5B、0x99、0x59、0x58、0×98、0x88、
0x48、0x49、0x89、0x4B、0x8B、0x8A、0x4A、の0x4E、0x8Eが、0x8F、 0x4F、0x8D、0x4D、0x4C、0x8C、
0x44の、0x84の、0x85、0x45、0x87の、0x47、0x46の、0x86で、0x82と、0x42に、0x43この、0x83の、0×41、0x81と、0x80を、
0x40の
}。


UINT N_CRC16(*更新Ucha、UINT LEN)
{
Ucha uchCRCHi = 0xFFで;
Ucha uchCRCLo = 0xffで。
UINTを実現しました。
ながら(len--)
{
++ uchCRCHi = ^ *更新達成。
uchCRCHi uchCRCLo = ^ auchCRCHi [達成]。
uchCRCLo auchCRCLo = [達成]。
}
リターン(uchCRCHi << 8 | uchCRCLo)。
}


のIntメイン()
{
// Uchaデータ[5] = {} 0x02,0x06,0x10,0x00,0x09。
Uchaデータ[6] = {0xFの、0x03,0x20,0x00,0x00,0x06}。
I = N_CRC16(データ、6)がuint。
printf( "%の02X"、I);
(;;)のための
{


}
0を返します。
}

发布了12 篇原创文章 · 获赞 6 · 访问量 2万+

おすすめ

転載: blog.csdn.net/huaweizte123/article/details/80452518