WebBluetooth在Windows上而不是在OSX上没有写特征

时间:2018-11-07 17:09:44

标签: javascript google-chrome bluetooth web-bluetooth

我正尝试通过Web蓝牙将示例十六进制字符串发送到BLE设备。

此字符串在OSX上可以很好地发送,但是当我尝试在Windows上发送时,出现以下错误:

Uncaught (in promise) DOMException: GATT operation failed for unknown reason.

这是我用来发送字符串并将其转换的代码:

        event.target.writeValue(str2ab(":100000000C9434000C943E000C943E000C943E0082*"));

这是我的str2ab函数:

 function str2ab(str) {
  var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
  var bufView = new Uint16Array(buf);
  for (var i=0, strLen=str.length; i<strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

1 个答案:

答案 0 :(得分:1)

因此对于Windows,看起来您有20个字节的限制。

要解决此问题,我使用了写缓冲区,并递归遍历它,直到所有位都被写完为止。这是代码。

{'y': 108.729, 'x': 66.745} >>> {'y': 108.584, 'x': 67.255}
{'y': 108.584, 'x': 67.255} >>> {'y': 90.769, 'x': 139.519}
{'y': 90.769, 'x': 139.519} >>> {'y': 90.161, 'x': 142.494}
{'y': 90.161, 'x': 142.494} >>> {'y': 90.068, 'x': 143.062}