#蓝牙 #北极 #心率

arctic

用于处理蓝牙 Polar 心率监测器的 Rust 库

2 个版本 (1 个稳定版)

1.0.0 2022年7月2日
0.0.1 2021年12月18日

#1366硬件支持

每月 26 次下载
用于 polar-arctic

MIT 许可协议

650KB
1K SLoC

docs-badge crates.io version

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