
ZG09 CO
2
Module
http://www.ZyAura.com
REV. 082018
Commend for data returning 0103 0201 F8B8 56
ID
(1 Byte)
Function Code
(1 Byte)
Length
(1 Byte)
data
(N Bytes)
CRC
(2 Bytes)
Note
(1) FAH
03H
02H
01ACH
5C7DH
428ppm
(2) FEH
04H
02H
0197H
ED1AH
407ppm
Data length for Receiving =Length for Sending x 2
CO
2
value is 0x01ACH = 428ppm, 0x0197=407ppm
CRC Code
unsigned int Crc16(unsigned char * data, unsigned char length)
{
int
j;
unsigned int reg_crc=0xFFFF;
while(length--)
{
reg_crc
^= *data++;
for(j=0;j<8;j++)
{
if(reg_crc & 0x01) /* LSB(b0)=1 */
reg_crc=reg_crc
>>1 ^ 0xA001;
else
reg_crc=reg_crc
>>1;
}
}
return reg_crc;
}
CRC Code (Lookup Table)
unsigned int Crc(unsigned char *ucTx, unsigned int Len)
{
if (Len && ucTx)
{
unsigned char *ucPtr=ucTx;
unsigned char ucCRCHi = 0xff;
unsigned char ucCRCLo = 0xff;
unsigned uIndex;
while(Len--)
{
uIndex = ucCRCHi ^ *ucPtr++;
ucCRCHi = ucCRCLo ^ ucCRCHigh[uIndex];
ucCRCLo = ucCRCLow[uIndex];
}
return (unsigned int)(ucCRCLo << 8) | (unsigned int)ucCRCHi;
}
else
return 0;
}
unsigned char ucCRCHigh[] =
{
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,
0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,
0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,
0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,