如何使用 go-ble 从 android 连接到 linux
How to use go-ble to connect from android to linux
我正在尝试在两个设备之间实现 BLE 连接:
- 一个 Linux 应用程序,作为服务器,必须宣传服务和特征
- Android 智能手机,作为客户端,必须连接到服务器并读取特征
问题来自我的 Linux 应用程序。当我使用我的 android 应用程序和 bluetoothctl 将我的智能手机连接到我的笔记本电脑时,它就像一个魅力。但是,当我对我的 Linux 应用程序而不是 bluetoothctl 执行相同操作时,它不起作用(它确实起作用,但很少见)。
由于我的Linux应用是用Go写的,所以我使用go-ble as the bluetooth package. I have the same issue with their minimal code sample,这就是我没有在这里写更多代码的原因,但我想不通为什么。
我想我只是不知道如何正确使用他们的库,但是 the documentation 不是很明确,所以如果有人能提供帮助...
编辑
在我的智能手机上,当使用我的应用程序时,我在扫描时看到笔记本电脑,所以 HCI 设备已启动。但是当尝试连接 connectGatt()
时,我得到一个 133 状态码,即 GATT_ERROR
.
一个可能的问题是我没有关闭连接,请参阅 this thread,但它如何与 bluetoothctl 一起工作?
Bluetoothctl 是一个使用 BLE 和 BR\EDR 蓝牙的蓝牙客户端。它之所以有效,是因为我的 android 应用程序通过“经典蓝牙”与 gattConnect
连接。
我通过指定要使用的传输协议解决了这个问题,替换为:
device.connectGatt(context, false, gattCallback)
与:
device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)
我正在尝试在两个设备之间实现 BLE 连接:
- 一个 Linux 应用程序,作为服务器,必须宣传服务和特征
- Android 智能手机,作为客户端,必须连接到服务器并读取特征
问题来自我的 Linux 应用程序。当我使用我的 android 应用程序和 bluetoothctl 将我的智能手机连接到我的笔记本电脑时,它就像一个魅力。但是,当我对我的 Linux 应用程序而不是 bluetoothctl 执行相同操作时,它不起作用(它确实起作用,但很少见)。
由于我的Linux应用是用Go写的,所以我使用go-ble as the bluetooth package. I have the same issue with their minimal code sample,这就是我没有在这里写更多代码的原因,但我想不通为什么。
我想我只是不知道如何正确使用他们的库,但是 the documentation 不是很明确,所以如果有人能提供帮助...
编辑
在我的智能手机上,当使用我的应用程序时,我在扫描时看到笔记本电脑,所以 HCI 设备已启动。但是当尝试连接 connectGatt()
时,我得到一个 133 状态码,即 GATT_ERROR
.
一个可能的问题是我没有关闭连接,请参阅 this thread,但它如何与 bluetoothctl 一起工作?
Bluetoothctl 是一个使用 BLE 和 BR\EDR 蓝牙的蓝牙客户端。它之所以有效,是因为我的 android 应用程序通过“经典蓝牙”与 gattConnect
连接。
我通过指定要使用的传输协议解决了这个问题,替换为:
device.connectGatt(context, false, gattCallback)
与:
device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)