0

Apple が提供する CoreBluetooth 用の Sample アプリを参照したところ、Peripheral から Central に Data を送信できたので、Central から Peripheral に Data を書き込む必要があります。グーグルの後、私はそれが使用できることを発見しました[_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];

以下は、周辺機器にメッセージを送信するためのセントラルの実装です。

-(void)sendMessage:(NSString *)strMessage{
    NSData *aData = [strMessage dataUsingEncoding:NSUTF8StringEncoding];
    CBMutableCharacteristic *charc =[[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] properties:CBCharacteristicPropertyWrite value:nil permissions: CBAttributePermissionsWriteable];
    [_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];        
}

このメソッドを呼び出すと、データを書き込むことができません。代わりに、以下のようにコンソールに CoreBluetooth 警告が表示されます。

CoreBluetooth[WARNING] <CBMutableCharacteristic: 0x15e8e420 UUID = 08590F7E-DB05-467E-8757-72F6FAEB13D4, Value = (null), Properties = 0x8, Permissions = 0x2, Descriptors = (null), SubscribedCentrals = (
)> is not a valid characteristic for peripheral <CBPeripheral: 0x15d91250 identifier = 37C314AF-FDB3-1F24-6937-8780B97AAB45, Name = "iPad", state = disconnected>

誰かが周辺機器のオブジェクトを取得する最良の方法と、セントラルから周辺機器へのデータの送信を開始する方法を教えてくれれば幸いです。

EDIT目的の C で UUID から特性を取得する方法に 示されている方法を試しましたか?

しかし、この場合、サービスをループしようとするたびにサービスをループすることができず、services=nil が返されます。

4

0 に答える 0