uniapp 蓝牙分包发送数据

javascript 复制代码
// 连接蓝牙设备并发送数据
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);
相关推荐
前端不太难5 小时前
从 Navigation State 反推架构腐化
前端·架构·react
前端程序猿之路6 小时前
Next.js 入门指南 - 从 Vue 角度的理解
前端·vue.js·语言模型·ai编程·入门·next.js·deepseek
大布布将军6 小时前
⚡️ 深入数据之海:SQL 基础与 ORM 的应用
前端·数据库·经验分享·sql·程序人生·面试·改行学it
川贝枇杷膏cbppg6 小时前
Redis 的 RDB 持久化
前端·redis·bootstrap
D_C_tyu7 小时前
Vue3 + Element Plus | el-table 表格获取排序后的数据
javascript·vue.js·elementui
JIngJaneIL7 小时前
基于java+ vue农产投入线上管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
天外天-亮7 小时前
v-if、v-show、display: none、visibility: hidden区别
前端·javascript·html
jump_jump7 小时前
手写一个 Askama 模板压缩工具
前端·性能优化·rust
be or not to be7 小时前
HTML入门系列:从图片到表单,再到音视频的完整实践
前端·html·音视频
90后的晨仔8 小时前
在macOS上无缝整合:为Claude Code配置魔搭社区免费API完全指南
前端