2 个版本 (1 个稳定版)
1.0.0 | 2022年7月2日 |
---|---|
0.0.1 | 2021年12月18日 |
#1366 在 硬件支持
每月 26 次下载
用于 polar-arctic
650KB
1K SLoC
Arctic
用于处理 Polar 蓝牙心率监测器的 Rust 库。
由于缺乏其他设备,目前仅支持 H10。
MacOS 注意事项
在 MacOS 上使用 Btleplug 需要您授予终端(或您正在使用的任何应用程序)使用蓝牙的权限。有关如何解决此问题的说明,请参阅 此处。
示例
在 示例文件夹 中有多个示例
lib.rs
:
Arctic
arctic 是一个用于与蓝牙 Polar 心率设备交互的库。它使用 btleplug 作为蓝牙后端,支持 Windows、Mac 和 Linux。
用法
使用库跟踪 Polar H10 心率的示例
use arctic::{async_trait, Error as ArcticError, EventHandler, NotifyStream, PolarSensor, HeartRate};
struct Handler;
#[async_trait]
impl EventHandler for Handler {
// Handler for heart rate events
async fn heart_rate_update(&self, _ctx: &PolarSensor, heartrate: HeartRate) {
println!("Heart rate: {:?}", heartrate);
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a new PolarSensor with a specific ID.
// The ID is found on the device itself.
let mut polar = PolarSensor::new("7B45F72B".to_string()).await.unwrap();
// Simple loop to continue looking for the device until it's found
while !polar.is_connected().await {
match polar.connect().await {
Err(ArcticError::NoBleAdaptor) => {
// If there's no bluetooth adapter this library cannot work, so return.
println!("No bluetooth adapter found");
return Ok(());
}
Err(why) => println!("Could not connect: {:?}", why),
_ => {}
}
}
// Subscribe to heart rate events
if let Err(why) = polar.subscribe(NotifyStream::HeartRate).await {
println!("Could not subscribe to heart rate notifications: {:?}", why)
}
// Set the event handler to our struct defined above
polar.event_handler(Handler);
// Run the event loop until it ends
let result = polar.event_loop().await;
println!("No more data: {:?}", result);
Ok(())
}
依赖项
~6–38MB
~524K SLoC