修改后的函数
[mw_shl_code=c,true]//插入命令
int16_t AddCmd(u8 *Cmdrev,u8 Cmdlen)
{
int16_t i;
int16_t j;
if((Cmdrev[0]==0)&&(Cmdrev[1]==0xff)&&(Cmdrev[2]==0)&&(Cmdrev[3]==0xff))
{
for(i=0;i<CMD_QUE;i++)
{
if(CmdQue[0].used == 0)
{
// printf(" i %2X\n\r",i);
break;
}
else if(i==CMD_QUE-1)
{
// ClearCmd(0);//清除第一条
for(j=0;j<CMD_QUE;j++)
{
// CopyCmd(j,j+1);//此时i等于CMD_QUE-1
ClearCmd(j);
}
i = 0;
break;
// return -1;
}
}
MainAddress = Cmdrev[7];
CmdQue[0].used = 1;
CmdQue[0].state = 1;
CmdQue[0].pid = Cmdrev[4];
CmdQue[0].Rdatalen = Cmdlen-7;
memcpy(CmdQue[0].data,Cmdrev+7,Cmdlen-7);//rev+7是什么意思?
return 0;
}
else
{
return -1;
}
}
int16_t CopyCmd(int8_t data,int8_t object)
{
if( object < CMD_QUE)
{
CmdQue[0][data].used = CmdQue[0][object].used;
CmdQue[0][data].SCmdTime = CmdQue[0][object].SCmdTime;
CmdQue[0][data].pid = CmdQue[0][object].pid ;
CmdQue[0][data].state = CmdQue[0][object].state;
CmdQue[0][data].Rdatalen = CmdQue[0][object].Rdatalen;
CmdQue[0][data].Tdatalen = CmdQue[0][object].Tdatalen;
// CmdQue[0][data].cmd = CmdQue[0][object].cmd;
// memcpy(CmdQue[0][xCmdN].sendTCPdata+7,RS485_RX_BUF,RS485_RX_CNT);
memcpy(CmdQue[0][data].data,CmdQue[0][object].data,CmdQue[0][object].Rdatalen);
memcpy(CmdQue[0][data].sendTCPdata,CmdQue[0][object].sendTCPdata,CmdQue[0][object].Tdatalen+7);
return 1;
}
else
{
return 0;
}
}[/mw_shl_code]
|