赞
踩
【uniapp蓝牙分包发送】uniapp蓝牙分包发送,最大20字节_uni-app_爱音乐的程序猿-华为云开发者联盟
- // 连接蓝牙设备并发送数据
- function sendDataOverBLE(deviceId, data) {
- // 首先连接蓝牙设备
- uni.createBLEConnection({
- deviceId: deviceId,
- success: function(res) {
- // 连接成功后,获取服务
- uni.getBLEDeviceServices({
- deviceId: deviceId,
- success: function(res) {
- // 假设我们使用第一个服务
- var serviceId = res.services[0].uuid;
- uni.getBLEDeviceCharacteristics({
- deviceId: deviceId,
- serviceId: serviceId,
- success: function(res) {
- // 假设我们写入特性的uuid是已知的
- var characteristicId = res.characteristics[0].uuid;
- // 分包发送数据
- var chunkSize = 20; // 假设每个包的大小是20字节
- var chunks = splitArrayIntoChunks(data, chunkSize);
- chunks.forEach((chunk, index) => {
- uni.writeBLECharacteristicValue({
- deviceId: deviceId,
- serviceId: serviceId,
- characteristicId: characteristicId,
- value: chunk,
- success: function(res) {
- if (index === chunks.length - 1) {
- // 所有分包发送成功后的回调
- console.log('所有数据分包发送成功');
- }
- },
- fail: function(err) {
- console.error('分包发送失败', err);
- }
- });
- });
- },
- fail: function(err) {
- console.error('获取特性失败', err);
- }
- });
- },
- fail: function(err) {
- console.error('获取服务失败', err);
- }
- });
- },
- fail: function(err) {
- console.error('连接蓝牙设备失败', err);
- }
- });
- }
-
- // 分割数组为指定大小的多个分包
- function splitArrayIntoChunks(array, chunkSize) {
- var chunks = [];
- for (var i = 0; i < array.length; i += chunkSize) {
- chunks.push(array.slice(i, i + chunkSize));
- }
- return chunks;
- }
-
- // 使用示例
- var deviceId = 'your-device-id'; // 蓝牙设备ID
- var data = new Uint8Array([/* 你的数据 */]); // 需要发送的数据
- sendDataOverBLE(deviceId, data);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。