代码:
#define  MAX_LEN 256
#define SE_SOF 0xAA
#define MIN_SE 6
#define RMU_GET_STATUS 0x00
#define SE_EOF 0x55SeFrame[0] = SE_SOF;
if (flagCrc) // need CRC
{
SeFrame[1] = 4;
SeFrame[2] = RMU_GET_STATUS | 0x80;
CRC16Calculation(SeFrame + 1, 2, SeFrame + 3);
SeFrame[5] = SE_EOF;
se_len = MIN_SE;
}
else // do not need CRC
{
SeFrame[1] = 2;
SeFrame[2] = RMU_GET_STATUS;
SeFrame[3] = SE_EOF;
se_len = MIN_SE - 2;
}
从程序中可以知道不用CRC校验的时候发送数据SeFrame[0]、SeFrame[1]、SeFrame[2]、SeFrame[3]
为 0xaa 0x02 0x00 0x55 其中0xaa是起始位0x55是结束位 数据位是0x02 0x00
CRC16校验的时候我理解是对数据位0x02 0x00(信息位),进行CRC16得到校验位16位(监督位)
那么发送的数据应该是SeFrame[0]、SeFrame[1]、SeFrame[2]、SeFrame[3]、SeFrame[4]、SeFrame[5]、SeFrame[6]
发送的数据应该是aa 0x02 0x00 0x** 0x** 0x55(其中0x** 0x**是校验位)
但是为什么程序中是
SeFrame[1] = 4;
SeFrame[2] = RMU_GET_STATUS | 0x80;
能不能解答一下