diff --git a/ECTrainer2/BitalMonitor.cpp b/ECTrainer2/BitalMonitor.cpp index cd16194..03a4b51 100644 --- a/ECTrainer2/BitalMonitor.cpp +++ b/ECTrainer2/BitalMonitor.cpp @@ -7,6 +7,7 @@ BitalMonitor::BitalMonitor(ECTrainer* pEct) :BaseProcess(pEct) , _rrInterval(ECTrainer::RINGBUFSIZE, 0) + , _useDevice(false) { } @@ -15,16 +16,27 @@ bool rv = _Com.Open(COM_PORT, _T("baud=19200 parity=N data=8 stop=1")); - return rv; + // �|�[�g�`�F�b�N + char comBuf[256] = { '\0' }; + DWORD readBytes = _Com.Receive((BYTE*)comBuf, 256); + if (readBytes < 1) return true; + comBuf[readBytes] = '\0'; + char* pt = strchr(comBuf, LF); + if (!pt) return true; + if (atoi(pt + 1) < 1) return true; + + _useDevice = true; + return true; } // ���[�v bool BitalMonitor::MainLoop() { + if (!_useDevice) return true; + char lastBuf[256] = { '\0' }; char comBuf[256] = { '\0' }; char valueStr[10] = { '\0' }; - const char LF = 10; int count = 0; while (_pEct->IsAppRun()) { diff --git a/ECTrainer2/BitalMonitor.h b/ECTrainer2/BitalMonitor.h index 2fe5620..c9507d4 100644 --- a/ECTrainer2/BitalMonitor.h +++ b/ECTrainer2/BitalMonitor.h @@ -8,13 +8,17 @@ class BitalMonitor : public BaseProcess { const int COM_PORT = 4; + const char LF = 10; + GComPort _Com; RingBuffer _rrInterval; + bool _useDevice; public: BitalMonitor(ECTrainer* pEct); bool Init(); bool MainLoop(); + bool IsUseDevice() { return _useDevice; } int GetRR() { return _rrInterval.Get(); } int GetHB() { return _rrInterval.Get() < 1 ? 0 : 60000 / _rrInterval.Get(); } };