Zig WiFi Scan 示例
源码位置: samples/libraries/zig/wifi_demo 查看源码
功能说明
该示例演示如何在 Zig 中初始化底层 WiFi、等待硬件就绪、启用 STA 模式并扫描周围可见的 AP。示例会将扫描结果以表格形式打印到日志中,用于验证 Zig 对 WiFi 相关 C API 的调用、异步初始化流程以及扫描结果读取逻辑。
硬件连接
本示例使用芯片内部 WiFi 外设,无需额外接线。
建议准备:
可正常工作的
arcs_evb开发板周围存在可扫描到的 WiFi 热点环境
串口日志接收工具
示例步骤
初始化 Zig 日志系统
初始化 MAC Manager
通过
lisa_wifi_init()启动 WiFi 硬件初始化等待 Zig 回调标记 WiFi ready
启用 STA 模式
发起全频道扫描
等待扫描完成事件
打印扫描到的 AP 列表
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在 SDK 根目录执行编译:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应的工具链。
建议将示例路径替换为:
./build.sh -C -S samples/libraries/zig/wifi_demo -DBOARD=arcs_evb
烧录
编译完成后,使用 SDK tools 目录下的 cskburn 工具烧录固件:
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 0x0 build/arcs.bin -C arcs
Note
烧录参数说明:
-s /dev/ttyUSB0:串口设备路径,需要根据实际情况修改 - Linux 系统:通常是/dev/ttyUSB0或/dev/ttyACM0- 可通过ls /dev/tty*命令查看可用串口设备 - 不同开发板或 USB 转串口芯片可能使用不同的设备名-b 3000000:烧录波特率(3Mbps)0x0:烧录起始地址build/arcs.bin:编译生成的固件路径-C arcs:芯片类型
注意事项:
确保开发板已正确连接到电脑
如果无法识别串口设备,请检查 USB 连接线是否正常,或尝试其他 USB 端口
预期输出
串口中可看到类似日志:
=== Zig WiFi Scan Demo ===
MAC manager OK
WiFi init started...
WiFi hardware ready!
MAC: xx:xx:xx:xx:xx:xx
STA mode enabled
Starting WiFi scan...
Scan done!
Found 5 AP(s)
╔════╦══════════════════════════════════╦═══════╦══════╦════════╗
║ # ║ SSID ║ RSSI ║ CH ║ AUTH ║
...
=== WiFi Scan Complete: 5 AP(s) displayed ===
=== WiFi Scan PASSED ===
核心 API
API |
说明 |
|---|---|
|
初始化底层 WiFi 模块 |
|
启用 STA 模式 |
|
发起 WiFi 扫描 |
|
等待扫描完成事件 |
|
读取扫描结果 |
|
在等待硬件 ready 时轮询休眠 |
关键代码
while (!wifi_init_ready) {
arcs.sleep(100);
}
if (wifi_sta_mode_enable() != 0) {
return -1;
}
var scan_params = WifiScanParams{};
if (wifi_scan_start(&scan_params) != 0) {
return -2;
}
if (wifi_event_wait(EVENT_WIFI_SCAN_DONE, 10000) != 0) {
return -3;
}
注意事项
接口层级: 该示例使用的是底层 WiFi 接口,而不是更上层的 WiFi Manager
配置依赖: 需要开启
CONFIG_LISA_WIFI、CONFIG_MAC_MANAGER等相关配置,当前 sample 的prj.conf已包含必要选项环境差异: 运行结果与现场无线环境相关,扫描到的 AP 数量、RSSI 和认证类型会有所不同,因此当前 sample 继续保持 build-only
真机调试: 现在会在 WiFi 初始化等待超过 10 秒时明确报超时失败,便于定位板级 WiFi 未 ready 的问题
后续 CI 方向: 若未来要接入真机 CI,建议改为受控 AP 环境下的固定 SSID / DHCP 成功判定,而不是直接使用扫描结果数量
故障排查: 若 WiFi 初始化失败,可先检查板级 WiFi 配置、日志输出和相关驱动是否正常