2

CoreBluetooth フレームワークを使用して Bluetooth LE 経由で iDevice 間を通信するアプリがあります。私の特徴の1つとして、NSKeyedArchiverでエンコードされた日付を送信します(この質問に対する受け入れられた回答など)。

これが発生すると、次のようになります。

CoreBluetooth[WARNING] Unknown Error: 9

また、周辺機器は書き込み要求を受信することも、エラーをスローすることもありません。

中央側では、次のことを行います。

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myDate];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];

myDate は有効な NSDate です。

Bluetooth Core 4.0 のドキュメント、ボリューム 2、パート D、セクション 2 によると、エラー コード 0x09 は Connection Limit Exceeded です。ただし、これはこの状況では意味がありません (2 つの接続は 1 つしかありません)。

興味深い事実として、文字列をエンコードして送信するだけであれば、問題はありません。

NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];

ペリフェラルは書き込み要求を受け取り、それを適切にデコードし、問題なく受け入れることができます。

誰が何が起こっているのか知っていますか?

4

1 に答える 1

0

キー付きアーカイブ データとローカル テスト文字列の大きさは? 特性の書き込み可能なサイズを超えているようです。

于 2013-10-24T02:35:18.083 に答える