Newer
Older
PrismSoftware / ECTrainer2 / BitalMonitor.h
#pragma once

#include "ComPort.h"
#include "RingBuffer.h"

class ECTrainer;
class BaseProcess;


class BitalMonitor : public BaseProcess
{
	const char LF = 10;
	const DWORD NO_SIGNAL_TIMEOUT = 5000; // 無信号と判定する時間 (ms)
	static const int BUF_LEN = 256;
	const int COM_SEARCH_MAX = 20;

	nkc::ComPort _Com;
	nkc::RingBuffer<int> _rrInterval;
	bool _useDevice;
	DWORD _lastRR;	// 前回のRR取得時間(タイムアウト時 0)
	char lastBuf[BUF_LEN];

	// ECTrainerインスタンス取得
	ECTrainer* Ect() { return (ECTrainer*)_pUserdata; }

public:
	BitalMonitor(ECTrainer* pEct);
	bool Init();
	bool Routine();
	bool IsUseDevice() { return _useDevice; }
	int GetRR() { return _rrInterval.Get(); }
	int GetHB() { return _rrInterval.Get() < 1 ? 0 : 60000 / _rrInterval.Get(); }
};