Как определить правильный формат данных для отправки команды на периферию? - PullRequest
0 голосов
/ 02 июня 2019

Я отправляю команду на устройство Bluetooth, но ответ не получен. Что я делаю не так для создания пакета данных?

Вот пример формата фрейма, описанного документом. enter image description here

Я пытался создать такие данные, как:

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {

    let bytes : [UInt16] = [0x0000, 0x0002, 01, 00]
    let data = Data(bytes: bytes, count: bytes.count)

    self.peripheral.writeValue(data, for: characteristic, type:  CBCharacteristicWriteType.withoutResponse)

}

func peripheral(_ peripheral: CBPeripheral, didWriteValueFor   characteristic: CBCharacteristic, error: Error?) {

        if (error != nil) {
            print("didWrite Value for characteristic:\(characteristic)")
        }

    }

}

Я хотя и записал значение для периферийного успеха, но после этого никакой ответ функционального периферийного устройства (_ Периферийный: CBPeripheral, didUpdateValueFor ...) не возвращался. Кто-нибудь, пожалуйста, помогите?

1 Ответ

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

Вы используете CBCharacteristicWriteType.withoutResponse в качестве типа при вызове self.peripheral.writeValue, и, согласно документации Apple, у вас не будет ответа от периферийного устройства, указывающего, была ли запись успешной.https://developer.apple.com/documentation/corebluetooth/cbcharacteristicwritetype/withoutresponse

Можно ли вместо этого попробовать CBCharacteristicWriteType.withResponse, чтобы проверить, получен ли ответ?

...