#include "ECTrainer.h"
#include "BitalMonitor.h"
#include <iostream>
#include <string.h>
// コンストラクタ
BitalMonitor::BitalMonitor(ECTrainer* pEct)
:BaseProcess(pEct)
, _rrInterval(ECTrainer::RINGBUFSIZE)
{
}
// 初期化
bool BitalMonitor::Init() {
bool rv = _Com.Open(COM_PORT, _T("baud=19200 parity=N data=8 stop=1"));
return rv;
}
// ループ
bool BitalMonitor::MainLoop() {
char lastBuf[256] = { '\0' };
char comBuf[256] = { '\0' };
char valueStr[10] = { '\0' };
const char LF = 10;
int count = 0;
while (_pEct->IsAppRun()) {
// バイタル
DWORD readBytes = _Com.Receive((BYTE*)comBuf, 256);
if (readBytes > 0) {
comBuf[readBytes] = '\0';
//std::cout << "comBuf:" << comBuf << std::endl;
strcat_s(lastBuf, 256, comBuf);
//std::cout << "lastBuf:" << lastBuf << std::endl;
char* sp = lastBuf;
char* pt = sp;
for (; *pt != '\0'; pt++) {
if (*pt == LF) {
//*pt = '\0';
//std::cout << "value:" << sp << std::endl;
if (*sp == '#') {
int RR = atoi(sp + 1);
if (RR > 0) {
_rrInterval.Put(RR);
}
//std::cout << "Read:" << RR << std::endl;
}
sp = pt + 1;
}
}
if (*sp == '\0') lastBuf[0] = '\0';
else strcpy_s(lastBuf, 256, sp);
//std::cout << "lastBuf2:" << lastBuf << std::endl;
}
Sleep(10);
//if (++count > 20) break;
}
return true;
}