#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)