Newer
Older
PrismSoftware / ECTrainer2 / Stimulus.cpp

#include "Stimulus.h"
#include "ECTrainer.h"
#include "Marker.h"
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <tchar.h>

// コンストラクタ
Stimulus::Stimulus(ECTrainer* pEct, Marker* pMarker)
	:BaseProcess(pEct)
	, _pMarker(pMarker)
	, _StimNo(0)
{
}

// 初期化
bool Stimulus::Init() {
	SetPage(PAGES::OPENING);

	std::ifstream ifs(DATA_FILE);
	if (!ifs)
	{
		OutputDebugString(_T("Can't open stim data file."));
		return false;
	}
	while (!ifs.eof()) {
		StimInfo st;
		ifs >> st.type >> st.filename >> st.dulation >> st.csvfile >> st.target;
		std::cout << st.type << "," << st.filename << "," << st.dulation << "," 
			<< st.csvfile << "," << st.target << std::endl;
		if (st.type > 0 && st.filename.size() > 0) _StimInfoSet.push_back(st);
	}

	return true;
}

// ループ
bool Stimulus::MainLoop() {
	while (_pEct->IsRunning()) {

		_pEct->SetDispBuffer(_DispBuffer);
		Sleep(30);
	}

	return true;
}

// 刺激画像表示
void Stimulus::SetPage(PAGES st) {
	switch (st) {
	case PAGES::OPENING:
		_DispBuffer = cv::imread(OPENING_FILE);
		break;
	case PAGES::CALIB:
		_DispBuffer = cv::imread(CALIB_FILE);
		break;
	case PAGES::CALIB_COMPLETE:
		_DispBuffer = cv::imread(CALIB_COMPLETE_FILE);
		break;
	case PAGES::CALIB_FAILED:
		_DispBuffer = cv::imread(CALIB_FAILED_FILE);
		break;
	case PAGES::START:
		_StimNo = 0;
		//StimWithMarker();
		break;
	case PAGES::NEXT:
		_StimNo = (_StimNo + 1) % _StimInfoSet.size();
		//StimWithMarker();
		break;
	}
}

// 刺激をセット
//void Stimulus::StimWithMarker() {
//	cv::Mat img = cv::imread(_StimImages[_StimNo].filename);
//	_pMarker->Generate(img.size());
//	_pMarker->DrawMarker(img);
//	img.copyTo(_DispBuffer);
//}