
请问这个FLAG:标志位有什么用呢?另外我写的这个函数为什么会出现误码?
void NIMING_Send_IMAGE(int __fd,__CONST_SOCKADDR_ARG __addr,socklen_t __addr_len)
{
//匿名格式
uint8_t BUFF[200];
uint8_t _cnt = 0;
BUFF[_cnt++]=0xAB;//帧头
BUFF[_cnt++]=0x01;//源地址
BUFF[_cnt++]=0xFF;//目标地址
BUFF[_cnt++]=0xB0;//功能码(ID)
BUFF[_cnt++]=17+100;//数据长度(2字节)
BUFF[_cnt++]=0;//数据长度
//FLAG
BUFF[_cnt++]=1;
BUFF[_cnt++]=0;
//COLOR
BUFF[_cnt++]=0;
//WDITH
BUFF[_cnt++]=10;
BUFF[_cnt++]=0;
//HEIGHT
BUFF[_cnt++]=10;
BUFF[_cnt++]=0;
// VAL10
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
BUFF[_cnt++]=0;
for(int i=0;i<100;i++)
BUFF[_cnt++]=128;
uint8_t sumcheck = 0;
uint8_t addcheck = 0;
uint16_t flen = BUFF[4] + BUFF[5] * 256;
for(uint16_t i=0; i < (flen+6); i++)//校验计算
{
sumcheck += BUFF[i];
addcheck += sumcheck;
}
BUFF[_cnt++] = sumcheck;//和校验
BUFF[_cnt++] = addcheck;//附加校验
sendto(__fd, BUFF, _cnt, 0, __addr, __addr_len);
}
