我有一个可以将电池状态作为电池服务的设备。我需要使用bluez使用Linux编程语言从我的设备中读取电池信息。即使有经典蓝牙的例子,我也无法在任何地方找到适当的例子。我能够使用示例代码here检测我的ble设备。 如何连接到我的设备(扫描后我有设备地址)? 如何向我的设备请求电池服务(我知道电池服务的服务句柄)? 期待示例代码。
答案 0 :(得分:3)
我没有示例代码,但我可以向您指出类似于您所做的源代码。要阅读电池服务,您需要执行以下步骤: -
static void cmd_lescan(int dev_id,int argc,char ** argv){...}
static void cmd_lecc(int dev_id,int argc,char ** argv) {...}
静态gboolean特性(gpointer user_data){...}
static void char_read_cb(guint8 status,const guint8 * pdu,guint16 plen,gpointer user_data){...}
或者,如果您已经知道,可以使用特征UUID读取特征数据。这可以在gatttool.c中找到: -
static void char_read_by_uuid_cb(guint8 status,const guint8 * pdu, guint16 plen,gpointer user_data)
如果您是BlueZ的新用户,我建议您从BlueZ command line tools开始。这将有助于您更深入地了解源代码中的内容。要通过命令行工具实现所需,您只需: -
- hcitool lescan
- gatttool -b 00:11:22:33:44:55 --characteristics
- gatttool -b 00:11:22:33:44:55 --char-read --uuid=0x2A19
00:11:22:33:44:55应该用设备地址替换电池服务。
我希望这会有所帮助。
答案 1 :(得分:0)
大多数示例建议您从Bluez中提取源代码以读取GATT特征。 gattlib(C库)不需要您这样做,它是基于Bluez构建的。
该库中有两个示例可用于读取电池电量。
您可以使用notification
example订阅电池电量通知。或者,您可以使用read_write
example来读取电池电量。