现在我在蓝牙低功耗设备上工作,我完全阅读了办公文档,我从办公室网站https://developer.android.com/guide/topics/connectivity/bluetooth-le.html下载了示例源代码
一切都工作得很好,但我不知道他们是如何采取UUID号ex'公共静态字符串HEART_RATE_MEASUREMENT =“00002a37-0000-1000-8000-00805f9b34fb”.enter image description here
使用UUID的C ++函数需要一个指向16字节结构(不是字符串)的指针。
如果UUID以字符串形式给出,则必须将其更改为结构,如下所示:
字符串HEART_RATE_MEASUREMENT =“00002a37-0000-1000-8000-00805f9b34fb”;
UUID Heart_Rate_UUID = { 0x00002a37, 0x0000, 0x1000, 0x00, 0x80, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb };
结构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应用程序中的文本传递,因为网络字节顺序可能与处理器相关的字节顺序不同。
微软编译器有一些扩展,如MIDL(q.v.),它们有助于转换,但很多程序员只是像我上面所说的那样手工重写它。