gpt4 book ai didi

ios - 在 iOS 蓝牙外设上查找 TxPower

转载 作者:行者123 更新时间:2023-11-28 12:54:22 26 4
gpt4 key购买 nike

我正在构建一个 iOS 应用程序(在 Swift 中),它既充当 Core Bluetooth 外围设备又充当中央设备。我需要确定外围设备的 txPower,但我不一定需要将它发送到其他设备的中央设备(尽管那会很棒);我很乐意在发送设备本身上确定外围设备的 txPower。

我知道我可以从制造商特定数据中确定 txPower,但我一直无法弄清楚如何读取我设备的制造商特定数据,而且我的中央处理器获取的广告数据只包括外围设备的 UUID,而不是制造商具体数据。

这是我设置外围设备的方式:

peripheral = CBPeripheralManager(delegate: self, queue: nil)
myService = CBMutableService(type: CBUUID(string: "109F17E4-EF68-43FC-957D-502BB0EFCF47"), primary: true)
peripheral.addService(myService)

这是我设置中心的方式:

centralManager.scanForPeripheralsWithServices([myCustomServiceUUID], options: nil)

然后在peripheralManagerDidUpdateState中:

    if peripheral.state == CBPeripheralManagerState.PoweredOn {

self.peripheral.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [myService.UUID] ])}

... 在 centralManagerDidUpdateState 中:

    if central.state == CBCentralManagerState.PoweredOn {

centralManager.scanForPeripheralsWithServices([myCustomServiceUUID], options: [
CBCentralManagerScanOptionAllowDuplicatesKey : NSNumber(bool: true)
])}

didDiscoverPeripheral 委托(delegate)中生成的 advertisementData NSDictionary 是:

["kCBAdvDataServiceUUIDs": (
"109F17E4-EF68-43FC-957D-502BB0EFCF47"), "kCBAdvDataIsConnectable": 1]

同样,任何允许我在外围设备的广告数据包中添加制造商特定数据,或允许我读取外围设备的制造商特定数据或发送设备上的 txPower 的解决方案都非常棒。非常感谢!

最佳答案

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

使用此方法,您可以获取外设正在广告的所有数据。

尝试查看您得到的响应。这将允许您读取数据。

NSString * abc = [RSSI stringValue] ;

NSLog(@" \n I see an advertisement with \n identifer: %@, \n state: %@ , \n name: %@, \n services: %@, \n RSSI : %@ \n ,\n description: %@ \n",
[peripheral identifier],
[peripheral state],
[peripheral name],
[peripheral services],
abc,
[advertisementData description]);

在 advertisementData description log 中,您将获得具有如下描述的值的键:

{
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = givenName;
kCBAdvDataManufacturerData = <given data>;
kCBAdvDataServiceUUIDs = (0536);
kCBAdvDataTxPowerLevel = some value ;
}

希望你得到了你正在寻找的东西。

txpower 是您将在 CBAdvertisementDataTxPowerLevelKey 下从设备上发布的内容。找这个

CB_EXTERN NSString * const CBAdvertisementDataTxPowerLevelKey;

关于ios - 在 iOS 蓝牙外设上查找 TxPower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419708/

26 4 0
文章推荐: CSS样式在使用背景图像的外部文件中不起作用
文章推荐: css -