本文来源电子发烧友社区,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2289291_1_1.html
1. 代码连接wifi
1.1 相关API
(1)WifiErrorCode EnableWifi(void)打开Wi-Fi设备的STA 模式,可以理解为开启设备的Wi-Fi功能,使其可以扫描,并且连接到某个接入点。
(2)WifiErrorCode DisableWifi(void)该函数禁用设备的STA模式。在调用该函数之后,设备不能进行扫描、联网等操作。
(3)int IsWifiActive(void)该函数用于判断Wi-Fi设备的STA模式是否已经打开。
(4)WifiErrorCode AddDeviceConfig(constWifiDeviceConfig*config,int*result)该函数用于增加设备的 Wi-Fi 配置。
(5)WifiErrorCode GetDeviceConfigs(WifiDeviceConfig*result,unsignedint*size)该函数用于获取所有有效的Wi-Fi 配置,结果保存在result 中。size 指定可获取的最大的配置数,为result 的长度。
(6)WifiErrorCode RemoveDevice(int networkId)该函数用于根据net id 删除一个Wi-Fi 配置。
(7)WifiErrorCode Disconnect(void)该函数用于断开Wi-Fi连接。
(8)WifiErrorCode GetLinkedInfo(WifiLinkedInfo*result)该函数用于获取 Wi-Fi 设备客户端当前连接的接入点的信息。
(9)WifiErrorCode RegisterWifiEvent(WifiEvent*event)该函数用于注册Wi-Fi事件的回调函数,可用于开发者在自己开发的应用中注册相应的回调函数,监听Wi-Fi状态的变化,根据不同的状态,做相应的处理。
(10)WifiErrorCode UnRegisterWifiEvent(const WifiEvent*event)该函数用于注销Wi-Fi事件。
(11)WifiErrorCode GetDeviceMacAddress(unsigned char*result)该函数用于获取设置的 MAC 地址。
1.2 具体代码
复制代码
1.3 实物演示
用串口助手连上去,发现到connect那一步就返回错误了,我在代码里加了尝试连接输出信息,依然还是连不上,需要进一步排查问题原因,如果有大佬能知道下就更好了。

2. AT命令连接wifi
AT命令也可以连接wifi,跟api调用顺序是一样的。
WPA2_PSK。
AT+PING这一步后面的是我的PC机器IP地址,可以测试能否能ping通。
复制代码
3. 总结
这次实验有个遗憾就是用代码没能成功连接我的wifi,需要进一步排查问题原因,如果有大佬能指点迷津不吝赐教就好了。
用代码操作灵活性更好,因为可以用RegisterWifiEvent进行设置自定义事件。
1. 代码连接wifi
1.1 相关API
(1)WifiErrorCode EnableWifi(void)打开Wi-Fi设备的STA 模式,可以理解为开启设备的Wi-Fi功能,使其可以扫描,并且连接到某个接入点。
(2)WifiErrorCode DisableWifi(void)该函数禁用设备的STA模式。在调用该函数之后,设备不能进行扫描、联网等操作。
(3)int IsWifiActive(void)该函数用于判断Wi-Fi设备的STA模式是否已经打开。
(4)WifiErrorCode AddDeviceConfig(constWifiDeviceConfig*config,int*result)该函数用于增加设备的 Wi-Fi 配置。
(5)WifiErrorCode GetDeviceConfigs(WifiDeviceConfig*result,unsignedint*size)该函数用于获取所有有效的Wi-Fi 配置,结果保存在result 中。size 指定可获取的最大的配置数,为result 的长度。
(6)WifiErrorCode RemoveDevice(int networkId)该函数用于根据net id 删除一个Wi-Fi 配置。
(7)WifiErrorCode Disconnect(void)该函数用于断开Wi-Fi连接。
(8)WifiErrorCode GetLinkedInfo(WifiLinkedInfo*result)该函数用于获取 Wi-Fi 设备客户端当前连接的接入点的信息。
(9)WifiErrorCode RegisterWifiEvent(WifiEvent*event)该函数用于注册Wi-Fi事件的回调函数,可用于开发者在自己开发的应用中注册相应的回调函数,监听Wi-Fi状态的变化,根据不同的状态,做相应的处理。
(10)WifiErrorCode UnRegisterWifiEvent(const WifiEvent*event)该函数用于注销Wi-Fi事件。
(11)WifiErrorCode GetDeviceMacAddress(unsigned char*result)该函数用于获取设置的 MAC 地址。
1.2 具体代码
- int ConnectToHotspot(void)
- {
- WifiDeviceConfig config = {0};
- // 准备AP的配置参数
- strcpy_s(config.ssid, SSID_LEN, PARAM_HOTSPOT_SSID);
- strcpy_s(config.preSharedKey, PSK_LEN, PARAM_HOTSPOT_PSK);
- config.securityType = PARAM_HOTSPOT_TYPE;
- osDelay(10); /* 延时10ms */
- WifiErrorCode errCode;
- int netId = -1;
- errCode = RegisterWifiEvent(&g_defaultWifiEventListener);
- printf("RegisterWifiEvent: %drn", errCode);
- errCode = EnableWifi();
- printf("EnableWifi: %drn", errCode);
- errCode = AddDeviceConfig(&config, &netId);
- printf("AddDeviceConfig: %drn", errCode);
- g_connected = 0;
- errCode = ConnectTo(netId);
- printf("ConnectTo(%d): %drn", netId, errCode);
- while (!g_connected) { // wait until connect to AP
- osDelay(10); /* 持续10ms去连接AP */
- printf("continue connecting");
- }
- printf("g_connected: %drn", g_connected);
- g_iface = netifapi_netif_find("wlan0");
- if (g_iface) {
- char* hostname = "hispark";
- err_t ret = netifapi_set_hostname(g_iface, hostname, strlen(hostname));
- printf("netifapi_set_hostname: %drn", ret);
- ret = netifapi_dhcp_start(g_iface);
- printf("netifapi_dhcp_start: %drn", ret);
- osDelay(100); // wait DHCP server give me IP 100
- #if 1
- ret = netifapi_netif_common(g_iface, dhcp_clients_info_show, NULL);
- printf("netifapi_netif_common: %drn", ret);
- #else
- #endif
- }
- return netId;
- }
用串口助手连上去,发现到connect那一步就返回错误了,我在代码里加了尝试连接输出信息,依然还是连不上,需要进一步排查问题原因,如果有大佬能知道下就更好了。

