#swift #core-bluetooth
#swift #ядро-bluetooth
Вопрос:
Я получаю серию данных с устройства Bluetooth, данные поступают в байтах, и, поскольку я новичок, я не знаю, как сделать это читаемой строкой
public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
let value: Data = characteristic.value!
if let str = String(data: value, encoding: .utf8) {
print(str)
}
}
здесь, в консоли, у меня есть
p characteristic.value
(Data?) $R0 = 182 bytes
с String(data: value, encoding: .utf8)
я получаю что-то вроде этого:
pGrIrIpGsIqGoFoEoEoEoEoEpEpEoCoCpCqEqEqEqEqEqEpCpGpGpFpGoFoEnEnEnEnEpFpFpFpFpFpFpFqFpFpFnDm
Кто-нибудь может мне помочь, как сделать его читабельным?
Комментарии:
1. Какие данные вы получаете; что они представляют? Какой код вы используете для его получения?
2. Вы имеете какое-либо представление о том, что это такое? строка (даже если в формате JSON), изображение, видео… Вместе с кодом, запрошенным у undescore_d, было бы полезно узнать, с какого типа устройства вы его получаете (автомобильный Bluetooth, камера, air pods, ноутбук ….)
3. Это устройство для мониторинга сердечного ритма, я должен получить необработанные данные, но я не знаю, какова точная структура
4. Я полагаю, что это поток «необработанных» чисел, а не строка символов, представляющих числа. Я предполагаю, что на обновление приходится 2 байта, и поскольку для измерения частоты сердечных сокращений субъекта, по-видимому, не требуется 2 байта (не более 255 ударов в минуту) … вероятно, один из этих байтов представляет какое-то другое измерение (измеряет ли оно что-нибудь еще?) или какой-то код состояния. Но на самом деле, не зная, о какой конкретной модели устройства идет речь, на этот вопрос все равно нельзя ответить без догадок. Даже если модель была известна, у нее могло не быть документов, доступных для ее использования без официального драйвера. Если это произойдет, поищите их.
5. Какой характерный UUID вы используете?