Nordic Thingy52 btle 颜色传感器数据解码

Nordic Thingy52 btle Color Sensor data decoding

使用的语言是 Python。
我正在尝试将颜色传感器数据从 Thingy52 解码为 RGBA。 为了与 Thingy52 交互,我使用 https://github.com/IanHarvey/bluepy/tree/master/bluepy 中的 thingy52.py 示例 收到的raw数据的四个例子:

b'\xd4\x05\xad\x05\xae\x00\xf9\x00'
b'f\r\x8e\x11B\n\xa5\x03'
b'\x8a\r\xad\x11K\n\xa8\x03'
b'Y\rw\x11/\n\xa1\x03'

这个数据总是可以用 binascii.b2a_hex() 解码为 16 字节。
示例:b'5d06a90677013201'

这可能是 4 个 4 字节浮点数或 4 个 int32 / uint32,但是每次尝试使用 struct 标准库将其解包为结构都会导致奇怪的数字不适合 0 -255范围。

我的问题:如何解码这些数据?

如果我找到了正确的 Nordic documentation,那么它们就是 4 个 uint16

所以在 python 你可以这样做:

pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Jul 25 2020, 13:03:44) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct
>>> import binascii
>>> data = b'5d06a90677013201'
>>> struct.unpack(b'<HHHH', binascii.unhexlify(data))
(1629, 1705, 375, 306)
>>> r, g, b, clear = struct.unpack(b'<HHHH', binascii.unhexlify(data))
>>> r
1629
>>> print(f'{r:#06x}, {g:#06x}, {b:#06x}, {clear:#06x}')
0x065d, 0x06a9, 0x0177, 0x0132