1

私はコアBluetoothで作業しています。簡単な書き込み操作を行っています。そして周辺側でその値をに取得します:

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests 

しかし、上記のメソッドを実装したため、値を書き込むのに時間がかかりすぎています。そして、私は中央側で警告を受けています:

 CoreBluetooth[WARNING] Unknown error: 241

ドキュメントを見ると、エラーコードが 0 から 17 しかないことがわかったので、これは非常に奇妙です。この問題の解決策はありますか?

4

4 に答える 4

1

あなたが呼んでいることを確認してください:

迅速:

func respondToRequest(request: CBATTRequest!, withResult result: CBATTError)

目的 C:

- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result

成功した場合は、CBATTError.Success を渡し、関数を 1 回だけ呼び出します。デリゲート コールバックからの EG:

func peripheralManager(peripheral: CBPeripheralManager!, didReceiveWriteRequests requests: AnyObject[]!)

電話:

peripheral.respondToRequest(requests[0] as CBATTRequest, withResult: CBATTError.Success)

これで問題は解決しました。

于 2014-06-27T00:55:25.157 に答える
1

そのエラー コードでまだクリアしていません。しかし、今ではその問題を解決しました。プロパティで特性を作成したCBCharacteristicPropertyWriteWithoutResponseので、上記のエラーは削除されました。周辺機器へのデータ書き込みもスムーズ。しかし、それでもそのエラーを知りたがっていました。

于 2013-07-17T06:25:42.700 に答える
1

私はマイケルに同意します。以前に同じ問題に遭遇したことがあり、最終的に解決しました。

中央デバイスが周辺デバイスにデータを書き込む場合、CBCharacteristicPropertyWriteWithoutResponseモードまたはCBCharacteristicPropertyWriteWithResponseモードのいずれかで動作する可能性があります。最初のものはペリフェラルが応答する必要はありませんが、2 番目のものは応答します。セントラル デバイスが必要なときにペリフェラルからの応答を受信しなかった場合、このエラーが発生します。中央デバイスは数秒間しか待機しないため、メソッドを呼び出す必要があります

- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result

デリゲートメソッドである限り、書き込み操作に応答する

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests 

と呼ばれます。

書き込みデータが大きい場合、ペリフェラルは複数の CBATTRequest を受信する場合があります。requests 配列の最初のリクエストにのみ応答することを忘れないでください。

于 2014-10-25T16:05:00.157 に答える