当前位置: 首页 > 知识库问答 >
问题:

如何通过web蓝牙读取激光测距

毋琪
2023-03-14

我需要使用Web Bluetooth API在Web应用程序中读取Leica Disto D2的距离测量值。我的目标是最近的Android设备,所以Chrome/Samsung浏览器应该支持它。

共有1个答案

郑正文
2023-03-14

通过HTTPS提供超文本标记语言,除非使用localhost进行测试。必须从用户手势开始:

<button onclick="discoverDevices()">Discover Devices</button>

连接到我们的蓝牙设备,当距离变化时请求通知,在控制台日志中打印距离。

function discoverDevices() {
  console.log("discoverDevices");
  var options = {
    filters: [{ services: ['3ab10100-f831-4395-b29d-570977d5bf94'] }],
    optionalServices: ['0000180a-0000-1000-8000-00805f9b34fb', '0000180f-0000-1000-8000-00805f9b34fb', '3ab10100-f831-4395-b29d-570977d5bf94'],
    acceptAllDevices: false
  }
  const DISTO_DISTANCE = "3ab10101-f831-4395-b29d-570977d5bf94";
  const DISTO_DISTANCE_UNIT = "3ab10102-f831-4395-b29d-570977d5bf94";
  const DISTO_COMMAND = "3ab10109-f831-4395-b29d-570977d5bf94";
  const STATE_RESPONSE = "3ab1010a-f831-4395-b29d-570977d5bf94";
  const DS_MODEL_NAME = "3ab1010c-f831-4395-b29d-570977d5bf94";
  navigator.bluetooth.requestDevice(options)
    .then(device => {
      console.log('> Name:' + device.name);
      console.log('> Id:' + device.id);
      console.log(device);
      return device.gatt.connect();
    })
    .then(device => {
      device.addEventListener('gattserverdisconnected', onDisconnected);
      return device.gatt.connect();
    })
    .then(server => server.getPrimaryService('3ab10100-f831-4395-b29d-570977d5bf94'))
    .then(service => service.getCharacteristic(DISTO_DISTANCE))
    .then(characteristic => characteristic.startNotifications())
    .then(characteristic => {
      characteristic.addEventListener('characteristicvaluechanged',
                                      handleDistanceChanged);
      console.log('Notifications have been started.');
    })
    .catch(error => {
      console.log('ERROR: ' + error);
    });

  function handleDistanceChanged(event) {
    const value = event.target.value;
    console.log('Got distance: ' + value.getFloat32(0, true));
  }
  function onDisconnected(event) {
    const device = event.target;
    console.log(`Device ${device.name} is disconnected.`);
  }
}

资料来源:

  • https://web.dev/bluetooth/
 类似资料:
  • 问题内容: 我有一个使用蓝牙从其他设备接收一些数据(字节)的应用程序。一切进展顺利,但是我在接收所有字节时遇到了一个小问题。收到字节后,我将它们显示在Toast上只是为了对其进行测试。当另一台设备一起发送10个字节(例如:“ ABCDEFGHIJ”)时,程序将仅获取第一个字节“ A”并将其显示在Toast上,然后转到第二个迭代并读取其他9个字节并显示“ BCDEFGHIJ”在吐司上。这是我的代码:

  • 我制作了一个android应用程序来扫描蓝牙设备,并向我的服务器发送一个HTTP请求,这样我就可以检测它们是开着还是关着。我已经用我的带有蓝牙适配器的台式电脑测试过了,效果很好。当检测到电脑上的蓝牙功能时,它显示电脑是打开的,当我关闭电脑上的蓝牙功能时,它是关闭的。现在,我需要使用这个应用程序的设备有:雅伯投影仪、Bose SoundLink和JBL耳机,但我遇到了一些问题。 首先,投影仪似乎无法

  • 我写了一个通过蓝牙发送/接收文件的应用程序,但我想把这个应用程序设置为默认的应用程序发送和接收文件! 移动设备向我的手机发送文件时的说明;我的应用程序获取文件,并与它一起工作之后,保存在我想要的时间和地点。

  • 我正在创建一个Qt应用程序,在这里我将iOS与BLE板连接起来。 在阅读了near中的ble组件后,我像这样连接Android设备: 我在Android系统上找到了Mac地址 QBluetoothDeviceInfo 但是iOS没有从布尔那里得到苹果电脑地址,只有UUID。我试着在doc上在线搜索,但是我没有找到关于通过uuid连接ios和蓝牙服务的东西。 有一个模式转换uuid在mac地址或有一

  • 我想创建一个能够接收音频流的Android应用程序。我曾想过使用A2DP配置文件,但似乎Android不支持A2DP接收器。看起来有很多人在寻找这个问题的解决方案。但是,如果接收一个普通的位流,然后在应用程序中将数据转换成音频呢?我想通过RFCOMM(SPP蓝牙模式)接收PCM或Mp3数据流,然后使用AudioTrack播放。 首先,我如何通过RFCOMM在我的Android手机上接收比特流?是否