gpt4 book ai didi

javascript - 我一直在通过分析广告数据来确定 BLE 设备是否可连接。这是我的代码示例和学习指南

转载 作者:行者123 更新时间:2023-12-05 06:48:37 27 4
gpt4 key购买 nike

我正在使用 Ionic React。从设备接收到的广告数据采用 ArrayBuffer 格式,我从 ArrayBuffer 获取 UInt8Array,然后使用以下函数对其进行解析:

function asHexString(i: any) {
var hex;

hex = i.toString(16);

// zero padding
if (hex.length === 1) {
hex = "0" + hex;
}

return "0x" + hex;
}

export const parseAdvertisingData = (buffer: any) => {
var length, type, data, i = 0, advertisementData = {};
var bytes = new Uint8Array(buffer);

while (length !== 0) {

length = bytes[i] & 0xFF;
i++;

// decode type constants from https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile
type = bytes[i] & 0xFF;
i++;

data = bytes.slice(i, i + length - 1).buffer; // length includes type byte, but not length byte
i += length - 2; // move to end of data
i++;

// @ts-ignore
advertisementData[asHexString(type)] = data;
}

return advertisementData;
}

这返回了 ArrayBuffer 的对象,其中一个的键为 0x19(APPEARANCE DATA),另一个为 0xff(MANUFACTURER DATA)

然后我将 ArrayBuffer->UInt8Array 都转换为十六进制字符串并得到以下结果:

收到的广告原始数据:0x031919001AFF580015E8FF000000000C0C0011D40000000000000001010000

<表类="s-表"><头>长度类型值<正文>30x190x1900260x260x580015E8FF000000000C0C0011D40000000000000001010000

现在,我想根据上面的结果判断这个设备是否可以连接??

以下是学习 Material :

旧版广告 PDU

这些适用于所有蓝牙版本 – 还可以向后兼容旧版本并用于主要广告 channel 。

  • ADV_IND:可连接可扫描非定向广告。
  • ADV_DIRECT_IND:可关联的定向广告
  • ADV_NONCONN_IND:不可连接不可扫描无定向广告
  • ADV_SCAN_IND:可扫描的非定向广告

enter image description here

enter image description here

引用:

  1. BLE 差距图:https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/
  2. BLE 广告:https://www.novelbits.io/bluetooth-low-energy-advertisements-part-1/

最佳答案

您正在检查的缓冲区中的广告数据是有效载荷的一部分,不包含来自 PDU header 的信息。 PDU 类型指示它是否可连接。我不知道你的 javascript BLE lib 中是如何暴露 BLE 功能的,但至少在 Android 上你可以使用 https://developer.android.com/reference/android/bluetooth/le/ScanResult#isConnectable()以确定它是否可连接。

关于javascript - 我一直在通过分析广告数据来确定 BLE 设备是否可连接。这是我的代码示例和学习指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66783413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com