2. AT命令连接wifi
AT命令也可以连接wifi,跟api调用顺序是一样的。
WPA2_PSK。
AT+PING这一步后面的是我的PC机器IP地址,可以测试能否能ping通。
这次实验有个遗憾就是用代码没能成功连接我的wifi,需要进一步排查问题原因,如果有大佬能指点迷津不吝赐教就好了。
用代码操作灵活性更好,因为可以用RegisterWifiEvent进行设置自定义事件。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
wi-fi
+关注
关注
15文章
2379浏览量
128890 -
HarmonyOS
+关注
关注
80文章
2146浏览量
35567 -
HiSpark
+关注
关注
1文章
156浏览量
7684
发布评论请先 登录
相关推荐
热点推荐
浅谈Wi-Fi 6E与Wi-Fi 7的关键器件——BAW滤波器新技术
作者: Qorvo 亚太区无线连接事业部高级行销经理林健富 2020年1月,Wi-Fi联盟正式宣布开放6GHz频段(5925MHz-7125MHz),并将其命名为Wi-Fi 6E。2020年4月
发表于 09-19 18:29
•1319次阅读
LitePoint Wi-Fi测试软件减轻客户设计负担
自Wi-Fi 7于一年多前获得Wi-Fi联盟认证以来,作为最新一代通信技术,Wi-Fi正逐步成为用户实现无所不在无线连接的新选择。随着每一代Wi-F
有没有什么修复方法可以确保 AP 模式下的 Wi-Fi 和 BLE 连接同时正常工作?
我正在使用 CYBSYSKIT DEV 01 套件。我尝试在 AP 模式下打开 Wi-Fi 并宣传 BLE。我可以宣传 SoftAP 和 BLE。但是,我无法从中央设备连接到 BLE。它可以立即
发表于 07-17 06:13
BLE代码示例中Wi-Fi连接重试失败的原因?
您好,我正在使用 BLE 代码示例进行 Wi-Fi 接入。我从 modus 工具箱下载了代码示例。
代码示例包含所有最新的库。
当在提供 SSID 和密码后从手机发送
发表于 07-08 07:42
Wi-Fi 8:开启极高可靠性 (UHR) 连接的新纪元——1
英国作家狄更斯在《双城记》的开头写道:“这是最好的时代,也是最坏的时代。”
这句话若套用在现今Wi-Fi 的市场现状,何尝不是惊人的相似?
怎么说呢?Wi-Fi 从被发明至今已经经过了20多年的迭代
发表于 06-13 11:09
连接到 WPA3_WPA2_PSK 或 WPA3_SAE Wi-Fi 网络时系统挂起,为什么?
的 Wi-Fi 网络时,我的系统挂起了。 它与所有其他安全类型连接良好。 我正在使用最新的 WHD 库。 谁能解释为什么会发生此问题以及我该如何解决它?
您可以参考 WiFi Onboarding 示例
发表于 06-05 07:23
Wi-Fi HaLow如何突破传统Wi-Fi性能瓶颈?
视频推荐在万物互联的时代,传统Wi-Fi在覆盖范围、功耗、连接数上渐显不足。而Wi-FiHaLow的诞生,正在用黑科技打破传统Wi-Fi的性能瓶颈!今天,我们一起来探究
基于 Wi-Fi 的定位服务
以下捕获使用 location_wifi_get 函数请求 Wi-Fi 定位服务。该事件的总功耗为 125.85mC,日志显示精确度为 30.0m。
Got location:
method
发表于 04-17 15:16
Wi-Fi 定位服务流程
变化。
Cellular: Location 示例中最初的 location_wifi_get() 函数可用于请求 Wi-Fi 定位服务。启用附加日志配置有助于了解请求过程。
Add
发表于 04-17 15:09
nRF Cloud Wi-Fi 定位服务
、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通过利用 nRF Cloud 的优化定位算法,基于 Nordic SoC 和 模组的产品可在定位用例
发表于 04-17 15:07
Wi-Fi 定位服务
Wi-Fi 是一种著名的无线网络技术,用于设备的局域网和互联网接入。Wi-Fi 通过 Wi-Fi 网络为家庭、办公室和学校等环境提供便捷的无线互联网接入服务。
Wi-Fi 定位是一种
发表于 04-17 15:01
华为海思正式进入Wi-Fi FEM赛道?
大家都知道了,2018年11 月离开锐迪科(RDA),前往福建晋江创立三伍微,专注于Wi-Fi射频前端芯片,从路由器Wi-Fi FEM,到手机Wi-Fi FEM,再到IoT FEM全覆
发表于 12-11 17:42
从Wi-Fi 4到Wi-Fi 7:网速飙升40倍的无线革命
1 Wi-Fi技术的快速发展 每一代新的Wi-Fi协议发布,都会带来更高的无线速率。 从Wi-Fi 4到Wi-Fi 7:无线网络技术显著提升,实现了网速的巨大飞跃。

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】用代码和AT命令连接Wifi
评论