蓝牙低功耗UUID号码

时间:2017-12-22 15:09:51

标签: java android bluetooth bluetooth-lowenergy

现在我正在使用蓝牙低功耗设备,我完全阅读了办公文档,并从办公室网站下载了示例源代码 https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

所有工作都很完美,但我不知道他们是如何使用UUID编号的 'public static String HEART_RATE_MEASUREMENT =“00002a37-0000-1000-8000-00805f9b34fb”。enter image description here

1 个答案:

答案 0 :(得分:0)

使用UUID的C ++函数需要一个指向16字节结构(不是字符串)的指针。

如果UUID以字符串形式给出,则必须将其更改为结构,如下所示:

String HEART_RATE_MEASUREMENT =" 00002a37-0000-1000-8000-00805f9b34fb";

UUID Heart_Rate_UUID = { 0x00002a37, 0x0000, 0x1000, 0x00, 0x80, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb };

struct UUID是{long,short [2],char [8]} 所以请注意,由于处理器的字节顺序,字符串中的第3个组(-8000-)必须反转(0x00,0x80)。

生成的二进制代码实际上是 37 2a 00 00 00 00 00 10 00 80 00 80 5f 9b 34 fb

x86处理器完全扰乱了字节顺序。

因此,UUID通常作为Web应用程序中的文本传递,因为网络字节顺序可能与处理器相关的字节顺序不同。

Microsoft编译器有一些扩展,例如MIDL(q.v.),它们有助于转换,但很多程序员只是手动重写它,如上所示。