Преобразование данных BLE в Bytearray в Python

#python #bluetooth-lowenergy #ibeacon

#python #bluetooth-lowenergy #ibeacon

Вопрос:

Я получаю данные шлюза BLE в приведенном ниже формате.

 0201061AFF4C000215E2C56DB5DFFB48D2B060D0F5A71096E027100000D7
  

Когда я вручную конвертирую его в

 x02x01x06x1AxFFx4Cx00x02x15xE2xC5x6DxB5xDFxFBx48xD2xB0x60xD0xF5xA7x10x96xE0x27x10x00x00xD7
  

Я могу проанализировать его с помощью beacontools, используя parse_packet() .

Однако я не могу программно преобразовать строку в шестнадцатеричную.

Любая помощь приветствуется.

Код :

 from beacontools import parse_packet

tlm_packet = b'x02x01x06x1AxFFx4Cx00x02x15xE2xC5x6DxB5xDFxFBx48xD2xB0x60xD0xF5xA7x10x96xE0x27x10x00x00xD7'


tlm_frame = parse_packet(tlm_packet)
print(tlm_frame) 
  

Работает, как и ожидалось.

 data = '0201061AFF4C000215E2C56DB5DFFB48D2B060D0F5A71096E027100000D7'
tlm_frame = parse_packet(bytes(data,'utf-8'))
print(tlm_frame)
  

Не работает

Комментарии:

1. У вас есть 2 немного разных шестнадцатеричных формата, и вы хотите преобразовать их в третий?

2. Нет, я хочу, чтобы первый формат можно было анализировать с помощью функции beacontools parse_packet() .

3. Покажите нам свой связанный код!

Ответ №1:

 from beacontools import parse_packet

import binascii

data = '0201061AFF4C000215E2C56DB5DFFB48D2B060D0F5A71096E027100000D7'

t = binascii.unhexlify(data)


tlm_frame = parse_packet(t)

print(tlm_frame)