littlebot
Published on 2025-04-17 / 3 Visits
0

【源码】基于C++编程语言的蓝牙低功耗GATT服务器实现

项目简介

本项目基于C++编程语言,借助Bunget库实现了一个蓝牙低功耗(BTLE)的GATT服务器。此项目可在多种设备(如C.H.I.P Board、R - PI、Nano - Pi等)上运行,能帮助开发者轻松创建GAP/GATT服务器,规避使用Bluez和Bleno时出现的问题。

项目的主要特性和功能

  1. 跨平台支持:能在x86、R - PI、Nano - Pi和CHIP等多种设备上运行。
  2. 简化开发:提供抽象类和方法用于创建GATT服务、特性(READ/WRITE/NOTIFICATIONS),无需使用Bluez。
  3. 特定功能支持:支持GATT服务特性、描述符或信标,特性具备读写、指示、通知等功能。
  4. 资源管理:Bunget库会停止蓝牙服务,避免资源占用。

安装使用步骤

依赖安装

bash sudo apt-get update sudo apt-get install bluez # (needed for hciconfig utility for now) sudo apt-get install cmake sudo apt-get install g++ sudo apt-get install rfkill sudo apt-get install libcrypto++-dev sudo apt-get install uuid-dev sudo apt-get install cmake sudo apt-get install build-essential

项目编译

bash cd bunget cmake . make

运行前准备

  1. 禁用或卸载蓝牙服务: bash sudo service bluetooth stop sudo update-rc.d -f bluetooth remove
  2. 若有桌面环境,停止任何蓝牙管理器进程,可使用以下命令查找并终止相关进程: bash ps ax | grep blu sudo kill -9 <进程ID>

运行项目

bash cd src/bin sudo ./bunget <hci设备编号> 例如,若设备编号为0,则执行: bash sudo ./bunget 0

注意事项

  • 不同的BTLE加密狗可能需要调整接收和发送数据的时间间隔,可在main函数中调整相关参数。
  • 广告间隔建议从512毫秒开始,避免设置过低导致hci套接字溢出。
  • 仅支持使用16位UUID创建服务,最多支持8个服务和8个特性,且同一运行单元中不要混合使用16字节和128字节的UUID。
  • 信标广告仅支持128位UUID。

下载地址

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