RFID 扫描仪的蓝牙服务 UUID?

问题描述 投票:0回答:1

我第一次使用 CoreBluetooth,并试图弄清楚如何将设备列表过滤为仅 RFID 扫描仪。我了解到,各种类型的设备都有预定义的服务 UUID,但我找不到任何明确提及或什至似乎与 RFID 扫描仪匹配的服务。

但是,在次要设备类别表中,手持式 RFID 扫描仪的第 5-2 位应为

1000
。我很困惑它会去哪里。设备类别部分描述了在定义各种类型的设备时 23-0 位的用途,因此我知道这 5-2 位进入整个 23-0 位集合...但我不确定它是如何重叠的/与服务 UUID 交互或者它们是否交互。

例如,我发现的常见示例是

Heart Rate service
是用缩短的 UUID
0x180D
定义的,但这将是 32 位,而不是像上面的设备类那样 24 位。

是否有适用于 RFID 扫描仪的蓝牙服务 UUID?如何过滤已发现设备的列表,以便只能显示 RFID 扫描仪?

func startBluetoothScan() {
    print("starting bt scan...")
    self.centralManager.scanForPeripherals(withServices: nil,
        options: [CBCentralManagerScanOptionAllowDuplicatesKey: false]
    )
    print("started bt scan")
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi: NSNumber) {
    if self.discoveredPeripherals[peripheral.identifier] == nil {
        print("did discover bt peripheral (strength: \(rssi)): \(peripheral.name ?? "-") | \(advertisementData[CBAdvertisementDataLocalNameKey] ?? "-")")
        self.discoveredPeripherals[peripheral.identifier] = CBPeripheralInfo(peripheral: peripheral, data: advertisementData, rssi: rssi)
    }
}
ios swift core-bluetooth rfid
1个回答
1
投票

蓝牙 SIG 定义了某些服务 - 您可以举一个这样的例子;心率服务。这些服务包含在分配的号码文档中。

这些分配的服务使用 16 位值,该值替换为

0000xxxx-0000-1000-8000-00805F9B34FB
的基本 UUID - 心率服务的实际服务代码是
0000180d-0000-1000-8000-00805F9B34FB

核心蓝牙可识别这些 16 位服务标识符并为您完成变电站。

分配的 GATT 服务 ID 在第 3.4.1 节中列出。

您提到的

1 0 0 0
位位于外围设备类部分,而不是GATT服务部分。

似乎没有针对 RFID 扫描仪的明确服务。我怀疑这样的设备很可能使用 HID 蓝牙配置文件并显示为键盘,在这种情况下,iOS 应用程序将无法通过核心蓝牙看到它。

制造商也可以选择通过自己的 GATT 服务公开他们的设备;您需要参阅特定设备的文档。

© www.soinside.com 2019 - 2024. All rights reserved.