ZhenDangBo2024/武汉中显资料合集/应用笔记/单片机读取VGUS屏返回指令解析例程.c

95 lines
2.1 KiB
C
Raw Normal View History

2024-11-18 10:44:27 +08:00
//<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;
}