Просмотр исходного кода

add: demo/nimble/scan 为BLE扫描添加专门的demo

Wendal Chen 2 лет назад
Родитель
Сommit
46cf948981
1 измененных файлов с 67 добавлено и 0 удалено
  1. 67 0
      demo/nimble/scan/main.lua

+ 67 - 0
demo/nimble/scan/main.lua

@@ -0,0 +1,67 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "bledemo"
+VERSION = "1.0.0"
+
+--[[
+BLE 扫描
+状态: 
+1. 扫描, 可用
+2. 接收扫描结果, 可用
+
+支持的模块:
+1. Air101/Air103, 开发板的BLE天线未引出, 需要靠近使用, 且功耗高
+2. ESP32系列, 包括ESP32C3/ESP32S3
+]]
+
+log.info("main", PROJECT, VERSION)
+
+-- 一定要添加sys.lua !!!!
+sys = require("sys")
+
+--添加硬狗防止程序卡死
+if wdt then
+    wdt.init(9000)--初始化watchdog设置为9s
+    sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
+end
+
+-- 接收扫描结果
+sys.subscribe("BLE_SCAN_RESULT", function(addr, name, uuids, mfg_data)
+    -- addr 蓝牙设备的地址, 7字节
+    --      首字节是地址类型, 0 代表 随机地址, 1 代表真实地址
+    --      后6字节是蓝牙地址
+    -- name 设备名称, 不一定有
+    -- uuids 服务id
+    -- mfg_data 工厂默认信息, 主要是iBeacon或者自由广播的数据, 2023-03-19添加
+    log.info("blescan", (addr:toHex()), name, json.encode(uuids), mfg_data and mfg_data:toHex() or "")
+end)
+
+sys.taskInit(function()
+    sys.wait(2000)
+
+    -- BLE模式, 默认是SERVER/Peripheral,即外设模式, 等待被连接的设
+    nimble.mode(nimble.CLIENT) -- 默认就是它, 不用调用
+
+    -- 可以自定义名称
+    -- nimble.init("LuatOS-Wendal") -- 蓝牙名称可修改,也有默认值LOS-$mac地址
+    nimble.init() -- 蓝牙名称可修改,也有默认值LOS-$mac地址
+
+    sys.wait(500)
+    -- 打印MAC地址
+    local mac = nimble.mac()
+    log.info("ble", "mac", mac and mac:toHex() or "Unknwn")
+    sys.wait(1000)
+
+    -- 发送数据
+    while 1 do
+        log.info("ble", "start SCAN ...")
+        nimble.scan()
+        -- TODO 扫描到指定设备后, 应跳出循环
+        sys.wait(30000)
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!