微软带心脏传感器采样率和事件控制

时间:2015-09-30 06:56:02

标签: c# microsoft-band

我已使用以下代码成功从心率传感器和心率质量传感器获取数据: -

 IEnumerable<TimeSpan> supportedHeartBeatReportingIntervals = bandClient.SensorManager.HeartRate.SupportedReportingIntervals;
 bandClient.SensorManager.HeartRate.ReportingInterval = supportedHeartBeatReportingIntervals.First<TimeSpan>();
..... [other not relevant code excluded]

bandClient.SensorManager.HeartRate.ReadingChanged += (s, args) => { hrdt = args.SensorReading.HeartRate; };
{
    await bandClient.SensorManager.HeartRate.StartReadingsAsync();
    await Task.Delay(TimeSpan.FromSeconds(5));
    await bandClient.SensorManager.HeartRate.StopReadingsAsync();
    dsphr = hrdt.ToString();
}
bandClient.SensorManager.HeartRate.ReadingChanged += (s, args) =>  qltyhr = string.Format("{0}",args.SensorReading.Quality);

此代码运行良好,这是我正在编写的输出文件中的一些示例

  

理查德;; 8:48:04 AM; 64

     

理查德;获取; 8:48:19 AM; 64

     

理查德;获取; 8:48:35 AM; 64

     

理查德;获取; 8:48:50 AM; 64

     

理查德;获取; 8:49:05 AM; 64

等 - 记录所有显示获得的信息 - 当设备获得心率而不是读数时,心率变化为70.

  

理查德;获取; 8:52:08 AM; 70

记录格式是我的名字,传感器质量,时间和心率。 “;”用作平面文件中的字段分隔符

然后我重复测试,但这次使用“跑步”锻炼模式的乐队,数据结果如下:

  

理查德;锁定; 9:15:32 AM; 57

     

理查德;获取; 9:15:47 AM; 67

     

理查德;已经锁定; 9:16:03 AM; 64

     

理查德;获取; 9:16:18 AM; 62

     

理查德;锁定; 9:16:33 AM; 72

等同类故事

  

理查德;锁定; 9:24:40 AM; 73

     

理查德;锁定; 9:24:55 AM; 72

帮助!!以下是几个问题:

  • 了解由不同模式管理的“电池寿命”问题 - 我想在理想世界中做的事情是设置我自己的采样率,唤醒并锁定传感器以进行读取然后制作它又回去睡觉以节省电池。我猜这是不可能的,因为它是一个想象固件问题。我对么?如果不是我该怎么办?
  • 如果我不能理想 - 我想做的是能够从程序中切换采样模式而不是按下Band上的按钮。因此,我可以在定时的运动事件中进行“爆破样本”,并在其余时间进行背景检查以节省电池。 我可以这样做,如果是这样的话?
  • 设置波段报告间隔的相关性 - 这里我应该做些什么来帮助控制传感器开启和锁定的时间(运动模式与关闭和获取时的模式)(如果是这样的话)我应该编码吗?从我自己的测试来看,传感器的模式与报告间隔无关 - 但我错了吗?
  • 如果没有,是否有任何文档可以解释这个抽样如何在最精细的细节中工作?我花了很多时间在网上搜索,发现了以下内容:
  • 正常模式似乎是样本3或4次和小时
  • 如果乐队检测到明显的移动,正常模式会唤醒进入活动模式 - 例如我今天早上跑步时乐队处于正常模式,并且一旦它按照我的工作方式运行,它就会自动运行 - 聪明的我认为它越有用。
  • 即使是运动模式也有一些“获得”事件 - 但这些似乎是预测性的,只是过去的价值 - 如果我不能在密集的基础上进行测量 - 我想知道在心脏预测中踢的是什么,所以我可以弄清楚它是否有意义

SDK文档没有提供这种详细程度,我真的找不到另一种查找方式......所以帮助!

我希望这篇文章中的代码和数据格式是可读的,因为这是我第一次在这个论坛上发布 - 所以请原谅我,如果我在包含文本时“按错了按钮”!

感谢您提供给我的任何帮助或见解。

1 个答案:

答案 0 :(得分:0)

确定。以下是心率订阅在所有版本的Microsoft Band SDK中的工作原理。

1)当您订阅时,您将开启心率收集,除非由于活动或Band固件的被动心率监测而已经开启。

2)当你取消订阅时,你会关闭心率,除非固件也收集了与上述相同的心率数据。

3)心率订阅率为1 hz且无法更改。

4)此订阅返回的数据是Band计算的心率,而不是直接读数。因此,Aquiring vs Locked表示乐队认为其阅读的精确程度,并且将更多地受到用户佩戴乐队的影响(更严格的是更好),而不是用户对乐队所做的活动

因此,为了节省电池寿命并以突发方式获取数据,您只需订阅,获取所需数量的事件,然后取消订阅。

您从文档中获得的其他数据是指如何在内部使用心率,而不是SDK如何公开心率。