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

#include <string>
#include <vector>
#include <tchar.h>
#include "nkcOpenCV.h"

#define LOG_DIR "../log/"

struct Record {
	double ElapTime;	// 経過時間
	int StimNo;			// 刺激データ番号
	int SceneNo;		// シーン番号
	double SceneTime;	// 刺激提示の経過時間
	cv::Point2f GazeV;	// 注視点(視野カメラ座標)
	cv::Point2f Shift;	// ずれ
	cv::Point2f GazeI;	// 注視点(画像座標)
	int Target;			// ターゲット判定
	double ContactTime;	// 目標コンタクト時間
	int Feedback;		// フィードバック
	int	TrainingLevel;	// トレーニングレベル
	int RR;				// バイタル出力(RR間隔)
	float PupilL;		// 瞳孔径
	float PupilR;		// 瞳孔径
	cv::Mat H;			// ホモグラフィ行列
};

// ログ記録クラス
class Logger {

	std::wstring _logFileName;
	std::vector<Record> _Records;

public:
	static const char* DATA_LOG_FILE;
	static const char* CALIB_LOG_FILE;
	static const TCHAR* EVENT_LOG_FILE;
	static bool Append(const TCHAR* filename, const TCHAR* msg);
	static void WriteEvent(const TCHAR* msg);

	Logger();
	void StartRecord(std::string subject, int visit, bool isCalib = false);
	void WriteRecord(Record& r);
	void Stop();
	std::wstring Filename() { return _logFileName; };
};

// 将来ログクラスを階層化する
#if 0
class DataLogger : public Logger {
	void Start(std::string subject, int visit);
};
#endif