uniapp蓝牙连接设备并发送接收信息

项目中有这样一个需求就是通过蓝牙连接设备,并传输一些数据给设备,并接收设备回传过来的信息,经过探索,下面整理了一下我的经验分享给大家。

uniapp开发中,可以使用uni-app提供的uni.bluetoothAdapter API来实现。这些API允许你管理蓝牙适配器状态、搜索蓝牙设备、连接设备、传输数据等。

1. 开启蓝牙适配器

首先,你需要调用uni.openBluetoothAdapter来开启蓝牙模块。

javascript 复制代码
uni.openBluetoothAdapter({
    success: function (res) {
        console.log('蓝牙模块初始化成功');
    },
    fail: function (err) {
        console.error('蓝牙模块初始化失败', err);
    }
});

2. 获取已搜索到的蓝牙设备

你可以使用uni.getBluetoothDevices来获取已搜索到的蓝牙设备列表。

javascript 复制代码
uni.getBluetoothDevices({
    success: function (res) {
        console.log('已搜索到的蓝牙设备列表', res.devices);
    },
    fail: function (err) {
        console.error('获取蓝牙设备失败', err);
    }
});

3. 搜索附近的蓝牙设备

使用uni.startBluetoothDevicesDiscovery来搜索附近的蓝牙设备。

javascript 复制代码
uni.startBluetoothDevicesDiscovery({
    success: function (res) {
        console.log('开始搜索附近的蓝牙设备');
    },
    fail: function (err) {
        console.error('搜索蓝牙设备失败', err);
    }
});

4. 连接蓝牙设备

找到目标设备后,可以使用uni.createBLEConnection来连接设备。

javascript 复制代码
uni.createBLEConnection({
    deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
    success: function (res) {
        console.log('蓝牙设备连接成功');
    },
    fail: function (err) {
        console.error('蓝牙设备连接失败', err);
    }
});

5. 传输数据(读写)

连接成功后,你可以使用uni.writeBLECharacteristicValue来写入数据,使用uni.notifyBLECharacteristicValueChange来监听数据变化。

javascript 复制代码
// 写入数据到蓝牙设备
uni.writeBLECharacteristicValue({
    deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
    serviceId: '服务UUID', // 服务的UUID,例如 '0000fff0-0000-1000-8000-00805f9b34fb'
    characteristicId: '特征UUID', // 特征的UUID,例如 '0000fff3-0000-1000-8000-00805f9b34fb'
    value: new Uint8Array([1, 2, 3, 4]), // 要写入的数据,格式为Uint8Array或ArrayBuffer等二进制数据格式
    success: function (res) {
        console.log('写入数据成功');
    },
    fail: function (err) {
        console.error('写入数据失败', err);
    }
});

6. 断开连接和关闭蓝牙适配器(可选)

使用uni.closeBLEConnection来断开与蓝牙设备的连接,使用uni.closeBluetoothAdapter来关闭蓝牙模块。

javascript 复制代码
// 断开连接
uni.closeBLEConnection({
    deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
    success: function (res) {
        console.log('断开蓝牙设备连接成功');
    },
    fail: function (err) {
        console.error('断开蓝牙设备连接失败', err);
    }
});
javascript 复制代码
// 关闭蓝牙模块
uni.closeBluetoothAdapter({
    success: function (res) {
        console.log('关闭蓝牙模块成功');
    },
    fail: function (err) {
        console.error('关闭蓝牙模块失败', err);
    }
});

在开发的过程中记得将蓝牙权限打开哟

相关推荐
雨季66616 分钟前
Flutter 三端应用实战:OpenHarmony 简易“动态内边距调节器”交互模式深度解析
javascript·flutter·ui·交互·dart
会飞的战斗鸡1 小时前
JS中的链表(含leetcode例题)
javascript·leetcode·链表
方也_arkling1 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
qq_177767372 小时前
React Native鸿蒙跨平台剧集管理应用实现,包含主应用组件、剧集列表、分类筛选、搜索排序等功能模块
javascript·react native·react.js·交互·harmonyos
qq_177767372 小时前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
web打印社区2 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
烬头88212 小时前
React Native鸿蒙跨平台采用了函数式组件的形式,通过 props 接收分类数据,使用 TouchableOpacity实现了点击交互效果
javascript·react native·react.js·ecmascript·交互·harmonyos
Amumu121382 小时前
Vuex介绍
前端·javascript·vue.js
2601_949809593 小时前
flutter_for_openharmony家庭相册app实战+相册详情实现
javascript·flutter·ajax
qq_177767373 小时前
React Native鸿蒙跨平台通过Animated.Value.interpolate实现滚动距离到动画属性的映射
javascript·react native·react.js·harmonyos