网站建设公司实力,广州建设工程造价管理站,2核4g做网站,线上推广平台有哪些增强软硬件交互
为了更好的解决师生生活中的实际问题#xff0c;开发蓝牙小程序加强了和校区硬件的交互。
比如通过蓝牙连接控制水电表#xff0c;减少实体卡片的使用。添加人脸活体检测功能#xff0c;提高本人认证效率#xff0c;减少师生等待时间。
蓝牙水电控展示 蓝…增强软硬件交互
为了更好的解决师生生活中的实际问题开发蓝牙小程序加强了和校区硬件的交互。
比如通过蓝牙连接控制水电表减少实体卡片的使用。添加人脸活体检测功能提高本人认证效率减少师生等待时间。
蓝牙水电控展示 蓝牙水电控展示 微信小程序实现蓝牙BLE 步骤: 1、wx.openBluetoothAdapter//蓝牙初始化 2、 wx.onBluetoothDeviceFound //监听寻找到新设备的事件 3、 wx.startBluetoothDevicesDiscovery //开始搜寻附近的蓝牙外围设备 4、 wx.getBluetoothDevices//获取在蓝牙模块生效期间所有已发现的蓝牙设备。包括已经和本机处于连接状态的设备。 5、wx.stopBluetoothDevicesDiscovery//停止搜寻附近的蓝牙外围设备。搜索到需要设备时或者连接时候停止搜索 6、wx.createBLEConnection //连接设备 7、 wx.getBLEDeviceServices //获取所有服务列表 8、wx.getBLEDeviceCharacteristics//获取蓝牙设备某个服务中的所有特征值 9、wx.onBLEConnectionStateChange //监听设备连接状态本人用小米2手环测试经常断 10、 wx.notifyBLECharacteristicValueChange // 启用低功耗蓝牙设备特征值变化是的notify功能 11、 wx.onBLECharacteristicValueChange//开始监听特征值的变化 12、 wx.writeBLECharacteristicValue//写入特征值 13、wx.readBLECharacteristicValue//读取特征值 基本使用流程
1、 初始化蓝牙模块
在使用蓝牙接口前必须首先调用 wx.openBluetoothAdapter 初始化蓝牙适配器模块其他接口必须在初始化后成功方可调用。
当蓝牙开关未开启或手机不支持蓝牙时会返回错误 (errCode10001)。此时小程序蓝牙模块已经初始化完成可通过 wx.onBluetoothAdapterStateChange 监听手机蓝牙状态的改变也可以调用蓝牙模块的所有API。开发者在开发中应该考虑兼容用户在使用小程序过程中打开/关闭蓝牙开关的情况并给出必要的提示提高可用性。
2、 扫描并发现蓝牙外围设备
蓝牙模块初始化成功后一般需要通过 wx.startBluetoothDevicesDiscovery 扫描外围设备。当蓝牙外围设备被扫描到时会回调 wx.onBluetoothDeviceFound 事件返回扫描到的设备。扫描设备比较耗费系统资源请在搜索到需要的设备后及时调用 wx.stopBluetoothDevicesDiscovery 停止搜索。
若之前已连接过某个设备获取到了 deviceId可跳过扫描步骤。 // 监听扫描到新设备事件
wx.onBluetoothDeviceFound((res) {res.devices.forEach((device) {// 这里可以做一些过滤console.log(Device Found, device)})// 找到要搜索的设备后及时停止扫描wx.stopBluetoothDevicesDiscovery()
})// 初始化蓝牙模块
wx.openBluetoothAdapter({mode: central,success: (res) {// 开始搜索附近的蓝牙外围设备wx.startBluetoothDevicesDiscovery({allowDuplicatesKey: false,})},fail: (res) {if (res.errCode ! 10001) returnwx.onBluetoothAdapterStateChange((res) {if (!res.available) return// 开始搜寻附近的蓝牙外围设备wx.startBluetoothDevicesDiscovery({allowDuplicatesKey: false,})})}
})
3、 连接设备
蓝牙低功耗设备间要进行通信必须首先建立连接。
wx.createBLEConnection({deviceId, // 搜索到设备的 deviceIdsuccess: () {// 连接成功获取服务wx.getBLEDeviceServices({deviceId,})}
})
4、 获取蓝牙外围设备的服务
wx.getBLEDeviceServices({deviceId, // 搜索到设备的 deviceIdsuccess: (res) {for (let i 0; i res.services.length; i) {if (res.services[i].isPrimary) {// 可根据具体业务需要选择一个主服务进行通信}}}
})
5、 读写服务的特征值
wx.getBLEDeviceCharacteristics({deviceId, // 搜索到设备的 deviceIdserviceId, // 上一步中找到的某个服务success: (res) {for (let i 0; i res.characteristics.length; i) {let item res.characteristics[i]if (item.properties.write) { // 该特征值可写// 本示例是向蓝牙设备发送一个 0x00 的 16 进制数据// 实际使用时应根据具体设备协议发送数据let buffer new ArrayBuffer(1)let dataView new DataView(buffer)dataView.setUint8(0, 0)wx.writeBLECharacteristicValue({deviceId,serviceId,characteristicId: item.uuid,value: buffer,})}if (item.properties.read) { // 该特征值可读wx.readBLECharacteristicValue({deviceId,serviceId,characteristicId: item.uuid,})}if (item.properties.notify || item.properties.indicate) {// 必须先启用 wx.notifyBLECharacteristicValueChange 才能监听到设备 onBLECharacteristicValueChange 事件wx.notifyBLECharacteristicValueChange({deviceId,serviceId,characteristicId: item.uuid,state: true,})}}}
})
// 操作之前先监听保证第一时间获取数据
wx.onBLECharacteristicValueChange((result) {// 使用完成后在合适的时机断开连接和关闭蓝牙适配器wx.closeBLEConnection({deviceId,})wx.closeBluetoothAdapter({})
})
6、 断开连接和关闭蓝牙适配器
使用完成后应该在合适的时机断开连接并关闭蓝牙适配器。