1

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

 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 秒;64

理查德;收购;上午 8 点 48 分 19 秒;64

理查德;收购;上午 8 点 48 分 35 秒;64

理查德;收购;上午 8 点 48 分 50 秒;64

理查德;收购;8:49:05 AM;64

等 - 记录所有显示采集 - 心率的 70 变化是在设备采集心率时出现的,而不是来自读数。

理查德;正在收购;上午 8 点 52 分 08 秒;70

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

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

理查德;锁定;上午 9 点 15 分 32 秒;57

理查德;收购;上午 9 点 15 分 47 秒;67

理查德;锁定;上午 9 点 16 分 03 秒;64

理查德;收购;上午 9 点 16 分 18 秒;62

理查德;锁定;上午 9 点 16 分 33 秒;72

等等同样的故事

理查德;锁定;上午 9 点 24 分 40 秒;73

理查德;锁定;上午 9 点 24 分 55 秒;72

帮助!!这里有几个问题:

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

SDK 文档没有给出这个级别的详细信息,我真的找不到另一种方法来找出......所以帮助!

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

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

4

1 回答 1

0

好的。以下是心率订阅在所有版本的 Microsoft Band SDK 中的工作方式。

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

2) 当您取消订阅时,您关闭心率收集,除非固件也因为上述原因也在收集心率数据。

3) 订阅心率为1Hz,不可更改。

4) 本次订阅返回的数据为手环计算的心率,并非直读数据。因此,Aquiring vs Locked 代表了 Band 认为其读数的准确程度,并且将更多地受到用户佩戴乐队的方式(更紧对此更好)的影响,而不是用户使用乐队所做的活动

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

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

于 2016-02-02T19:07:50.240 回答