You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Chrome中通过WebBluetooth解析博世GLM激光测距仪消息

博世GLM 50 C激光测距仪WebBluetooth数据解析方案

解析逻辑

通过分析你提供的三组数据样本,测量距离被编码在消息Uint8Array的第7-10位字节(索引从0开始),并以**小端字节序(Little-Endian)**存储为32位单精度浮点数(Float32),数值单位为米。

验证示例

以你给出的样本为例:

  1. 第一组数据[..., 162, 180, 151, 62, ...] → 小端序转Float32得≈0.296 → 匹配设备显示0,296m
  2. 第二组数据[..., 181, 166, 13, 64, ...] → 小端序转Float32得≈2.213 → 匹配设备显示2,213m
  3. 第三组数据[..., 143, 194, 164, 64, ...] → 小端序转Float32得≈5.149 → 匹配设备显示5,149m

WebBluetooth解析代码实现

在特征值变化的回调中,使用DataView直接读取小端序浮点数是最简洁的方式:

// 假设你已经获取到目标特征characteristic
characteristic.addEventListener('characteristicvaluechanged', (event) => {
  // 用DataView处理二进制数据
  const dataView = new DataView(event.target.value.buffer);
  // 从字节偏移7的位置读取小端序单精度浮点数
  const distanceInMeters = dataView.getFloat32(7, true);
  // 格式化输出(匹配设备的逗号分隔小数格式)
  const formattedDistance = distanceInMeters.toFixed(3).replace('.', ',') + 'm';
  
  console.log(`当前测量距离: ${formattedDistance}`);
});

补充说明

  • 激活同步模式的指令new Uint8Array([192, 85, 2, 1, 0, 26]).buffer是正确的,无需调整。
  • 博世官方移动端库本质上也是采用相同的二进制解析逻辑,只是封装成了SDK接口。

内容的提问来源于stack exchange,提问作者Jakob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:55:09