相关疑难解决方法(0)

CoreBluetooth Central - >外围设备

我对蓝牙通信很陌生.我的第一个项目打算将数据从iOS设备传输到BLEshield(小芯片).

为了测试我的中央代码,我决定设置一个iPhone作为外围设备(芯片将拥有的角色,一旦我拿到它)和一个iPad作为中心.

我可以连接设备,也可以将数据从外设发送到中心.这很容易:

- (void)startService {
    _readChar = [[CBMutableCharacteristic alloc] initWithType:[CBUUID ...] properties:CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsReadable];
    _writeChar = [[CBMutableCharacteristics alloc] initWithType:[CBUUID ...] properties:CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsWriteable];

    _service = [[CBMutableService alloc] initWithType:[CBUUID ...] primary:YES];
    [_service setCharacteristics:@[_readChar, _writeChar]];

    _peripheral = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
    [_peripheral addService:_service];

    [_peripheral startAdvertising:@{CBAdvertisementDataServiceUUIDKey: @[[CBUUID ...]], CBAdvertisementDataLocalNameKey: @"ServiceName"}];
}

- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic {
    [_peripheral updateValue:[@"HELLO WORLD" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:_readChar onSubscribedCentrals:nil];
}
Run Code Online (Sandbox Code Playgroud)

但我不能让另一个方向发挥作用.要从中央发送数据,我有以下代码:

[_activePeripheral writeValue:[@"PONG" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:_writeChar type:CBCharacteristicWriteWithoutResponse];
Run Code Online (Sandbox Code Playgroud)

我假设应该在外设上调用这些方法中的任何一个:

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray …
Run Code Online (Sandbox Code Playgroud)

ios core-bluetooth bluetooth-lowenergy cbperipheral cbcentralmanager

3
推荐指数
1
解决办法
4717
查看次数