在 Go 语言中,import "github.com/go-ble/ble"
表示引入一个第三方库 go-ble,它是用于操作 蓝牙低功耗(Bluetooth Low Energy, BLE) 的 Go 语言开源库。以下是详细解析:
1. 库的作用
- 功能:提供 BLE 的客户端和服务端功能,包括:
- 扫描附近的 BLE 设备
- 连接设备并读写特征值(Characteristics)
- 创建 BLE 服务(Peripheral 模式)
- 适用场景:物联网(IoT)、智能硬件交互、可穿戴设备通信等。
2. 基础用法示例
(1) 扫描设备
package main
import (
"log"
"github.com/go-ble/ble"
)
func main() {
// 初始化BLE适配器
device, err := ble.NewDevice()
if err != nil {
log.Fatal(err)
}
defer device.Stop()
// 开始扫描(持续3秒)
err = device.Scan(func(adv ble.Advertisement) {
log.Printf("发现设备: %s (RSSI: %d)", adv.Addr(), adv.RSSI())
}, false) // false表示不重复回调同一设备
if err != nil {
log.Fatal(err)
}
}
(2) 连接设备并读取数据
func readTemperature(client ble.Client) {
// 发现指定UUID的服务和特征值
svcs, _ := client.DiscoverServices(ble.MustParse("180F")) // Battery Service UUID
chars, _ := client.DiscoverCharacteristics(svcs[0], nil)
// 读取特征值
data, _ := client.ReadCharacteristic(chars[0])
log.Printf("电池电量: %d%%", data[0])
}
3. 关键对象说明
BLE概念 | Go代码中的表现 | 作用 |
---|---|---|
Advertisement |
ble.Advertisement |
广播数据(设备名、信号强度等) |
Client |
ble.Client |
BLE客户端(中心设备) |
Characteristic |
ble.Characteristic |
BLE特征值(读写的最小数据单元) |
⚠️ 注意事项
系统依赖:
- Linux需安装
bluez
:
sudo apt-get install bluez libbluetooth-dev
- macOS/Windows可能需要额外驱动。
- Linux需安装
权限问题:
# Linux需赋予蓝牙权限 sudo setcap 'cap_net_raw,cap_net_admin+eip' $(which your_go_binary)
跨平台限制:部分功能可能因操作系统差异不可用。
如果需要更复杂的例子(如 Peripheral 模式开发),可以进一步说明!
内容由零声教学AI助手提供,问题来源于学员提问