littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Python的蓝牙低功耗设备通信库

项目简介

本项目是基于Python的Gattlib库,用于访问蓝牙低功耗(BLE)设备的通用属性配置文件(GATT)协议。开发者可借助此库轻松构建与BLE设备通信的应用程序,且该库支持Bluez v4和v5。

项目的主要特性和功能

  1. 连接管理:支持连接和断开指定的蓝牙设备。
  2. 服务发现:可发现蓝牙设备上的主服务,了解设备支持的服务类型。
  3. 特征读写:通过UUID或句柄对蓝牙设备的特征值进行读写操作。
  4. 通知与指示处理:注册回调函数处理设备的通知和指示,实时获取设备状态变化。
  5. 异常处理:具备异常处理机制,应对通信过程中的错误和异常情况。
  6. 广告数据获取:能够获取蓝牙设备的广告数据,了解设备类型、制造商等信息。
  7. Python绑定:提供Python绑定,方便Python开发者与蓝牙设备交互。

安装使用步骤

前提条件

Gattlib需要安装libbluetooth-devlibreadline-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】