串口数据接收处理
串口接收函數只需要管理數據的接收就行了,不必管理相應數據接收的是什么,還有順序對不對,真正尋找數據的地方是在數據處理的地方。
void USART2_IRQHandler(void) {if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {if(esp8266_cnt >= sizeof(esp8266_buf)) esp8266_cnt = 0; esp8266_buf[esp8266_cnt++] = USART2->DR;USART_ClearFlag(USART2, USART_FLAG_RXNE);}}數據處理端,函數來自于OneNET麒麟板程序
void OneNet_App(void) {char *dataPtr;char numBuf[10];int num = 0;unsigned char *cmd;cmd = (unsigned char *)strchr((char *)esp8266_buf, ':');if(cmd == NULL) return;cmd++;if(cmd[0] == 0xA0) OneNet_Replace(cmd, 4); elsereturn;dataPtr = strstr((const char *)cmd, "}"); //if(dataPtr != NULL) //{dataPtr++;while(*dataPtr >= '0' && *dataPtr <= '9') //{numBuf[num++] = *dataPtr++; //}num = atoi((const char *)numBuf); //if(strstr((char *)cmd, "redled")) //{if(num == 1) //{Led5_Set(LED_ON);}else if(num == 0) //{Led5_Set(LED_OFF);}}//else if(strstr((char *)cmd, "greenled")){if(num == 1){Led4_Set(LED_ON);}else if(num == 0){Led4_Set(LED_OFF);}}else if(strstr((char *)cmd, "yellowled")){if(num == 1){Led3_Set(LED_ON);}else if(num == 0){Led3_Set(LED_OFF);}}else if(strstr((char *)cmd, "blueled")){if(num == 1){Led2_Set(LED_ON);}else if(num == 0){Led2_Set(LED_OFF);}}}ESP8266_Clear(); //}總結
- 上一篇: 王融(1979-),女,中国信息通信研究
- 下一篇: 【2017年第1期】大数据能力开放平台创