Записываются ли данные в характеристику BLE после записи
У меня есть работающее приложение BLE, которое считывает данные со сканера и отправляет конфигурацию на сканер до начала чтения. Я использую следующий код для отправки строки на сканер.
let configItem = "BD1"
let data = configItem?.data(using: String.Encoding.ascii)
peripheral.writeValue(data!, for: characteristic, type: .withResponse)
Я печатаю имя и значение характеристики при обратном звонке
func peripheral(_:didWriteValueFor:CBCharacteristic:Error?)
{
let value = String(data: characteristic.value!, encoding: .ascii)!
print("Wrote characteristic value: " + value + "; for characterisitc: " + characteristic.uuid.description)
}
Напечатанное значение не является данными конфигурации, которые я написал, но некоторые старые данные считывания сканера. Удивительно, но те же самые старые прочитанные данные есть даже после закрытия приложения.
Итак, является ли характеристика, отправленная в обратном вызове, действительной и содержит ли она записанные данные?
1 ответ
Оказывается, это особенность устройства. Сканер не возвращает ответ на характеристическую запись, но я все равно получаю обратный вызов, поэтому данные просто устарели. И тестирование показывает, что строки конфигурации никогда не попадали в сканер. Решением для этого случая является отправка данных ".withoutResponse".