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

【源码】基于C语言的BLE设备GATT协议访问库

项目简介

本项目基于C语言开发,打造了用于访问BLE(Bluetooth Low Energy)设备的通用属性配置文件(GATT)协议的库——libgatt。其源于Gattlib原始代码,解决了原代码存在的诸多问题和漏洞,增添了断开连接处理程序、配对/取消配对信息、RSSI信息、移除设备、获取配对/连接设备列表等缺失功能。该库支持Bluez v4和v5版本,能助力开发者轻松构建与BLE设备通信的应用程序。

项目的主要特性和功能

  1. 支持多版本Bluez:适配Bluez v4和v5版本,在Bluez v5.42前后采用不同访问方式,还能通过CMake标志强制使用D - Bus API。
  2. 丰富的蓝牙功能:具备断开连接处理、配对/取消配对信息获取、RSSI信息获取、设备移除、配对/连接设备列表获取等功能。
  3. 多种编译与打包方式:支持常规编译、交叉编译,可打包生成DEB、RPM和ZIP等不同格式的安装包。
  4. 示例功能全面:包含多个示例程序,能展示蓝牙设备扫描、服务发现、特征读取和写入、通知处理等功能,还提供基于Gattlib库的命令行工具用于与蓝牙设备交互。

安装使用步骤

前提条件

用户已下载本项目的源码文件,且系统需安装libbluetooth-devlibreadline-dev包,在Debian系系统(如Ubuntu)可使用以下命令安装: bash sudo apt - install libbluetooth-dev libreadline-dev

编译安装

  1. 常规编译 bash cd <libgatt - src - root> mkdir build && cd build cmake.. make
  2. 强制使用D - Bus API编译(Bluez v5.42之前版本) bash mkdir build && cd build cmake -DGATTLIB_FORCE_DBUS=TRUE.. make
  3. 交叉编译 需提供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
  4. 打包 从构建目录执行以下命令进行打包: bash cpack.. 若要更改安装目录,可使用如下命令: bash cpack -DCPACK_PACKAGE_INSTALL_DIRECTORY=/usr/local..

运行示例程序

  1. 确保系统已安装蓝牙库/框架(如BlueZ、Gattlib等)。
  2. 根据示例程序的需求,编译并运行每个示例程序。
  3. 运行示例程序时,确保蓝牙设备已开启并处于可连接状态。
  4. 根据程序提示,输入相应的命令行参数(如设备地址、UUID等)。
  5. 程序将执行相应的蓝牙操作,并打印出操作结果。

注意事项

  1. 示例程序中的命令行参数可能需要根据实际情况进行调整。
  2. 运行示例程序前,请确保蓝牙设备已正确配置,且系统具有访问蓝牙设备的权限。
  3. 某些示例程序可能需要管理员权限才能执行。
  4. 若遇到权限或配置问题,请参考相关蓝牙库/框架的文档进行配置。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】