解析Esp8266信号级别的方法

简介: 解析Esp8266信号级别的方法

Esp8266获取信号级别的方法:

即当Esp8266在STA模式下连接了一个路由以后,通过AT+CWJAP?\r\n就可以获取到对应路由器ssid的信号级别了,指令回复大致长这个样子:

+CWJAP:"602","f2:41:c8:f4:2c:19",6,-53

如上回复文本,-53就是当前ssid的信号级别了。

那么到这里就有问题了,到底什么情况下是强?什么情况下是弱呢?

参考:https://www.jianshu.com/p/cb2827c4bf17

640.png

   我们很容易根据它写出一个强度级别获取的函数,在这里,我们只需要把解析出来的值传入,然后获取该函数的返回值。

/* RSSI Levels as used by notification icon
   Level 4  -55 <= RSSI
   Level 3  -66 <= RSSI < -55
   Level 2  -77 <= RSSI < -67
   Level 1  -88 <= RSSI < -78
   Level 0         RSSI < -88 */
static int calcSingleLevel(int rssi)
{
    if(rssi >= -55)
        return 4;
    else if(rssi >= -66 && rssi < -55)
        return 3;
    else if(rssi >= -77 && rssi < -67)
        return 2;
    else if(rssi >= -88 && rssi < -78)
        return 1;
    else if(rssi < -88)
        return 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?\r\n");
    osDelay(500);
  //分析子串中是否含有+CWJAP:子串,有的话执行分析,没有返回-1代表指令获取超时或出错
  if(0 == AT_Cmd_Answer((uint8_t *)"+CWJAP:", NULL, 1000))
    {
        //找到数据回复大致的样子: ====>  +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);
        return Wifi_Single  ;
    }
  return -1 ;
}


目录
相关文章
|
21天前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
38 9
|
2月前
|
机器学习/深度学习 存储 PyTorch
Pytorch中in-place操作相关错误解析及detach()方法说明
Pytorch中in-place操作相关错误解析及detach()方法说明
93 0
|
2月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
244 0
|
2月前
|
敏捷开发 开发框架 数据可视化
|
2天前
项目管理工具计划模板解析:项目管理工具的双重功能与创建方法
本文介绍了项目计划模板的含义和重要性。项目计划模板是用于规划项目结构的可编辑文档,帮助团队明确任务、分配责任和管理时间。模板有助于跟踪项目进度、避免任务冲突,并简化会议安排。创建模板通常涉及选择合适的项目管理工具,如Zoho Projects或Microsoft Excel,然后分解任务、定义日期并持续调整。在Zoho Projects中,用户可以按步骤创建模板,包括命名、添加任务和设置相关细节。
11 0
|
3天前
|
JavaScript 前端开发 算法
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
|
4天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
7天前
|
存储 JavaScript 开发者
Vue3中的组件间通信:多种方法解析
【4月更文挑战第20天】
7 1
|
10天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
103461 0
|
10天前
并发编程之Callable方法的详细解析(带小案例)
并发编程之Callable方法的详细解析(带小案例)
15 0

推荐镜像

更多