diff --git a/ECTrainer2/ECTrainer.cpp b/ECTrainer2/ECTrainer.cpp index 8201712..fc06ed4 100644 --- a/ECTrainer2/ECTrainer.cpp +++ b/ECTrainer2/ECTrainer.cpp @@ -14,7 +14,7 @@ // �R���X�g���N�^ ECTrainer::ECTrainer(HINSTANCE hInstance) : _AppRunning(true) - , _CalibResult(0) + //, _CalibResult(0) , _hInstance(hInstance) { _pMarker = new Marker(); @@ -68,86 +68,13 @@ return true; } -//// �L�����u���[�V�����J�n -//void ECTrainer::CalibStart() { -// ((Stimulus*)_pProcs[STIM])->SetPage(Stimulus::STIM_PAGE::CALIB); -// ((TobiiREST*)_pProcs[REST])->StartCalibration(); +//// �h���摜�o�b�t�@�ɉ摜��ݒ� +//void ECTrainer::SetDispBuffer(cv::Mat& img) { +// ((ECTrainerGUI*)_pProcs[GUI])->SetDispBuffer(img); //} -//// �L�����u���[�V�������ʕ\�� -//int ECTrainer::CheckCalibResult() { -// int res = _CalibResult; -// if (res > 0) ((Stimulus*)_pProcs[STIM])->SetPage(Stimulus::STIM_PAGE::CALIB_COMPLETE); -// if (res < 0) ((Stimulus*)_pProcs[STIM])->SetPage(Stimulus::STIM_PAGE::CALIB_FAILED); -// _CalibResult = 0; -// return res; -//} - -// �J�n -void ECTrainer::StartStim() { - ((Stimulus*)_pProcs[STIM])->SetPage(STIM_PAGE::START); -} - -// �J�n -void ECTrainer::StopStim() { - ((Stimulus*)_pProcs[STIM])->SetPage(STIM_PAGE::STOP); -} - -// ���� -void ECTrainer::NextStim() { - ((Stimulus*)_pProcs[STIM])->SetPage(STIM_PAGE::NEXT); -} - -//// ����摜�o�b�t�@�ɉ摜��ݒ� -//void ECTrainer::SetSceneBuffer(cv::Mat& img) { -// ((ECTrainerGUI*)_pProcs[GUI])->SetSceneBuffer(img); -//} - -// �h���摜�o�b�t�@�ɉ摜��ݒ� -void ECTrainer::SetDispBuffer(cv::Mat& img) { - ((ECTrainerGUI*)_pProcs[GUI])->SetDispBuffer(img); -} - // ���ʃX���b�h�J�n�_ DWORD WINAPI ECTrainer::ThreadEntry(LPVOID lpParameter) { ((BaseProcess*)lpParameter)->MainLoop(); return 0; } - -// KeepAlive�X���b�h�J�n�_ -//DWORD WINAPI ECTrainer::KeepAliveThreadEntry(LPVOID lpParameter) { -// ((EyeTrack*)((ECTrainer*)lpParameter)->_pProcs[EYETR])->KeepAliveLoop(); -// return 0; -//} - -// ����摜���̒����_�ݒ� -void ECTrainer::SetGazeV(cv::Point gazeV) { - //((EyeTrack*)_pProcs[EYETR])->SetGazeV(gazeV); -} - -// ����摜���̒����_�擾 -cv::Point ECTrainer::GetGazeV() { - return ((EyeTrack*)_pProcs[EYETR])->GetGazeV(); -} - -// �h���摜���̒����_�擾 -//cv::Point2f ECTrainer::GetGazeI() { -// return ((EyeTrack*)_pProcs[EYETR])->GetGazeI(); -//} - -// �E�ڂ̈ʒu�擾 -cv::Point2f ECTrainer::GetEyeR() { - //return _pStimulus->GetEyeR(); - return cv::Point2f(0.5, 0.5); -} - -// �E�ڂ̈ʒu�擾 -cv::Point2f ECTrainer::GetEyeL() { - //return _pStimulus->GetEyeL(); - return cv::Point2f(0.5, 0.5); -} - -// �o�b�e���[�c�ʎ擾 -int ECTrainer::BatteryLevel() { - return ((TobiiREST*)_pProcs[REST])->GetBatteryLevel(); -} \ No newline at end of file diff --git a/ECTrainer2/ECTrainer.h b/ECTrainer2/ECTrainer.h index 487f28b..71bb56b 100644 --- a/ECTrainer2/ECTrainer.h +++ b/ECTrainer2/ECTrainer.h @@ -4,8 +4,8 @@ #include "myOpenCV.h" #define ADDR "192.168.71.50" -#define EYEDEVICE_GLASS2 -//#define EYEDEVICE_NONE +//#define EYEDEVICE_GLASS2 +#define EYEDEVICE_NONE class BaseProcess; class ECTrainerGUI; @@ -28,7 +28,7 @@ HINSTANCE _hInstance; Marker* _pMarker; bool _AppRunning; // ���s���t���O - int _CalibResult; // �L�����u���[�V�������� 0:�����{ 1:���� -1:���s + //int _CalibResult; // �L�����u���[�V�������� 0:�����{ 1:���� -1:���s std::wstring _MovieToShow; // �Đ����铮��t�@�C�� // �X���b�h�J�n�_ @@ -49,24 +49,11 @@ Worker* PWorker() { return (Worker*)_pProcs[WORKER]; } Marker* PMarker() { return _pMarker; } bool Process(); - //void CalibStart(); - //int CheckCalibResult(); - void StartStim(); - void StopStim(); - void NextStim(); - //void SetSceneBuffer(cv::Mat& img); - void SetDispBuffer(cv::Mat& img); - void SetGazeV(cv::Point gazeV); - int BatteryLevel(); - cv::Point GetGazeV(); - //cv::Point2f GetGazeI(); - cv::Point2f GetEyeR(); - cv::Point2f GetEyeL(); + //void SetDispBuffer(cv::Mat& img); // �C�����C���֐� bool IsAppRun() { return _AppRunning; } // �A�v���P�[�V�������s�����ǂ��� void StopApp() { _AppRunning = false; } // �A�v���P�[�V�������~ - void SetCalibResult(int result) { _CalibResult = result; } void SetMovieToShow(std::wstring file) { _MovieToShow = file; } std::wstring GetMovieToShow() { return _MovieToShow; } }; diff --git a/ECTrainer2/ECTrainerGUI.cpp b/ECTrainer2/ECTrainerGUI.cpp index 0fc102a..93c0514 100644 --- a/ECTrainer2/ECTrainerGUI.cpp +++ b/ECTrainer2/ECTrainerGUI.cpp @@ -128,7 +128,7 @@ bool ECTrainerGUI::MainLoop() { bool fShowEyesPos = true; - bool fStimulus = false; + //bool fStimulus = false; bool fContact = false; bool fCaliblated = true; //bool fKeepContact = false; @@ -165,8 +165,8 @@ cv::Mat CurDisplay = _DispImage.clone(); // �����_�̕\�� - if (_pEct->GetGazeV().x >= 0) { - cv::circle(sceneBuf, _pEct->GetGazeV(), 10, CV_RGB(0, 0, 255), 2); + if (_pEct->PEyeTrack()->GetGazeV().x >= 0) { + cv::circle(sceneBuf, _pEct->PEyeTrack()->GetGazeV(), 10, CV_RGB(0, 0, 255), 2); } //if (_pEct->GetGazeI().x >= 0) { // cv::circle(CurDisplay, cv::Point((int)_pEct->GetGazeI().x/2, @@ -247,10 +247,10 @@ } if (fCaliblated) { if (cvui::button(140, 30, "START")) { - fStimulus = true; + //fStimulus = true; //fKeepContact = false; //if (!PlayMovie()) _pEct->Stop(); - _pEct->StartStim(); + _pEct->PWorker()->StartStim(); } } break; @@ -258,8 +258,8 @@ if (cvui::button(140, 30, "STOP")) { if (!StopMovie()) _pEct->StopApp(); //fKeepContact = false; - _pEct->StopStim(); - fStimulus = false; + _pEct->PWorker()->StopStim(); + //fStimulus = false; } cvui::trackbar(140, &targetSize, (float)0, (float)3.0); cvui::checkbox("Show Eyes", &fShowEyesPos); @@ -268,10 +268,10 @@ } cvui::printf("Mouse W %d, %d", mp.x, mp.y); cvui::printf("Mouse L %.2f, %.2f", imagePos.x, imagePos.y); - cvui::printf("View Gaze %d, %d", _pEct->GetGazeV().x, _pEct->GetGazeV().y); + cvui::printf("View Gaze %d, %d", _pEct->PEyeTrack()->GetGazeV().x, _pEct->PEyeTrack()->GetGazeV().y); //cvui::printf("Img Gaze %.2f, %.2f", _pEct->GetGazeI().x, _pEct->GetGazeI().y); cvui::text(_pEct->PMarker()->IsDetected() ? "AR Markers OK" : "AR Markers NG"); - cvui::printf("Battery %d %%", _pEct->BatteryLevel()); + cvui::printf("Battery %d %%", _pEct->PTobiiREST()->GetBatteryLevel()); if (IsPlaying()) { REFTIME tm; _pMediaPosition->get_CurrentPosition(&tm); diff --git a/ECTrainer2/Stimulus.cpp b/ECTrainer2/Stimulus.cpp index a254c75..b12a74d 100644 --- a/ECTrainer2/Stimulus.cpp +++ b/ECTrainer2/Stimulus.cpp @@ -67,7 +67,7 @@ MessageBox(NULL, _T("�h���摜���J���܂���"), _T(""), MB_ICONERROR); return false; } - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); } else { std::wstring mov = mwut::Multi2Wide(_StimInfoSet[_StimNo].filename); _pEct->SetMovieToShow(mov); @@ -83,23 +83,23 @@ switch (st) { case STIM_PAGE::OPENING: _DispBuffer = cv::imread(OPENING_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::CALIB: _DispBuffer = cv::imread(CALIB_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::CALIB_COMPLETE: _DispBuffer = cv::imread(CALIB_COMPLETE_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::CALIB_FAILED: _DispBuffer = cv::imread(CALIB_FAILED_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::WHITE: _DispBuffer = cv::imread(WHITE_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::START: _StimNo = 0; @@ -108,7 +108,7 @@ case STIM_PAGE::STOP: _StimNo = -1; _DispBuffer = cv::imread(OPENING_FILE); - _pEct->SetDispBuffer(_DispBuffer); + _pEct->PECTrainerGUI()->SetDispBuffer(_DispBuffer); break; case STIM_PAGE::NEXT: if (++_StimNo >= _StimInfoSet.size()) _StimNo = -1; diff --git a/ECTrainer2/TobiiREST.cpp b/ECTrainer2/TobiiREST.cpp index 6b80fde..8c989b4 100644 --- a/ECTrainer2/TobiiREST.cpp +++ b/ECTrainer2/TobiiREST.cpp @@ -116,6 +116,9 @@ _CalibStatus = CALIB_STATUS::DONE; mwut::DebugPrintf(_T("Calibration successful\n")); } +#else + _CalibStatus = CALIB_STATUS::DONE; + mwut::DebugPrintf(_T("Calibration skipped\n")); #endif return true; } diff --git a/ECTrainer2/Worker.cpp b/ECTrainer2/Worker.cpp index 22ca2bb..e81eaec 100644 --- a/ECTrainer2/Worker.cpp +++ b/ECTrainer2/Worker.cpp @@ -51,6 +51,7 @@ return true; } +// �L�����u���[�V�����J�n bool Worker::StartCalibration() { if (_AppStatus != APP_STATUS::IDLE) return false; _pEct->PStimulus()->SetPage(STIM_PAGE::CALIB); @@ -60,6 +61,22 @@ return true; } +// �^�X�N�J�n +bool Worker::StartStim() { + if (_AppStatus != APP_STATUS::IDLE) return false; + _AppStatus = APP_STATUS::EXEC; + _pEct->PStimulus()->SetPage(STIM_PAGE::START); + return true; +} + +// �^�X�N��~ +bool Worker::StopStim() { + if (_AppStatus != APP_STATUS::EXEC) return false; + _pEct->PStimulus()->SetPage(STIM_PAGE::STOP); + _AppStatus = APP_STATUS::IDLE; + return true; +} + // ���O�o�� void Worker::WriteLog(const TCHAR* msg) { _mtxLog.lock(); @@ -70,7 +87,7 @@ if (msg) { _ftprintf(_fpLog, msg); } else { - cv::Point2f gazeV = (_pEct->GetGazeV()); + cv::Point2f gazeV = (_pEct->PEyeTrack()->GetGazeV()); _ftprintf(_fpLog, _T(",%.1f,%.1f"), gazeV.x, gazeV.y); cv::Mat h = _pEct->PMarker()->GetHomography(); if (!h.empty() && h.rows == 3 && h.cols == 3) { diff --git a/ECTrainer2/Worker.h b/ECTrainer2/Worker.h index 9bc4370..4b20aef 100644 --- a/ECTrainer2/Worker.h +++ b/ECTrainer2/Worker.h @@ -24,5 +24,7 @@ bool Init(); bool MainLoop(); bool StartCalibration(); + bool StartStim(); + bool StopStim(); APP_STATUS GetAppStatus() { return _AppStatus; } };