IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 资产监测设备中OPL1200芯片 wifiscan功能的实现 -> 正文阅读

[嵌入式]资产监测设备中OPL1200芯片 wifiscan功能的实现

笔者最近在研究资产监测设备过程中使用到OPL1200芯片做开发,其中重点使用的功能之一是wifiscan,获取多组mac,并且按照信号强度排序。
在这里插入图片描述

但笔者团队有新入职的员工对资产监测设备和该功能的实现还较为陌生,借此机会,笔者将相关内容总结如下,以便后期提升团队整体的效率。
在这里插入图片描述

资产监测设备简介:
资产监测设备是帮助用户实时追踪运输中的资产,避免资产在运输中受损或丢失。资产监测设备的主要工作原理是通过定位技术和传感技术,将设备所处的位置与状态信息进行采集,再通过通信模块和网络将信息传递至云端后台。资产监测设备的主要应用场景包括对易碎物品、贵重物品、长途运输物品进行监测,避免在运输途中出现异常情况,导致资产受损。
在这里插入图片描述

资产监测设备能够正常使用与信号的强弱密切相关,如何使用OPL1200芯片的wifiscan功能,获取多组mac ? 笔者通过以下代码实现。
在这里插入图片描述

主要任务函数如下:
#define RSSI_MIN (-120)
static SemaphoreHandle_t SH_wifiscan;
/*
Function:
App_WifiScan
Description:
scan获取mac并按照信号强弱排序
Param:
char *wifiscan
Return:
true:成功
false:失败
*/
bool App_WifiScan(char *wifiscan_str)
{
uint16_t ap_num =0;
wifi_scan_list_t p_scan_list;
memset(&p_scan_list,0,sizeof(wifi_scan_list_t));
memset(wifiscan_str,0,strlen(wifiscan_str));
wifi_start();
if(pdTRUE != xSemaphoreTake(SH_wifiscan,3000))
{
strcpy(wifiscan_str,"{“mac”;,“rsi”:}");
return false;
}
wifi_stop();
wifi_scan_get_ap_num(&ap_num);
// printf(“ap_num =%d\r\n”,ap_num);
if(ap_num == 0)
{
strcpy(wifiscan_str,"{“mac”;,“rsi”:}");
return false;
}
wifi_scan_get_ap_list(&p_scan_list);
int num = (ap_num>6)?6:ap_num;
int8_t rssi = RSSI_MIN;
int8_t p;
char str[50];
#if 0
for(int i = 0;i < ap_num;i++)
{
printf(“mac = %.2x:%.2x:%.2x:%.2x:%.2x:%.2x ,”,
p_scan_list.ap_record[i].bssid[0],
p_scan_list.ap_record[i].bssid[1],
p_scan_list.ap_record[i].bssid[2],
p_scan_list.ap_record[i].bssid[3],
p_scan_list.ap_record[i].bssid[4],
p_scan_list.ap_record[i].bssid[5]);

printf("rssi = %d\r\n",p_scan_list.ap_record[i].rssi);  

}

#endif
for(int i = 0;i < num;i++)
{
rssi = RSSI_MIN;
for(int j=0;j<ap_num;j++)
{
if(p_scan_list.ap_record[j].rssi > rssi)
{
rssi = p_scan_list.ap_record[j].rssi;
p = j;
}
}
sprintf_mac_rssi(p_scan_list.ap_record[p].bssid,p_scan_list.ap_record[p].rssi,str);
strcat(wifiscan_str,str);
if(i!=num-1)
strcat(wifiscan_str,",");
p_scan_list.ap_record[p].rssi = RSSI_MIN;

}
return true;
}
//按照JSON格式生产mac扫描结果
void sprintf_mac_rssi(uint8_t *mac,int rssi,char *str)
{
sprintf(str,"{“mac”:"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",“rssi”:%d}",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],rssi);
}
//wifiscan
int wifi_do_scan(wifi_scan_type_t mode)
{
wifi_scan_config_t scan_config;
memset(&scan_config, 0, sizeof(scan_config));
scan_config.show_hidden = 1;
scan_config.scan_type = mode;
wifi_scan_start(&scan_config, NULL);
return 0;
}
//wifiscan event callback
int wifi_event_handler_cb(wifi_event_id_t event_id, void data, uint16_t length)
{
switch(event_id)
{
case WIFI_EVENT_STA_START:
printf("\r\nWi-Fi Start \r\n");
wifi_do_scan(WIFI_SCAN_TYPE_MIX);
break;
case WIFI_EVENT_STA_STOP:
printf("\r\nWi-Fi Stop \r\n");
break;
case WIFI_EVENT_SCAN_COMPLETE:
printf("\r\nWi-Fi Scan Done \r\n");
xSemaphoreGive(SH_wifiscan);
break;
default:
printf("\r\n Unknown Event %d \r\n", event_id);
break;
}
return 0;
}
//wifi init
void WifiAppInit(void)
{
SH_wifiscan = xSemaphoreCreateBinary();
/ Event Loop Initialization /
wifi_event_loop_init((wifi_event_cb_t)wifi_event_handler_cb);
/ Initialize wifi stack and register wifi init complete event handler */
wifi_init(NULL, NULL);
}
资产监测设备的运用范围随着相关技术的不断发展,未来将会被广泛应用于更多行业。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:27:52  更:2021-09-29 10:28:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:36:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码