В настоящее время у меня есть приложение OSX (центральное), отправляющее изображение 4Kb в мое приложение iOS (периферийное) через записываемую характеристику с использованием writeValue.Улучшение скорости передачи файлов с помощью CoreBluetooth
Поскольку размер изображения превышает предел, я использую 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 является выполненных, но чем дольше каждый пакет принимает, чтобы прибыть.
Я видел, как переводы выполняются намного быстрее, любые предложения о том, как их улучшить?
Благодаря
Спасибо, что очень помогли! –