哪位高手能帮助解释一下这段程序嘛,其中buff 这个数组储存的是干什么的

谁能帮助解释一下这段程序嘛,其中buff 这个数组储存的是干什么的。
char MODBUS_S_ReadMultiRegD(unsigned char rtu, unsigned short int RegAdd, unsigned short int RegCount, short int *list)
{
unsigned short int crc16;
unsigned short int crctmp;
short int vartmp;

memset(buff, 0x00, 255);
buff[0]= rtu;
buff[1]= 0x03;
buff[2]= (unsigned char)((RegAdd-40001) >> 8);
buff[3]= (unsigned char)(RegAdd-40001);
buff[4]= (unsigned char)(RegCount >> 8);
buff[5]= (unsigned char)RegCount;
crc16= CalcCrcFast(buff, 6);
buff[6]= (unsigned char)(crc16 >> 8);
buff[7]= (unsigned char)crc16;

//发送数据
unsigned long strlen;
if(IsOpen())
{
//发送数据
strlen= WriteChar(8, (char *)buff);
if(strlen==8)
{
//读数据
memset(buff, 0x00, 255);
Sleep(50);
strlen= ReadChar(255, (char *)buff, 1000);
if(strlen==0)
{
//无返回
return(-2);
}
else
{
//返回长度有效,解析接收缓冲区
if(strlen== (3+(RegCount *2)+ 2) && buff[0]== rtu && buff[1]== 0x03)
{
crc16= CalcCrcFast(buff, 3+(RegCount*2));
crctmp= buff[strlen-2];
crctmp= crctmp << 8 | buff[strlen-1];
if(crc16== crctmp )
{
for(int i=0; i< RegCount; i++)
{
vartmp= buff[3+(2*i)];
vartmp= vartmp << 8;
vartmp= vartmp | buff[3+((2*i)+1)];

list[i]= vartmp;
}
}
else
{
return(-1);
}
}
else
{
return(-1);
}
}
}
else
{
return(-2);
}
}
else
{
return(-2);
}

return(1);
}

------解决方案--------------------
楼主是要做规约转换是吧
这个buff是用来组织命令报文的
你要先了解modbus规约,看看就懂了
modbus是最简单的规约