Rust bluest的使用方法
最近在学习Rust,看到有个bluest库但不太清楚具体怎么使用。请问有没有详细的使用教程或者示例代码?主要想了解它的基本功能和常见应用场景,谢谢!
2 回复
Rust 的 bluest
库是一个跨平台的蓝牙低功耗(BLE)库,使用方法如下:
-
添加依赖:在
Cargo.toml
中添加:[dependencies] bluest = "0.1"
-
基本流程:
- 初始化适配器:
let adapter = bluest::Adapter::default().await?;
- 扫描设备:
adapter.start_scan().await?;
- 连接设备:
let device = adapter.connect(&peripheral).await?;
- 发现服务:
let services = device.discover_services().await?;
- 读写特征值:使用服务的特征进行数据交互。
- 初始化适配器:
-
注意事项:
- 需要平台权限(如 Android 的
BLUETOOTH
权限)。 - 异步操作需配合
tokio
或async-std
运行时。
- 需要平台权限(如 Android 的
示例代码可参考官方文档,根据实际需求调整设备过滤和数据处理逻辑。
Rust 的 bluest
库是一个跨平台的蓝牙低功耗(BLE)库,用于在桌面和移动设备上实现蓝牙通信。以下是基本使用方法:
1. 添加依赖
在 Cargo.toml
中添加:
[dependencies]
bluest = "0.2"
tokio = { version = "1", features = ["full"] }
2. 基本使用示例
use bluest::{Adapter, Device};
use tokio::runtime;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 获取默认蓝牙适配器
let adapter = Adapter::default().await.ok_or("蓝牙适配器不可用")?;
// 启用适配器
adapter.enable().await?;
// 开始扫描设备
println!("正在扫描蓝牙设备...");
let mut scan = adapter.scan(&[]).await?;
while let Some(discovered_device) = scan.next().await {
println!(
"发现设备: {} (RSSI: {})",
discovered_device.device.name().as_deref().unwrap_or("未知"),
discovered_device.rssi.unwrap_or(0)
);
}
Ok(())
}
3. 连接设备示例
// 连接特定设备
async fn connect_device(adapter: &Adapter, device_addr: &str) -> Result<(), Box<dyn std::error::Error>> {
let device = adapter.open_device(device_addr).await?;
device.connect().await?;
// 发现服务
let services = device.discover_services().await?;
for service in services {
println!("服务 UUID: {}", service.uuid());
// 获取特征值
for characteristic in service.characteristics().await? {
println!("特征值 UUID: {}", characteristic.uuid());
}
}
device.disconnect().await?;
Ok(())
}
4. 主要功能
- 设备扫描:使用
adapter.scan()
- 设备连接:
device.connect()
- 服务发现:
device.discover_services()
- 读写特征值:
characteristic.read()
/characteristic.write()
- 通知监听:
characteristic.notify()
5. 注意事项
- 需要平台权限(Android/iOS 需要蓝牙权限)
- 在真机上测试,模拟器可能不支持蓝牙
- 异步操作需要使用
tokio
运行时
建议查看官方文档获取最新 API 和完整示例:https://docs.rs/bluest