首页 > 解决方案 > 如何使用网络蓝牙将存在 CRC 的命令正确发送到特征?

问题描述

我收到了要发送到 BLE 设备的命令,它应该如下所示:

<code>{data}<CRC>

WEB-Bluetooth 是否支持这种类型的命令?如果是怎么寄?

我尝试过但失败的是,例如。命令应该是“R”,“数据”是可选的。所以我的步骤: 1. 将 'R' 转换为 ASCII 码 2. 对于 CRC,我从这个链接http://www.sunshine2k.de/coding/javascript/crc/crc_js.html 'Result CRC value' 最终转换为二进制收到 2 个字节。所以我把它传递给特征:

someCahracteristic.writeValue(new Uint8Array([22, 22, 22]));
# Numbers for this example are random

尝试为每个可用特征设置侦听器“characteristicvaluechanged”,但未收到响应。

有什么帮助吗?

PS另一个我的数据接收东西很好用。但是根据设备文档,有效的命令格式不同。问题仅在于这种格式的命令

<code>{data}<CRC>

标签: bluetooth-lowenergychromiumcrcweb-bluetooth

解决方案


从 Web 蓝牙的角度来看,CRC 值只是正在写入的特征值的一部分,因此应该支持这一点。

仔细检查计算 CRC 的步骤。“R”的 ASCII 值为 0x52。您的设备是否需要 CRC-8?CRC-16?如果 CRC 是多字节的,它是否期望它是 little-endian?大端?


推荐阅读