0

我正在尝试以 JSON 格式从特定蓝牙设备获取数据。据我了解,didUpdateValueFor CBCharacteristic 委托中的 CoreBluetooth 发送 20 字节消息,您可以使用它。问题是如果这个 20 字节的消息有西里尔符号,didUpdateValueFor CBCharacteristic 委托不会向我发送这 20 个字节,最后我没有有效的 JSON。例子:

{"Rows":[ 
     {"num":0,"id":1,"pid":0,"type":0,"name":"Папка1"},
     {"num":1,"id":2,"pid":0,"type":0,"name":"Group2"},
     {"num":2,"id":4,"pid":1,,"id":5,"pid":2,"type":1,"name":"Group2запись"}
]}

如您所见,在这个 json 中,{"num":2,"id":4,"pid":1,我使用 Cyrillic 有 20 个字节。

设备以 UTF8 格式发送数据

我将此数据转换为字符串,如下所示

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
let readValue = myCharacteristic.value ?? Data()
jsonString1 = String(data: readValue, encoding: String.Encoding.utf8) ?? ""
massageFromDevice = massageFromDevice + jsonString1

我该如何解决?

4

0 回答 0