Записываются ли данные в характеристику 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".

Другие вопросы по тегам