現在、OSX アプリ (中央) から、writeValue を使用して書き込み可能な特性を介して 4Kb のイメージを iOS アプリ (周辺) に送信しています。
画像サイズが制限を超えているため、次の関数で writeValue を複数回使用しています。
func sendData() {
while (self.sendDataIndex < self.dataToSend.length) {
var amountToSend = self.dataToSend.length - self.sendDataIndex!
if (amountToSend > NOTIFY_MTU) {
amountToSend = NOTIFY_MTU
}
// Copy out the data we want
var chunk = self.dataToSend.subdataWithRange(NSMakeRange(self.sendDataIndex!, amountToSend))
// Send it
self.discoveredPeripheral?.writeValue(chunk, forCharacteristic: self.setupCharacteristic, type: CBCharacteristicWriteType.WithoutResponse)
// It did send, so update our index
self.sendDataIndex = self.sendDataIndex!+amountToSend;
}
self.discoveredPeripheral?.writeValue("EOM".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true), forCharacteristic: self.setupCharacteristic, type: CBCharacteristicWriteType.WithResponse)
}
私の問題は、必要以上に時間がかかり、約 30 秒かかることです。
奇妙なことに、画像を送信するときに CBCharacteristicWriteType.WithoutResponse を使用しているにもかかわらず、応答が返ってきます。
これは、ペリフェラル側で私の特徴的なセットアップを行う方法です。
var cbProperties = CBCharacteristicProperties.Read|CBCharacteristicProperties.Write|CBCharacteristicProperties.Notify
var cbPermissions = CBAttributePermissions.Readable|CBAttributePermissions.Writeable
var transferCharacteristic = CBMutableCharacteristic(type: CBUUID.UUIDWithString(SETUP_CHARACTERISTIC_UUID), properties: cbProperties, value: nil, permissions: cbPermissions)
NOTIFY_MTU に 20 から 900 までのさまざまな値を試してみましたが、値が大きいほど、writeValue の実行回数は少なくなりますが、各パッケージの到着に時間がかかります。
転送がはるかに高速に実行されるのを見てきましたが、それを改善する方法について何か提案はありますか?
ありがとう