梅科尔工作室-14天鸿蒙设备开发实战笔记-第五章 无线联网开发

鹴绛_Amon
发布于 2022-8-10 01:09
浏览
0收藏

第五章 无线联网开发

一、Wifi AP热点

1. AP热点API介绍

wifi_hotspot.h接口简介:

这个wifi_hotspot.h中包含声明AP热点相关接口函数。
梅科尔工作室-14天鸿蒙设备开发实战笔记-第五章 无线联网开发-鸿蒙开发者社区

2. AP热点创建代码解读

打开“D1_iot_wifi_ap”工程的wifi_ap.c文件,可在代码中查看实现创建Wifi热点的代码
梅科尔工作室-14天鸿蒙设备开发实战笔记-第五章 无线联网开发-鸿蒙开发者社区

//注册wifi事件的回调函数
g_wifiEventHandler.OnHotspotStaJoin = OnHotspotStaJoinHandler;
g_wifiEventHandler.OnHotspotStaLeave = OnHotspotStaLeaveHandler;
g_wifiEventHandler.OnHotspotStateChanged = OnHotspotStateChangedHandler;
error = RegisterWifiEvent(&g_wifiEventHandler);
if (error != WIFI_SUCCESS)
{
	printf("RegisterWifiEvent failed, error = %d.\r\n",error);
	return -1;
}
//设置指定的热点配置
HotspotConfig config = {0};
strcpy(config.ssid, AP_SSID);
strcpy(config.preSharedKey, AP_PSK);
config.securityType = WIFI_SEC_TYPE_PSK;
config.band = HOTSPOT_BAND_TYPE_2G;
config.channelNum = 7;
error = SetHotspotConfig(&config);
if (error != WIFI_SUCCESS)
{
	printf("SetHotspotConfig failed, error = %d.\r\n", error);
	return -1;
}
//启动wifi热点模式
error = EnableHotspot(); 
if (error != WIFI_SUCCESS)
{
	printf("EnableHotspot failed, error = %d.\r\n", error);
	return -1;
}
//检查热点模式是否使能
if (IsHotspotActive() == WIFI_HOTSPOT_NOT_ACTIVE)
{
	printf("Wifi station is not actived.\r\n");
	return -1;
}
//等待STA连接
g_apEnableSuccess = 0;
WaitAPResult();

二、Wifi STA联网

1. STA联网相关API介绍

wifi_device.h接口简介:

这个wifi_device.h中包含声明STA联网相关接口函数。
梅科尔工作室-14天鸿蒙设备开发实战笔记-第五章 无线联网开发-鸿蒙开发者社区

2. STA联网代码解读

打开“D2_iot_wifi_sta_connect”工程的wifi_sta_connect.c文件,可在代码中查看实现STA联网业务代码。
梅科尔工作室-14天鸿蒙设备开发实战笔记-第五章 无线联网开发-鸿蒙开发者社区

g_wifiEventHandler.OnWifiScanStateChanged = OnWifiScanStateChangedHandler;
g_wifiEventHandler.OnWifiConnectionChanged = OnWifiConnectionChangedHandler;
error = RegisterWifiEvent(&g_wifiEventHandler);
if (error != WIFI_SUCCESS)
{
	printf("register wifi event fail!\r\n");
}
else
{
	printf("register wifi event succeed!\r\n");
}
//使能WIFI
if (EnableWifi() != WIFI_SUCCESS)
{
	printf("EnableWifi failed, error = %d\n", error);
	return -1;
}
//判断WIFI是否激活
if (IsWifiActive() == 0)
{
	printf("Wifi station is not actived.\n");
	return -1;
}
//分配空间,保存WiFi信息
info = malloc(sizeof(WifiScanInfo) * WIFI_SCAN_HOTSPOT_LIMIT);
if (info == NULL)
{
	return -1;
}
//轮询查找WiFi列表
do{
	//重置标志位
	ssid_count = 0;
	g_staScanSuccess = 0;
	//开始扫描
	Scan();
	//等待扫描结果
	WaitSacnResult();
	//获取扫描列表
	GetScanInfoList(info, &size);
}while(g_staScanSuccess != 1);

收藏
回复
举报
回复
    相关推荐