diff --git a/ISCamRecorder/CvCamera.cs b/ISCamRecorder/CvCamera.cs index 91be303..d83536f 100644 --- a/ISCamRecorder/CvCamera.cs +++ b/ISCamRecorder/CvCamera.cs @@ -31,13 +31,13 @@ /// OpenCVカメラで撮影する /// class CvCamera { - readonly string _CamID = "CvCam"; - VideoCapture camera = null; // カメラオブジェクト + readonly string _CamID = "CvCam"; // 記録用デバイス名 + VideoCapture camera = null; // カメラオブジェクト FrameRateCounter _Fps = new FrameRateCounter(10); // フレームレート計測 List _RecFrames = new List(); // 録画画像 - float _RecFrameRate = 0; // 録画フレームレート - MainForm _MainForm = null; // メインフォーム - bool _Snap = false; + float _RecFrameRate = 0; // 録画フレームレート + MainForm _MainForm = null; // メインフォームインスタンス + bool _Snap = false; // 静止画撮影フラグ /// /// コンストラクタ diff --git a/ISCamRecorder/ISCamera.cs b/ISCamRecorder/ISCamera.cs index 3b01697..2ae4f2f 100644 --- a/ISCamRecorder/ISCamera.cs +++ b/ISCamRecorder/ISCamera.cs @@ -10,26 +10,24 @@ namespace ISCamRecorder { internal class ISCamera { - readonly string ICCF_FILE = @"dfk33ux290.iccf"; // 設定ファイル + readonly string ICCF_FILE = @"dfk33ux290.iccf"; // 設定ファイル readonly string CAMERA_FORMAT = "RGB32 (1920x1080)"; // 設定ファイル無い時の解像度 - readonly float FRAME_RATE = 40F; // 設定ファイル無い時のFPS - readonly int JPEG_QUALITY = 90; + readonly float FRAME_RATE = 40F; // 設定ファイル無い時のFPS + readonly int JPEG_QUALITY = 90; // JPEG保存品質 - MainForm _MainForm = null; // メインフォーム - ICImagingControl _Cam; // カメラオブジェクト - string _SerialNumber; // シリアル番号 - string _CamID; // カメラID - VCDButtonProperty _Trigger; // トリガー設定 + MainForm _MainForm = null; // メインフォームインスタンス + ICImagingControl _Cam; // カメラオブジェクト + string _SerialNumber; // シリアル番号 + string _CamID; // カメラID + VCDButtonProperty _Trigger; // トリガー設定 FrameRateCounter _Fps = new FrameRateCounter(10); // フレームレート計測 - FrameQueueSink _PreviewSink; // プレビューSink - FrameQueueSink _RecSink; // 録画Sink - FrameSnapSink _SnapSink; // 静止画Sink - SinkListener _SinkListener = new SinkListener(); - IFrameQueueBuffer[] _bufferlist = null; // 録画バッファ - bool _Recoding = false; // 録画中フラグ - //DateTime _RecodingBegin; // 録画開始時間 + FrameQueueSink _PreviewSink; // プレビューSink + FrameQueueSink _RecSink; // 録画Sink + SinkListener _SinkListener = new SinkListener(); // Sinkリスナー + IFrameQueueBuffer[] _bufferlist = null; // 録画バッファ + bool _Recoding = false; // 録画中フラグ - public float FrameRate { get { return _Fps.FrameRate; } } + public float FrameRate { get { return _Fps.FrameRate; } } // フレームレート /// /// コンストラクタ @@ -43,7 +41,6 @@ _CamID = $"Cam{_SerialNumber.Substring(_SerialNumber.Length - 2)}"; _RecSink = new FrameQueueSink(_SinkListener, MediaSubtypes.RGB32); _PreviewSink = new FrameQueueSink(CaptureFrame, MediaSubtypes.RGB32, 5); - _SnapSink = new FrameSnapSink(); } /// diff --git a/ISCamRecorder/MainForm.Designer.cs b/ISCamRecorder/MainForm.Designer.cs index 8848283..59363e9 100644 --- a/ISCamRecorder/MainForm.Designer.cs +++ b/ISCamRecorder/MainForm.Designer.cs @@ -545,6 +545,7 @@ this.ChkStartSW.TabIndex = 22; this.ChkStartSW.Text = "SW連動"; this.ChkStartSW.UseVisualStyleBackColor = true; + this.ChkStartSW.CheckedChanged += new System.EventHandler(this.ChkStartSW_CheckedChanged); // // MainForm // diff --git a/ISCamRecorder/MainForm.cs b/ISCamRecorder/MainForm.cs index bee4a3c..e617f4b 100644 --- a/ISCamRecorder/MainForm.cs +++ b/ISCamRecorder/MainForm.cs @@ -56,10 +56,11 @@ public STATE State { get; private set; } = STATE.Init; // ソフトウェアの状態 public DateTime RecodingTime { get; private set; } = DateTime.Now; // 録画開始時間 public string RecodingTimeStr { get { return RecodingTime.ToString("yyyyMMdd_HHmmss"); } } // 録画開始時間文字列 - public string OutputBaseDir { get { return TxtOutputDir.Text; } } // データ保存フォルダ + public string OutputBaseDir { get { return TxtOutputDir.Text; } } // データ保存親フォルダ public string OutputDir { get { return Path.Combine(OutputBaseDir, $"rec{RecodingTimeStr}"); } } // データ保存フォルダ - public string ImageType { get; private set; } - public int MovieRate { get; private set; } + public string ImageType { get; private set; } // 画像保存形式 + public int MovieRate { get; private set; } // 動画レート + public bool SwitchEnabled { get; private set; } /// /// コンストラクタ @@ -92,9 +93,11 @@ _SerialThread = Task.Run(SerialThread); _CvCameraThread = Task.Run(CvCameraThread); + // コントロール変数初期化 ImageType = CboImageType.Text; MovieRate = int.Parse(TxtMovieRate.Text); _RecodingDulation = float.Parse(TxtRecodingDulation.Text); + SwitchEnabled = ChkStartSW.Checked; State = STATE.Idle; } @@ -133,23 +136,12 @@ } /// - /// 録画終了 - /// - void EndRecoding() { - if (_RecodingThread != null && _RecodingThread.IsCompleted) { - _RecodingThread.Dispose(); - _RecodingThread = null; - } - } - - /// /// タイマーイベント /// /// static void UITimerCB(object obj) { if (((MainForm)obj).State == STATE.Exit) return; ((MainForm)obj).UpdateForm(); - //((MainForm)obj).EndRecoding(); } /// @@ -211,15 +203,6 @@ } /// - /// トリガー使用チェック変更時 - /// - /// - /// - private void ChkTrigger_CheckedChanged(object sender, EventArgs e) { - _Cameras.ForEach(c => c.SetTriggerMode(((CheckBox)sender).Checked)); - } - - /// /// サイズ変更時 /// /// @@ -393,6 +376,15 @@ } /// + /// トリガー使用チェック変更時 + /// + /// + /// + private void ChkTrigger_CheckedChanged(object sender, EventArgs e) { + _Cameras.ForEach(c => c.SetTriggerMode(((CheckBox)sender).Checked)); + } + + /// /// 画像形式選択時 /// /// @@ -418,5 +410,14 @@ private void TxtRecodingDulation_TextChanged(object sender, EventArgs e) { _RecodingDulation = float.Parse(TxtRecodingDulation.Text); } + + /// + /// SW連動チェック変更 + /// + /// + /// + private void ChkStartSW_CheckedChanged(object sender, EventArgs e) { + SwitchEnabled = ChkStartSW.Checked; + } } } diff --git a/ISCamRecorder/Properties/AssemblyInfo.cs b/ISCamRecorder/Properties/AssemblyInfo.cs index 0087a0c..b897b05 100644 --- a/ISCamRecorder/Properties/AssemblyInfo.cs +++ b/ISCamRecorder/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます // 既定値にすることができます: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")] diff --git a/ISCamRecorder/SensorData.cs b/ISCamRecorder/SensorData.cs index 16d65fd..7c54e76 100644 --- a/ISCamRecorder/SensorData.cs +++ b/ISCamRecorder/SensorData.cs @@ -16,18 +16,15 @@ /// internal class SensorData { - readonly string SERIAL_PORT_NAME = "USB シリアル"; - - SerialPort _Serial = null; // シリアル通信オブジェクト - Queue Values = new Queue(); // センサー値 - Queue Times = new Queue(); // サンプル時間 - int _QueueLength; // グラフ表示するサンプル数 - //bool _RecodingStopSignal = false; // 記録終了シグナル - StreamWriter _CsvWriter = null; // ファイル保存オブジェクト - //DateTime _RecordBeginTime; // 記録開始時間 - FrameRateCounter _Fps = new FrameRateCounter(10); - bool _LastButtonState = false; // スタートボタンの状態 - MainForm _MainForm = null; // メインフォームインスタンス + readonly string SERIAL_PORT_NAME = "USB シリアル"; // デバイス名 + SerialPort _Serial = null; // シリアル通信オブジェクト + Queue Values = new Queue(); // センサー値 + Queue Times = new Queue(); // サンプル時間 + int _QueueLength; // グラフ表示するサンプル数 + StreamWriter _CsvWriter = null; // ファイル保存オブジェクト + FrameRateCounter _Fps = new FrameRateCounter(10); // FPS計測 + bool _LastButtonState = false; // ボタンの前の状態 + MainForm _MainForm = null; // メインフォームインスタンス public float FrameRate { get { return _Fps.FrameRate; } } // FPS値 @@ -88,7 +85,7 @@ // ボタン状態 bool buttonState = values[4].StartsWith("0"); - if (_LastButtonState == false && buttonState == true) { + if (_LastButtonState == false && buttonState == true && _MainForm.SwitchEnabled) { _MainForm.StartRecoding(); } _LastButtonState = buttonState; @@ -155,21 +152,5 @@ } return portname; } - - ///// - ///// 記録開始 - ///// - ///// - //private void StartRecoding() { - // _RecordBeginTime = DateTime.Now; - // _RecodingStopSignal = false; - //} - - ///// - ///// 記録終了 - ///// - //public void StopRecoding() { - // _RecodingStopSignal = true; - //} } }