95 lines
2.1 KiB
C
95 lines
2.1 KiB
C
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ȡVGUS<55><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
//<2F><>Դ<EFBFBD><D4B4><EFBFBD>人<EFBFBD><E4BABA><EFBFBD>ԿƼ<D4BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ www.viewtech.cn
|
|||
|
//ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>
|
|||
|
u16 StartNum=0,TalNum=0;
|
|||
|
#define BUFFER_SIZE 2048//ָ<><EFBFBD><EEBBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>û<EFBFBD><C3BB>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 CommBuff[BUFFER_SIZE]//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEBBBA><EFBFBD><EFBFBD>
|
|||
|
#define USER_R3 0xA5//֡ͷ
|
|||
|
#define USER_RA 0x5A//֡ͷ
|
|||
|
/////////////////
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
|
|||
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD>IJ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ĵ<DEB8><C4B4><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>洮<EFBFBD><E6B4AE><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void USART3_IRQHandler(void)
|
|||
|
{
|
|||
|
CommBuff[TalNum++]=USART_ReceiveData(USART3);//<2F><><EFBFBD>洮<EFBFBD><E6B4AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(TalNum==BUFFER_SIZE)
|
|||
|
TalNum=0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
|
|||
|
void deal_command()
|
|||
|
{
|
|||
|
u16 i,CurNum,tem_TalNum;
|
|||
|
u8 CmdBuf[256];
|
|||
|
u16 nowbuffer,len;
|
|||
|
len=StartNum;
|
|||
|
tem_TalNum=TalNum;
|
|||
|
if(tem_TalNum==len)//
|
|||
|
return;
|
|||
|
if(CommBuff[StartNum]!=USER_R3)
|
|||
|
{
|
|||
|
StartNum++;
|
|||
|
if(StartNum==BUFFER_SIZE)
|
|||
|
StartNum=0;
|
|||
|
return;
|
|||
|
}
|
|||
|
if(tem_TalNum>len)
|
|||
|
nowbuffer=tem_TalNum-len;
|
|||
|
else
|
|||
|
nowbuffer=tem_TalNum+BUFFER_SIZE-len;
|
|||
|
if(nowbuffer<5)
|
|||
|
return;
|
|||
|
CurNum=StartNum+2;
|
|||
|
if(CurNum>BUFFER_SIZE-1)
|
|||
|
CurNum-=BUFFER_SIZE;
|
|||
|
len=CommBuff[CurNum]+3;
|
|||
|
if(nowbuffer<len)
|
|||
|
return;
|
|||
|
i=0;
|
|||
|
CurNum=StartNum;
|
|||
|
while(1)
|
|||
|
{
|
|||
|
CmdBuf[i++]=CommBuff[CurNum++];
|
|||
|
if(CurNum==BUFFER_SIZE)
|
|||
|
CurNum=0;
|
|||
|
if(i==4)
|
|||
|
{
|
|||
|
if(CmdBuf[0]!=USER_R3||CmdBuf[1]!=USER_RA)//
|
|||
|
{
|
|||
|
StartNum=CurNum;
|
|||
|
return;
|
|||
|
}
|
|||
|
len=CmdBuf[2];
|
|||
|
}
|
|||
|
else if(i>4)
|
|||
|
{
|
|||
|
if(i==len+3)//
|
|||
|
{
|
|||
|
StartNum=CurNum;
|
|||
|
break;
|
|||
|
}
|
|||
|
else if(i>255)//
|
|||
|
{
|
|||
|
StartNum=CurNum;
|
|||
|
return;
|
|||
|
}
|
|||
|
else if(CurNum==tem_TalNum)
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
///<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ָ<EFBFBD><D6B8>CmdBuf<75><66><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
switch(CmdBuf[3])
|
|||
|
{
|
|||
|
case 0x81:
|
|||
|
|
|||
|
break;
|
|||
|
case 0x83:
|
|||
|
|
|||
|
break;
|
|||
|
default:////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч,ɾ<><C9BE>
|
|||
|
break;
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|