智能小车串口指令格式与分析 指令格式:7ENNCCD1D2。。。Dn,(NNn1,n〔0,12〕,CC〔0,255〕) 其中CC及指令代号,最多256条指令;串口指令分析程序如下: u8COM1ZT0;串口1分析状态 uint32tTimeOut10;用于串口1分析超时计时 u8OrderS指令数据长度 u8OrderS接收到的指令数据数量 u8OrderBuff〔COM1BuffSize〕;接收到的指令缓冲区 voidCOM1Analysis(void) { u8 if(USART1RXANA!USART1RXSTA) { chUSART1RXBUF〔USART1RXANA〕; if(USART1RXANAUSART1RECLEN) {调整缓冲区尾指针 USART1RXANA0; } switch(COM1ZT) { case0:判断指令头7E if(ch0x7E){ COM1ZT1; TimeOut1OSTimeGet();超时复位 } case1:接收指令数据长度 OrderS COM1ZT2; TimeOut1OSTimeGet();超时复位 OrderSum0;接收数量置0 case2:接收指令数据 OrderBuff〔OrderSum〕 if(OrderSumOrderSize){ 指令接收完毕,执行指令发送到邮箱 OSMboxPost(msgorder,(void)OrderBuff);发送消息 COM1ZT0;状态复位 TimeOut1OSTimeGet();超时复位 } default:意外处理 printf(COM1状态异常:d,COM1ZT); COM1ZT0;状态复位 TimeOut1OSTimeGet();超时复位 } } if(OSTimeGet()TimeOut110COM1ZT0){ 超时100ms处理 printf(COM1超时:d,OSTimeGet()TimeOut1); COM1ZT0;状态复位 TimeOut1OSTimeGet();超时复位 } }