[英]Example code to access battery service from ble device in C using bluez
我有一個可以將電池狀態作為電池服務的ble設備。我需要使用bluez從Linux使用C編程語言從ble設備讀取電池信息。 盡管有經典藍牙的示例,但我在任何地方都看不到合適的示例。 我可以使用此處的示例代碼檢測ble設備。 如何連接到我的設備(掃描后便擁有設備地址)? 我如何向設備請求電池服務(我知道電池服務的服務句柄)? 期待示例代碼。
我沒有示例代碼,但是我可以指出與您類似的源代碼。 要閱讀電池服務,您需要執行以下步驟:-
靜態無效cmd_lescan(int dev_id,int argc,char ** argv){...}
靜態無效cmd_lecc(int dev_id,int argc,char ** argv){...}
靜態gboolean特征(gpointer user_data){...}
靜態無效char_read_cb(guint8狀態,const guint8 * pdu,guint16 plen,gpointer user_data){...}
另外,如果您已經知道特性數據,則可以使用特性UUID讀取特性數據。 可以在gatttool.c中找到:
靜態無效char_read_by_uuid_cb(guint8狀態,const guint8 * pdu,guint16 plen,gpointer user_data)
如果您不熟悉BlueZ,建議您從BlueZ命令行工具開始 。 這將幫助您更多地了解源代碼中正在發生的事情。 要通過命令行工具實現所需的功能,您只需要:-
- 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應該用電池服務的設備地址代替。
我希望這有幫助。
大多數示例建議您從Bluez中提取源代碼以讀取GATT特性。 gattlib (C庫)不需要您這樣做,它是基於Bluez構建的。
該庫有兩個示例可用於讀取電池電量。
您可以使用訂閱電池電量通知的notification
示例 。 或者,您可以使用read_write
示例讀取電池電量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.