本帖最后由 Heshen_Zhao 于 2024-12-11 14:25 编辑
BLE低耗蓝牙广播通行测试(微信小程序) 开发环境: Windows 11 Home x64, 23H2. VScode, 微信开发者工具(baselibrary 3.6.6)。 测试环境:广播设备名:’cent_prph’,iPhone 15 Pro Max , IOS18.1.1. 【注意事项】 - 微信小程序的蓝牙API不支持将手机变成advertiser.(12/11/2024) - Zip 里中的.vscode 文件夹可以忽略,我习惯用vscode编辑,这个文件夹是系统自动生成文件方便编辑和读取信息。 - 若需要测试,使用微信开发者工具非常的方便,可以使用Remote Debug模式来时时关注console里的状态来核对已知信息。 - 在测试当中发现在测试对象没有开启的状态下,第一次开启发送的数据全部显示关闭状态。(非小程序能控制因素,测试的时候需要注意12/11/2024) - 考虑到蓝牙可能进行间接定位 安卓6.0 以上版本,未给予定位权限或者定位未打开时,无法进行设备搜索。 - 如果以后使用UUID 而不是名称来过滤设备则需要注意ios只支持16/128位的UUID - 安卓8.0.9 开始支持16/32/128位UUID - 安卓8.0.9以下只支持128位的UUID, 需要开发者手动补位到128位。补位方法如下: o 128位UUID = 16位UUID * 2^96 + Bluetooth Base UUID o 128位UUID = 32位UUID * 2^96 + Bluetooth Base UUID 【程序结构】 在此文件中,只有这部分可以安全的调动并且可以保证小程序正常工作。 里面相对应的是: - pageinfo.js, 小程序的功能页面。 - pageinfo.json 小程序识别这个文件夹里面那些components是需要用的。 - pageinfo.wxml 小程序中的网页设计程序(主要调整网页上显示的字,按钮,和读取并且显示功能页面提供的数据) - pageinfo.wxss 小程序中辅助网页设计的程序(主要调整字体,颜色等辅助性功能)
【功能介绍】 在pageinfo.js的文件里拥有所有小程序的运行逻辑和功能。这里做一些简单的介绍和需注意现象来辅助以后的修改和测试。 首先是data格式,设计理念是拥有一个列表来储存所有找到的设备,一个变量来储存手机/检测器的当前蓝牙状态从而帮助scaninterval来自动刷新和error来检测错误。需要注意的是error是一个空的string这样可以当出现问题的时候把string的状态修改来报错,也省去了报错所需要的储存空间。
然后是toggleBluetooth 这个按钮是与页面设计上的“打开蓝牙”按钮连接到一起的,当系统蓝牙未开启时,蓝牙状态会保持关闭并且报错。当系统蓝牙开启时,按“打开蓝牙”会将蓝牙状态变成开启,当蓝牙状态保持开启时系统会自动每一秒钟刷新一次startscanfunction 来检测和扫描设备。 startscan 是这个小程序的主要部分,他会开启检测并且寻找一个名字为‘cent_prph’的设备若需要改变将这个if 框架删除或者改成想要寻找的设备名即可。然后这个检测会将找到的设备加入设备列表或者deviceList当中,并且把设备的status(状态), (on/off)显示出来。这个状态结果是通过一个辅助function名为计算出来的,因设备而异,可以通过改变这个算法来检测自己需要检测的设备。 中间还有一个辅助function 叫用于更新或者加一个新的设备到deviceList里。 需要特别注意的是最后一段代码: 在修改代码时需要特别注意setInverval的实时状态并且保证最后会把所有相关信息清理掉,不然有可能会出现内存泄漏等情况。
|