Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解码特征的字节值(python)_Python_Bluetooth_Bluetooth Lowenergy_Sensors_Characteristics - Fatal编程技术网

如何解码特征的字节值(python)

如何解码特征的字节值(python),python,bluetooth,bluetooth-lowenergy,sensors,characteristics,Python,Bluetooth,Bluetooth Lowenergy,Sensors,Characteristics,对于一个项目,我目前正试图通过蓝牙le从传感器Polar OH1获取一些心脏相关数据ppg。 传感器制造商使用的服务没有很好的记录。现在,在读取服务的特征值时,我得到了大量字节数据: '\r\xb1\x1aQ\xb4x\xa3C\x83\xdcv\xd3Q\x12\xbdJ\x7f\x82\xbf\x06\x91s\x07\xb7\xb4\xd5\xa59\xf1\xf8\x8e\xabeF@2\xe0\x10\xcb{\xe5\xfd\x8dC\x10f\x8ca\xe6\x98\xb2\xf

对于一个项目,我目前正试图通过蓝牙le从传感器Polar OH1获取一些心脏相关数据ppg。 传感器制造商使用的服务没有很好的记录。现在,在读取服务的特征值时,我得到了大量字节数据:

'\r\xb1\x1aQ\xb4x\xa3C\x83\xdcv\xd3Q\x12\xbdJ\x7f\x82\xbf\x06\x91s\x07\xb7\xb4\xd5\xa59\xf1\xf8\x8e\xabeF@2\xe0\x10\xcb{\xe5\xfd\x8dC\x10f\x8ca\xe6\x98\xb2\xf9I\xaa\xb7\xff\xe3\xab\x13'\x03J\xd4\xb5*/…'

不幸的是,使用utf-8、utf-16 le、be或utf-32解码此数据不起作用。 我怎样才能发现如何解码这个神秘的混乱?因为这是我第一次使用蓝牙Le,我真的被卡住了

我在Linux Ubuntu上使用Python3


致以最诚挚的问候

尝试使用cp1250编码。我认为您的字节数据不兼容,您应该先整理一下

b'\xe5\xfd\x8dC\x10f\x8ca\xe6'.decode('cp1250')

尝试使用cp1250编码。我认为你的字节数据不兼容,你应该先整理一下

b'\xe5\xfd\x8dC\x10f\x8ca\xe6'.decode('cp1250')

如果特征中有可测量数据,则一个特征中通常有多个字段。例如,官方心率测量特征可以有8个八位字节长,并且在一个特征中有标志、HRM值、能量消耗和RR间隔字段

如果它使用蓝牙标准进行心率测量,则特征UUID将为00002A37-0000-1000-8000-00805F9B34FB。官方UUID通常被缩短为16位值,因此它将为0x2A37

您可以阅读中的值。另一个有用的文档是,它指定了值在官方特征中的表示方式

如果制造商使用了自定义特性,则这些文件几乎没有帮助。自定义特性由UUID值表示,该值不在0000xxxx-0000-1000-8000-00805F9B34FB范围内

要浏览数据,使用通用的蓝牙低能扫描和浏览工具(如)通常很有帮助

在Python中,如果将二进制值拆分为一个列表,其中每个项表示一个八位字节,则二进制值通常更容易理解。例如:

>>>data=b'\r\xb1\x1aQ\xb4x\xa3C\x83\xdcv\xd3Q\x12\xbdJ\x7f\x82\xbf\x06\x91s\x07\xb7' >>>列表数据 [13, 177, 26, 81, 180, 120, 163, 67, 131, 220, 118, 211, 81, 18, 189, 74, 127, 130, 191, 6, 145, 115, 7, 183] >>>[f'{i:02x}'表示数据中的i] [0d',b1',1a',51',b4',78',a3',43',83',dc',76',d3',51',12',bd',4a',7f',82',bf',06',91',73',07',b7'] 另一件需要注意的事情是,在八位字节和整数之间转换时,int类型具有从_字节到_字节的方法。例如,如果我们知道一个值的类型为sint16,则它是有符号的,并且取两个八位字节。另一件需要注意的事情是,可编辑数据的格式通常为

>>>int.from_字节[0x82,0xbf],byteorder='little',signed=True -16510 >>>int-16510.to_bytes2,byteorder='little',signed=True b'\x82\xbf' >>>int.from_bytesb'\x82\xbf',byteorder='little',signed=True -16510
如果特征中有可测量数据,则一个特征中通常有多个字段。例如,官方心率测量特征可以有8个八位字节长,并且在一个特征中有标志、HRM值、能量消耗和RR间隔字段

如果它使用蓝牙标准进行心率测量,则特征UUID将为00002A37-0000-1000-8000-00805F9B34FB。官方UUID通常被缩短为16位值,因此它将为0x2A37

您可以阅读中的值。另一个有用的文档是,它指定了值在官方特征中的表示方式

如果制造商使用了自定义特性,则这些文件几乎没有帮助。自定义特性由UUID值表示,该值不在0000xxxx-0000-1000-8000-00805F9B34FB范围内

要浏览数据,使用通用的蓝牙低能扫描和浏览工具(如)通常很有帮助

在Python中,如果将二进制值拆分为一个列表,其中每个项表示一个八位字节,则二进制值通常更容易理解。例如:

>>>data=b'\r\xb1\x1aQ\xb4x\xa3C\x83\xdcv\xd3Q\x12\xbdJ\x7f\x82\xbf\x06\x91s\x07\xb7' >>>列表数据 [13, 177, 26, 81, 180, 120, 163, 67, 131, 220, 118, 211, 81, 18, 189, 74, 127, 130, 191, 6, 145, 115, 7, 183] >>>[f'{i:02x}'表示数据中的i] [0d',b1',1a',51',b4',78',a3',43',83',dc',76',d3',51',12',bd',4a',7f',82',bf',06',91',73',07',b7'] 另一件需要注意的事情是,在八位字节和整数之间转换时,int类型具有从_字节到_字节的方法。例如,如果我们知道一个值的类型为sint16,则它是有符号的,并且取两个八位字节。另一件需要注意的事情是,可编辑数据的格式通常为

>>>int.from_字节[0x82,0xbf],byteorder='little',signed=True -16510 >>>int -16510.to_bytes2,byteorder='little',signed=True b'\x82\xbf' >>>int.from_bytesb'\x82\xbf',byteorder='little',signed=True -16510 你看到了吗?你看到了吗?