static void _MDrv_PM_Uart1RxData(void) { U16 timeout; gu8Uart1Detected = FALSE; for(gu8Uart1BufIndex = 0;gu8Uart1BufIndex < MAX_UART1_CMD_LENGTH;gu8Uart1BufIndex++) { timeout = 0; while((!(S1CON&BIT0)) && (timeout <= SEARL_INPUT_TIMEOUT)) { timeout++; } //{ timeout++; MDrv_PM_ClearWDT(); } //To Do if(S1CON&BIT0) { /* LGE, taburin : 20081122, skip first data if it's not 'k' / 'K' + 'm' / 'M'*/ if ( gu8Uart1BufIndex == 1 ) { if ( gu8Uart1CmdBuf[0] != 'k' #ifndef CONVERT_LOWERCASE && gu8Uart1CmdBuf[0] != 'K' && gu8Uart1CmdBuf[0] != 'M' #endif && gu8Uart1CmdBuf[0] != 'm') //这些条件要根据客户的串口协议来修改 { gu8Uart1BufIndex = 0; } } …. static BOOLEAN _MDrv_PM_Uart1ParseData(void) { U8 Data_Ready = FALSE; U8 CMD_Ready = FALSE; U8 isStatusReturn = FALSE; //U8 ucBuf[2]; if(gu8Uart1Detected == FALSE) { MDrv_PM_Uart1_Tx('F'); return CMD_Ready; } if((gu8Uart1CmdBuf[0] ==0xXX)&&(gu8Uart1CmdBuf[1] ==0xXX) &&(gu8Uart1CmdBuf[2] ==0xXX)&&(gu8Uart1CmdBuf[3] ==0xXX) &&(gu8Uart1CmdBuf[4] ==0xXX)) //这里按照客户串口协议中POWER命令来改写 { // "PON" CMD_Ready = TRUE; } ……. } |