diff --git a/ISCamRecorder/MainForm.cs b/ISCamRecorder/MainForm.cs index 6cd4d5f..3bea1df 100644 --- a/ISCamRecorder/MainForm.cs +++ b/ISCamRecorder/MainForm.cs @@ -38,7 +38,6 @@ readonly int CVCAMERA_WIDTH = 1920; // 追加カメラの画像幅 readonly int CVCAMERA_HEIGHT = 1080; // 追加カメラの画像高さ - System.Threading.Timer _UITimer; // UI更新タイマー List _Cameras; // ISカメラオブジェクト SensorData _Sensor; // センサーオブジェクト CvCamera _CvCamera; // Cvカメラオブジェクト @@ -91,7 +90,6 @@ _Cameras.ForEach(c => c.Connect()); // タイマー&スレッド起動 - _UITimer = new System.Threading.Timer(UITimerCB, this, 0, UI_UPDATE_INTERVAL); _TriggerThread = Task.Run(TriggerThread); _SerialThread = Task.Run(SerialThread); _CvCameraThread = Task.Run(CvCameraThread); @@ -146,15 +144,6 @@ } /// - /// タイマーイベント - /// - /// - static void UITimerCB(object obj) { - if (((MainForm)obj).State == STATE.Exit) return; - //((MainForm)obj).UpdateTextInfo(); - } - - /// /// UI更新 /// public void UpdateTextInfo() { @@ -312,6 +301,13 @@ } /// + /// 逆血時 + /// + public void ReverseBlood() { + _Sounds[3].Play(); + } + + /// /// 静止画撮影 /// private void SnapImage() { @@ -362,7 +358,6 @@ /// private void ExitProgram() { State = STATE.Exit; - _UITimer.Dispose(); const int timeout = 2000; _SerialThread.Wait(timeout); diff --git a/ISCamRecorder/SensorData.cs b/ISCamRecorder/SensorData.cs index a16be47..cc7f11a 100644 --- a/ISCamRecorder/SensorData.cs +++ b/ISCamRecorder/SensorData.cs @@ -31,10 +31,10 @@ FrameRateCounter _Fps = new FrameRateCounter(10); // FPS計測 int _LastButtonState = 0; // ボタンの前の状態 MainForm _MF = null; // メインフォームインスタンス - bool _IsRecoding = false; // 記録中フラグ - bool _ClearPlot = false; // プロット消去フラグ - bool _IsReverseBlood = false; // 逆血フラグ - int _ReverseBloodThreshold = -1; // 逆血検出閾値 + bool _IsRecoding = false; // 記録中フラグ + bool _ClearPlot = false; // プロット消去フラグ + bool _IsReverseBlood = false; // 逆血フラグ + int _ReverseBloodThreshold = -1; // 逆血検出閾値 public float FrameRate { get { return _Fps.FrameRate; } } // FPS値 @@ -105,11 +105,6 @@ // CSV保存 if (_IsRecoding) { - if (_CsvWriter != null) { - _CsvWriter.WriteLine( - $"{dt.ToString("yyyy/MM/dd,HH:mm:ss.fff")},{elapsed:0.00}" + - $",{values[0]},{values[1]},{values[2]},{values[3]},{buttonState}"); - } if (_CsvReader != null) { if (_CsvReader.EndOfStream) { _CsvReader.BaseStream.Seek(0, SeekOrigin.Begin); @@ -118,6 +113,12 @@ var items = _CsvReader.ReadLine().Split(','); for (var i = 0; i < 4; i++) values[i] = int.Parse(items[i + 3]); } + if (_CsvWriter != null) { + var reverseBlood = _IsReverseBlood ? 1 : 0; + _CsvWriter.WriteLine( + $"{dt.ToString("yyyy/MM/dd,HH:mm:ss.fff")},{elapsed:0.00}" + + $",{values[0]},{values[1]},{values[2]},{values[3]},{buttonState},{reverseBlood}"); + } } // データ追加 @@ -144,8 +145,9 @@ if (_ReverseBloodThreshold < 0 && ValuesG.Count >= NUM_SAMPLES_SET_THRES) { _ReverseBloodThreshold = minValue - _MF.Setting.ReverseBloodThreshold; } - if (minValue < _ReverseBloodThreshold) { + if (minValue < _ReverseBloodThreshold && !_IsReverseBlood) { _IsReverseBlood = true; + _MF.ReverseBlood(); } // 表示 @@ -181,13 +183,13 @@ if (File.Exists(csvFile)) { _CsvReader = new StreamReader(csvFile); if (_CsvReader != null) _CsvReader.ReadLine(); - } else { - var sensorFile = Path.Combine(_MF.OutputDir, $"Sensor_{_MF.RecodingTimeStr}.csv"); - _CsvWriter = new StreamWriter(sensorFile); - if (_CsvWriter != null) { - _CsvWriter.WriteLine($"Date,Time,elapsed,B,R,G,IR,switch"); - } } + var sensorFile = Path.Combine(_MF.OutputDir, $"Sensor_{_MF.RecodingTimeStr}.csv"); + _CsvWriter = new StreamWriter(sensorFile); + if (_CsvWriter != null) { + _CsvWriter.WriteLine($"Date,Time,elapsed,B,R,G,IR,switch,Reverse Blood"); + } + _ReverseBloodThreshold = -1; _IsReverseBlood = false; _ClearPlot = true;