69,382
社区成员
发帖
与我相关
我的任务
分享
void uart_fmAnaly(void)
{
uint rcvcrc16,sndcrc16 ;
ptagtBBFRAME pfram ;
//接收正确
if(g_ctrlFlag.rcvOk==1)
{
pfram=(ptagtBBFRAME)&g_uartbuf[0];
rcvcrc16=CRC16(g_uartbuf,pfram->dlen-2,0xffff);
//
//查询crc是否正确
if(rcvcrc16==(g_uartbuf[pfram->dlen-2]|g_uartbuf[pfram->dlen-1]<<8))
{
//0x80,主板对打卡板的响应消息
if(pfram->cmd&FRM_MANS_FLAG)
{
//LED_ON();
g_ctrlFlag.fmok=1 ;
//收到正确的响应包
}
else if((pfram->cmd&FRM_MOSI_FLAG)==FRM_MOSI_FLAG)
{
//0x40,主板到打卡板的消息(做配置,状态查询的一些命令)
switch(pfram->cmd)
{
case M_STATE_CMD :
//查询串口的状态
pfram->cmd|=FRM_MANS_FLAG ;
sndcrc16=CRC16(g_uartbuf,pfram->dlen-2,0xffff);
#if 1
uart_sndStr((uchar*)g_uartbuf,5);
//先把数据体前面的数据发送完成
uart_sndStr((uchar*)&sndcrc16,2);
//先把数据体前面的数据发送完成
#endif
uart_cfgRst();
break ;
}
}
g_ctrlFlag.crdTmEn=FALSE ;
//关闭回复计时
g_cardTM=0x00 ;
g_cardState=CARD_MUTUAL ;
//3,
}
//错误的数据包
//其他类型的错误帧
else
{
g_cardState=CARD_SEEK ;
//0,
uart_cfgRst();
}
g_ctrlFlag.rcvOk=0 ;
}
}
void uart_cfgRst(void)
{
g_rcvpos=0 ;
g_ctrlFlag.rcvOk=0 ;
UART_INT_EN();
}