Примеры исходного кода на C # или C ++, который вычисляет изменчивость частоты сердечных сокращений windows 10 - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь получить вариабельность сердечного ритма от устройства Polar.

И у меня работает Windows Universal образец BLE для подключения к устройству и получения ВСР.Похоже это .(устройство на самом деле Polar h10).

Как вы можете видеть, я могу получить частоту сердечных сокращений, но это не дает мне ВСР.Прежде всего, я надеялся, что когда я выберу характеристику HeartRate, у меня также будет опция вариабельности сердечного ритма.Но не совсем!(Это было бы действительно красиво и легко :)

"180d"    /* Heart Rate */    

"2a37": "Heart Rate Measurement",
"2a38": "Body Sensor Location"
// This is where it should show Heart Rate Variability //

И я искал достаточно, чтобы найти какой-то пример HRV в C #, но его нет.

Даже на Github есть в основном примеры андроида в java, а другие есть в Python и Matlab.

И, что удивительно, те, что в java, не показывают каких-либо вычислений о том, как получить ВСР, что странно.

Может ли кто-нибудь помочь мне найти примеры в C #, C ++ или просто помочь мне найти примеры кода, которые показывают расчет для HRV?

1 Ответ

0 голосов
/ 29 октября 2018

Хорошо, я нашел ответ. Я следовал за этим ответом GrooverFromHolland.

Это был его ответ:

Если вы можете прочитать сердцебиение в уведомлениях, то есть также rr-интервал. Интервал rr представлен 2 байтами (uint16). Вам необходим rr-интервал для расчета вариабельности сердечного ритма в вашем приложении.

Чтобы получить rr-интервал, вы должны прочитать флаги с первого полученного байта. Вы читаете флаги как двоичные справа налево.

бит 0 = 0: формат значения частоты пульса установлен на UINT8. Единицы: BPM (1 байт). бит 0 = 1: для формата значения частоты пульса установлено значение UINT16. Единицы: BPM (2 байта).

бит 1 и 2: биты состояния контакта датчика. Это не относится к этому.

бит 3 = 0: поле с затратами энергии отсутствует. бит 3 = 1: присутствует поле «Расход энергии». Формат = uint16. Единицы измерения: кило Джоуль.

бит 4 = 0: значения интервала RR отсутствуют. бит 4 = 1: присутствует одно или несколько значений интервала RR. Формат = uint16. единица 1/1024 сек.

биты 5, 6 и 7: зарезервировано для будущего использования.

Если ваш первый байт, например, = 16 = 0x10 = 0b00010000, тогда байт 2 = это частота сердечных сокращений.

Байты 3 и 4 являются rr-интервалом. Байт 5 и 6 (если есть) rr-интервал.

Чтобы рассчитать вариабельность сердечного ритма, вы должны выбрать значения rr-интервала за определенный период времени и взять стандартное отклонение этих интервалов. Для расчета стандартного отклонения:

1. Work out the Mean (the simple average of the numbers)
2. Then for each number: subtract the Mean and square the result
3. Then work out the mean of those squared differences.
4. Take the square root of that and we are done!

Как это сделать в коде, я оставляю это на ваше усмотрение, или вы можете погуглить.

Примечание:

Байт-пары в спецификациях SIG являются наименьшим значащим байтом во-первых, поэтому для представления uint16 в Windows поменяйте местами байты пары байтов в первую очередь! Интервал rr не миллисекунды, а 1/1024 секунды. Это необходимо для предотвращения потери десятичных чисел в беззнаковых делениях.

(Кто-нибудь, пожалуйста, отмените -1 к вопросу)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...