解析Esp8266信号电平的方法

如何获得Esp8266的信号电平:当将Esp8266通过AT + CWJAP连接到STA模式的路由器时? 您可以获取相应路由器ssid的信号电平,命令响应大致如下:+ CWJAP:“ 602”,“ f2:41:c8:f4:2c:19”,6,-53回复文本如上所述,-53是当前ssid的信号电平。

因此,这里的问题是,在什么情况下它具有强大的功能?在什么情况下它很弱?参考:https://www.jianshu.com/p/cb2827c4bf17& nbsp;& nbsp;& nbsp;我们可以轻松地编写一个函数来基于其获取强度级别。

在这里,我们只需要传入解析后的值,然后获取该函数的返回值即可。

/ *通知图标使用的RSSI级别4 -55& lt; = RSSI级别3 -66& lt; = RSSI& lt; -55 2级-77& lt; = RSSI& lt; -67 1级-88& lt; = RSSI& lt; -78 0级RSSI& lt; -88 * / static int calcSingleLevel(int rssi){if(rssi& gt = -55)返回4;否则if(rssi& gt = -66& amp; rssi& lt -55)返回3;否则if(rssi& gt = -77& amp; rssi& lt -67)返回2;否则if(rssi = -88& amp; rssi& lt -78)返回1;否则if(rssi& lt -88)返回0;}用于解析字符串的模板如下:+ CWJAP:“ 602”,“ f2:41:c8:f4:2c:19”,6, -53解析信号的函数:// AP信号电平分析int Display_And_Parse_Ap_Signal(void){int res = -1; int Single = -1; int Wifi_Single = -1; char * move_ptr = NULL; wifi_init_printf(" AT + CWJAP? ”); osDelay(500); //分析子字符串是否包含+ CWJAP:如果有子字符串,则进行分析,并且不返回-1,这表示命令获取超时或在(0 == AT_Cmd_Answer((uint8_t *)“ + CWJAP时出错: ",NULL,1000)){//查找数据并粗略地答复:====& gt; + CWJAP:“ 602”,“ f2:41:c8:f4:2c:19”,6,-53 move_ptr = strstr((char *)wifi_rxbuf,“ + CWJAP:”); move_ptr = strstr((char *)move_ptr + 1,``,''); move_ptr = strstr((char *)move_ptr + 1,``,''); move_ptr = strstr((char *)move_ptr + 1,``,''); //获取wifi信号电平Single = atoi(move_ptr +1); Wifi_Single = calcSingleLevel(Single);返回Wifi_Single;}返回-1;}