#swift #bluetooth #core-bluetooth #modbus #ios-bluetooth
#swift #bluetooth #ядро-bluetooth #modbus #ios-bluetooth
Вопрос:
Я общаюсь с протоколом Modbus с использованием Bluetooth и получаю задержку около 500-700 миллисекунд, тогда как я ожидаю, что это будет около 40-50 миллисекунд.
Вот шаги, которым я следую:
- Я пытаюсь обнаружить аппаратное устройство в iPhone и установить с ним соединение.
- Как только соединение было установлено, я получил сервис и список характеристик.
- Теперь я пытаюсь использовать характеристики записи и получаю ответ примерно через 500 миллисекунд
Кто-нибудь может мне помочь? Я здесь очень сильно застрял.
Вот блок кода, который я использую:
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
let df : DateFormatter = DateFormatter()
df.dateFormat = "E dd MMM yyyy HH:mm:ss.SSSS"
let dateString = df.string(from: Date())
print("...Getting Values.............nTimeStamp: (dateString)nn")
print("didUpdateValueFor ========> (characteristic), (String(describing: error))")
self.createPackage(type: .recieveResponse)
if let error = error {
print("Failed… error: (error)")
}
}
func writeCharacteristicValue(peripheral: CBPeripheral, data: Data, char: CBCharacteristic, type: CBCharacteristicWriteType) {
peripheral.writeValue(data, for: char, type: type)
}
func writeDataToBlePeripheral(characteristic: CBCharacteristic, byteArray: [UInt8], connectedPeripheral: CBPeripheral) {
let bytes : [UInt8] = byteArray
let data = Data(bytes)
print(data)
let df2 : DateFormatter = DateFormatter()
df2.dateFormat = "E dd MMM yyyy HH:mm:ss.SSSS"
let dateString2 = df2.string(from: Date())
print("...Aftert data conversion Sending.............nTimeStamp: (dateString2)nn")
BLEManager.getSharedBLEManager().writeCharacteristicValue(peripheral: connectedPeripheral, data: data, char: characteristic, type: .withResponse)
let df1 : DateFormatter = DateFormatter()
df1.dateFormat = "E dd MMM yyyy HH:mm:ss.SSSS"
let dateString1 = df1.string(from: Date())
print("...After Sending.............nTimeStamp: (dateString1)nn")
}
Комментарии:
1. Можете ли вы отредактировать свой вопрос, чтобы показать соответствующий код?
2. @Paulw11: Я обновил вопрос и добавил функцию, которую я использую для записи данных на моем устройстве Bluetooth.
3. Когда вы говорите, что для получения ответа требуется секунда, вы имеете в виду вызов делегата
didWrite
или какой-то другой ответ на периферийное устройство? Сколько байтов вы отправляете?4. @Paulw11: Мы отправляем 8 байт. Вот вызывающий метод: writeDataToBlePeripheral (характеристика: self.writeCharactrestics!, ByteArray: [1, 4, 0, 51, 0, 1, 193, 197], Подключенный периферийный: self.Подключенный периферийный!)
5. И ответы на другие мои вопросы?