Java PC端蓝牙(BLE)开发

Android、IOS等智能设备下的蓝牙通信稀疏平常,但PC端非嵌入式蓝牙开发却不常见
本文基于Java开发语言,在PC端与蓝牙BLE设备通信,可实现一对一,一对多模式下通信,并可以实现基于多蓝牙HUB下的长距离通信

软件安装

软件版本说明

PC下的蓝牙开发,主要依托BlueZ技术,由于ubuntu系统自带BlueZ,因此BlueZ相关软件无需自行安装,需安装下列软件

  • 系统版本:ubuntu-17.04-desktop-amd64
  • cmake版本:3.9.0
  • zlibe版本:1.2.11
  • libffi版本:3.0.13
  • pcre版本:8.38
  • glib版本:2.48.2

注意事项

  • 安装pcre时,请添加配置参数:./configure –prefix=/usr –enable-utf8 –enable-unicode-properties
  • 安装TinyB时,请添加配置参数:cmake -DBUILDJAVA=ON

编译安装

  • 安装cmake
1
2
3
4
5
6
wget http://www.cmake.org/files/v3.9/cmake-3.9.0.tar.gz
tar -zxvf cmake-3.9.0.tar.gz
cd cmake-2.8.10.2
./bootstrap
gmake
gmake install
  • 安装zlibe
1
2
3
4
5
6
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make
make install
  • 安装libffi
1
2
3
4
5
6
wget ftp://sourceware.org/pub/libffi/libffi-3.0.13.tar.gz
tar -xzf libffi-3.0.13.tar.gz
cd libffi-3.0.13/
./configure
make
make install
  • 安装pcre
1
2
3
4
5
6
wget https://ftp.pcre.org/pub/pcre/pcre-8.38.tar.gz
tar -zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure
make
make install
  • 安装glib
1
2
3
4
5
6
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.48.2/glib-2.48.2.tar.xz
tar -xJf glib-2.48.2.tar.xz
cd glib-2.48.2
./configur
make
make install
  • 安装TinyB
1
2
3
4
5
6
7
git clone https://github.com/intel-iot-devkit/tinyb.git
cd tinyb
mkdir build
cd build
cmake -DBUILDJAVA=ON ..
make
make install

编译TinyB成功后,需要将编译生成的文件:libjavatinyb.so、libtinyb.so、tinyb.jar引入到Java项目中

软件配置及检测

  • 确保蓝牙没有被阻止:rfkill unblock bluetooth
  • 确保blueoothd守护进程已启动,ps -eF | grep bluetoothd,如果蓝牙守护进程没有启动:systemctl start bluetooth.service
  • 确保使用-E标志运行bluetoothd,如果没有:vim /lib/systemd/system/bluetooth.service 在启动命令后添加-E参数
    重启:systemctl daemon-reload
  • 确保您的DBus策略允许用户访问BlueZ GATT界面
1
2
3
4
vim /etc/dbus-1/system.d/bluetooth.conf  在<policy context="default">下添加
<allow send_interface="org.bluez.GattService1"/>
<allow send_interface="org.bluez.GattCharacteristic1"/>
<allow send_interface="org.bluez.GattDescriptor1"/>
  • 确保你的内核支持蓝牙

(1) lsmod | grep bluetooth应该返回一个包含蓝牙的线路,如果没有,尝试modprobe bluetooth或insmod bluetooth
(2) /proc/config或者/proc/config.gz还是/boot/config应该包含CONFIG_BT=y或CONFIG_BT=m和CONFIG_BT_LE=y。如果CONFIG_BT=m启用,请确保使用modprobe bluetooth或加载您的模块insmod bluetooth
(3) rfkill list 应至少显示一行蓝牙
另外,在linux系统中,可以使用gatttool命令进行蓝牙检查

代码获取

实际上线项目:某妇幼保健院病患7*24h体温集中监控系统
Java PC BLE通信主要有如下三种方式

  1. 扫描设备->建立链接->扫描服务->扫描特征值->数据读写
  2. 定向链接设备->建立链接->定向获取服务->定向获取特征值->数据读写
  3. 定向链接设备(扫描设备)->建立链接->定向获取服务(扫描服务)->定向获取特征值(扫描特征值)->自动数据通知

详细Java代码请联系作者赵华安获取

文章目录
  1. 1. 软件安装
    1. 1.1. 软件版本说明
    2. 1.2. 注意事项
    3. 1.3. 编译安装
  2. 2. 软件配置及检测
  3. 3. 代码获取