我正在尝试从蓝牙读取特征:
service uuid: 00001800-0000-1000-8000-00805f9b34fb
characteristic uuid: 00002a00-0000-1000-8000-00805f9b34fb
我不知道如何调用chr_get_value
and的这些方法chr_read
。我知道关键是gdbus
。
我正在尝试从蓝牙读取特征:
service uuid: 00001800-0000-1000-8000-00805f9b34fb
characteristic uuid: 00002a00-0000-1000-8000-00805f9b34fb
我不知道如何调用chr_get_value
and的这些方法chr_read
。我知道关键是gdbus
。
您提到的服务 UUID 是 GAP(通用访问配置文件)服务 UUID,您尝试读取的特征 UUID (00002a00-0000-1000-8000-00805f9b34fb) 是设备名称特征,并返回远程 LE 设备的设备名称。
bluez 通过其 DBus API 公开其所有功能。如果您想在 DBus 和 C 中执行此操作,您首先需要了解 DBus 协议和 libdbus 或任何其他 DBus 绑定 API。
有关文档和 python 示例,请参阅 bluez 源目录中的 doc/gatt-api.txt 和 test/example-gatt-client。test/example-gatt-client 有很好的 python 示例,可以帮助您了解如何扫描、查找和读取设备的特征。
否则,如果您知道要连接的设备的 BD_ADDR 地址(蓝牙设备地址),您可以使用 bluez 的 gatttool 工具简单地执行此任务。
例如,如果地址是 03:0F:45:65:43:FF 并且您的设备 hci 接口地址是 hci0 下面的命令序列读取 2a00 特征
[03:0F:45:65:43:FF][LE]> connect
Attempting to connect to 03:0F:45:65:43:FF
Connection successful
[03:0F:45:65:43:FF][LE]> primary
attr handle: 0x0001, end grp handle: 0x0005 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0006, end grp handle: 0x0009 uuid: 00001801-0000-1000-8000-00805f9b34fb
# lists all other primary services
[03:0F:45:65:43:FF][LE]> characteristics
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
# lists all other characteristics as well
[03:0F:45:65:43:FF][LE]> char-read-uuid 2a00
handle: 0x0003 value: 4d 79 20 6e 61 6d 65