现在我正在使用蓝牙低功耗设备,我完全阅读了办公文档,并从办公室网站下载了示例源代码 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
答案 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.),它们有助于转换,但很多程序员只是手动重写它,如上所示。