- void uart_process(U8 u8)
- {
- if(uart_state == CMD_NO)
- {
- if(u8 == STX_CMD)
- {
- uart_state = CMD_START;
- }
- }
- else if(uart_state == CMD_START)
- {
- switch(cmd_state)
- {
- case NO_CMD:
- cmd_state = u8;
- break;
- case COST_CMD:
- //解析存储有用数据到相应数据结构中
- //进行CRC校验
- ……
- uart_state = CMD_END;
- cmd_state = NO_CMD;
- CRC = 0;
- break;
- ……
- }
- ……
- }
- else if(uart_state == CMD_END)
- {
- uart_state = CMD_NO;
- if(u8 == ETX_CMD)
- {
- //接受完毕
- //可以考虑抛出一个消息main函数循环中进行响应处理。
- }
- }
- }
|