我是第一次使用CoreBluetooth,并试图弄清楚如何将设备列表过滤到只有RFID scanner .我了解到,各种类型的设备有pre-defined Service UUIDs种,但我找不到任何一种明确提到、甚至似乎与RFID scanner 相匹配的服务.
然而,在次要设备类别表中,手持式RFID scanner 的位5-2应为1000
.不过,我对它的go 向感到困惑.设备类别部分描述了在定义各种类型的设备时使用23-0位的内容,因此我知道这5-2位将进入整个23-0位集合...但我不确定这如何与服务UUID重叠/交互,或者它们是否完全交互.
例如,我发现的常见示例是Heart Rate service
被定义为缩短的UUID 0x180D
,但这将是32位,而不是像上面的Device Class那样的24位.
是否有适用于RFID scanner 的蓝牙服务UUID?如何筛选发现的设备列表,以便只能显示RFID scanner ?
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)
}
}