项目简介
本项目是基于Python的Gattlib库,用于访问蓝牙低功耗(BLE)设备的通用属性配置文件(GATT)协议。开发者可借助此库轻松构建与BLE设备通信的应用程序,且该库支持Bluez v4和v5。
项目的主要特性和功能
- 连接管理:支持连接和断开指定的蓝牙设备。
- 服务发现:可发现蓝牙设备上的主服务,了解设备支持的服务类型。
- 特征读写:通过UUID或句柄对蓝牙设备的特征值进行读写操作。
- 通知与指示处理:注册回调函数处理设备的通知和指示,实时获取设备状态变化。
- 异常处理:具备异常处理机制,应对通信过程中的错误和异常情况。
- 广告数据获取:能够获取蓝牙设备的广告数据,了解设备类型、制造商等信息。
- Python绑定:提供Python绑定,方便Python开发者与蓝牙设备交互。
安装使用步骤
前提条件
Gattlib需要安装libbluetooth-dev
和libreadline-dev
包。在基于Debian的系统(如Ubuntu)上,使用以下命令安装:
bash
sudo apt install libbluetooth-dev libreadline-dev
构建项目
bash
cd <gattlib-src-root>
mkdir build && cd build
cmake..
make
特定版本Bluez构建
若需为特定版本的Bluez构建Gattlib,可在构建时指定版本:
bash
mkdir build && cd build
cmake -DBLUEZ_VERSION=5.50..
make
使用D-Bus API构建(Bluez v5.42之前版本)
在Bluez v5.42之前的版本中,使用CMake标志-DGATTLIB_FORCE_DBUS=TRUE
来使用D-Bus API:
bash
mkdir build && cd build
cmake -DGATTLIB_FORCE_DBUS=TRUE..
make
交叉编译
交叉编译Gattlib时,需提供以下环境变量:
- CROSS_COMPILE
:交叉编译工具链的前缀
- SYSROOT
:包含应用程序所需库和头文件的系统根目录
示例:
bash
cd <gattlib-src-root>
mkdir build && cd build
export CROSS_COMPILE=~/Toolchains/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
export SYSROOT=~/Distributions/debian-wheezy
cmake..
make
打包项目
从构建目录运行以下命令进行打包:
bash
cpack..
注意:该命令会生成DEB、RPM和ZIP包。确保系统中安装了所需的依赖项(例如,在基于Debian的Linux发行版上生成RPM包,需要安装rpm
包)。
更改安装目录
默认安装目录由CPack变量CPACK_PACKAGE_INSTALL_DIRECTORY
定义为/usr
。若要将安装目录更改为/usr/local
,可运行:
bash
cpack -DCPACK_PACKAGE_INSTALL_DIRECTORY=/usr/local..
示例代码运行
- 发现主服务和特征:
bash ./examples/discover/discover 78:A5:04:22:45:4F
- 特征读写:
bash ./examples/read_write/read_write 78:A5:04:22:45:4F read 00002a29-0000-1000-8000-00805f9b34fb ./examples/read_write/read_write 78:A5:04:22:45:4F write 00002a6b-0000-1000-8000-00805f9b34fb 0x1234
- BLE扫描和连接:
bash ./examples/ble_scan/ble_scan
- 使用GATT电池服务进行通知:
bash ./examples/notification/notification
- 无响应的GATT写入:
bash ./examples/nordic_uart/nordic_uart
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】