diff --git a/ISCamRecorder/ISCamera.cs b/ISCamRecorder/ISCamera.cs index 52a22f7..5a55c6d 100644 --- a/ISCamRecorder/ISCamera.cs +++ b/ISCamRecorder/ISCamera.cs @@ -25,6 +25,7 @@ SinkListener _SinkListener = new SinkListener(); IFrameQueueBuffer[] _bufferlist = null; // 録画バッファ bool _Recoding = false; // 録画中フラグ + DateTime _RecodingBegin; // 録画開始時間 public float FrameRate { get { return _Fps.FrameRate; } } @@ -105,6 +106,7 @@ // メモリ確保 _RecSink.AllocAndQueueBuffers(framesToCapture); // 撮影 + _RecodingBegin = DateTime.Now; while (_Recoding) { if (framesToCapture <= _RecSink.OutputQueueSize + 1) break; } @@ -129,12 +131,14 @@ _RecSink.OutputFrameType, (int)frrate, movieRate * 1000); writer.Begin(); // ファイル保存 + var firstDriverTime = _bufferlist[0].FrameMetadata.DriverFrameFirstPacketTime; for (int i = 0; i < _bufferlist.Length; i++) { writer.Write(_bufferlist[i]); + var driverTime = _bufferlist[i].FrameMetadata.DriverFrameFirstPacketTime; + var frameTime = _RecodingBegin.Add(driverTime - firstDriverTime); //このフレームの最初のパケットをドライバが受信した時刻が格納されます。 - string strSampleStartTime = _bufferlist[i].FrameMetadata. - DriverFrameFirstPacketTime.ToString(@"hhmmss\.fff"); - var fileName = $"{_CamID}_{strSampleStartTime}.{imageType.ToLower()}"; + string strSampleTime = frameTime.ToString(@"HHmmss\.fff"); + var fileName = $"{_CamID}_{strSampleTime}.{imageType.ToLower()}"; var filePath = Path.Combine(outDir2, fileName); switch (imageType) { case "JPG": diff --git a/ISCamRecorder/MainForm.cs b/ISCamRecorder/MainForm.cs index cf98c53..dcf46f8 100644 --- a/ISCamRecorder/MainForm.cs +++ b/ISCamRecorder/MainForm.cs @@ -243,6 +243,7 @@ Directory.CreateDirectory(outputDir); var imageType = CboImageType.Text; // 録画 + //DateTime recordStartTime = DateTime.Now; Task[] tasks = new Task[4]; for (var i = 0; i < _Cameras.Count; i++) { var cam = _Cameras[i]; diff --git a/ISCamRecorder/SensorData.cs b/ISCamRecorder/SensorData.cs index 0a5f0ac..8bd032f 100644 --- a/ISCamRecorder/SensorData.cs +++ b/ISCamRecorder/SensorData.cs @@ -11,12 +11,16 @@ internal class SensorData { readonly string SERIAL_PORT_NAME = "USB シリアル"; + // センサー値 public Queue Values { get; private set; } = new Queue(); + // サンプル時間 public Queue Times { get; private set; } = new Queue(); - SerialPort _Serial = null; + + SerialPort _Serial = null; // シリアル通信オブジェクト bool _ExitSignal = false; // 終了シグナル - int _QueueLength = 100; - public static object Locker = new object(); + int _QueueLength = 1; // グラフ表示するサンプル数 + public static object Locker = new object(); // 受信データの排他制御 + bool _Recoding = false; // 記録中フラグ /// /// 接続 @@ -97,5 +101,9 @@ } return portname; } + + public void StartRecoding() { + + } } }