.writeValue не позволит мне написать шестнадцатеричную строку для характеристики, чтобы включить уведомления - PullRequest
0 голосов
/ 06 февраля 2019

Моя периферийная периферия требует, чтобы я записал шестнадцатеричное значение 0x0001 в свой дескриптор CCCD, чтобы включить уведомления.Когда я пытаюсь записать значение в признак со свойством .notify, я получаю следующую ошибку:

Cannot invoke 'writeValue' with an argument list of type '(Data:String, for: CBCharacteristic)'

Как я могу записать значение в свой признак, чтобы я получал уведомления?

Я пытался удалить строку .writeValue и просто сохранить строку .setNotifyValue, но когда я отправляю данные со своего устройства, я не получаю уведомления.Должен ли я читать значение, когда я получаю уведомление?Должно ли уведомление просто записать значение в мои выходные данные?

  if characteristic.properties.contains(.notify) {
    print("\(characteristic.uuid): properties contains .notify")
    NUB5.writeValue(Data: "0x0001", for: characteristic)
    NUB5.setNotifyValue(true, for: characteristic)
  }

// BL652 требует, чтобы значение 0x0001 было записано в TX CCCD, чтобы уведомить нас о данных.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Исходя из ответа Фейера, я должен был закодировать данные.Следующий код работал для меня до .writeValue:

var TxNotify:UInut=0001
let enableBytes = NSData(bytes: &TxNotify, length:8)
NUB5.writeValue(enableBytes as Data, for: characteristic, type: .withResponse)
NUB5.setNotifyValue(true, for: characteristic)
0 голосов
/ 06 февраля 2019
  1. setNotifyValue(true, for: characteristic) должно быть достаточно.Вы внедрили метод peripheral(_:didUpdateValueFor:error:)?Не могли бы вы показать код?

  2. writeValue принимает Data ввод, но вы пытаетесь передать String.Вам необходимо закодировать его, например:

let encodedString = "Lorem ipsum".data(using: .utf8)

let number = 1
let encodedNumber = withUnsafeBytes(of: number) { Data($0) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...