using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;
namespace ISCamRecorder {
public partial class MainForm : Form {
private System.Threading.Timer _UITimer;
List<ISCamera> _Cameras = new List<ISCamera> (); // カメラオブジェクト
//private Stopwatch _Swatch = new Stopwatch(); // 高精度時間計測
/// <summary>
/// コンストラクタ
/// </summary>
public MainForm() {
InitializeComponent();
}
/// <summary>
/// フォームロード時
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_Load(object sender, EventArgs e) {
SetTitle(this.Text);
_Cameras.Add(new ISCamera(icTop, "9220016"));
_Cameras.Add(new ISCamera(icLeft, "9220018"));
_Cameras.Add(new ISCamera(icFront, "9220021"));
_Cameras.Add(new ISCamera(icRight, "9220025"));
//_Swatch.Start();
_Cameras.ForEach(c => c.Connect());
_UITimer = new System.Threading.Timer(TimerCB, this, 0, 2000);
}
/// <summary>
/// タイマーイベント
/// </summary>
/// <param name="obj"></param>
static void TimerCB(object obj) {
((MainForm)obj).SoftwareTrigger();
}
/// <summary>
/// トリガー発生
/// </summary>
public void SoftwareTrigger() {
if (this.InvokeRequired) {
this.Invoke((MethodInvoker)delegate { SoftwareTrigger(); });
return;
}
//_Cam.ForEach(c => c.SWTrigger());
TxtTop.Text = $"Top {_Cameras[0].CameraInfo()}";
TxtLeft.Text = $"Left {_Cameras[1].CameraInfo()}";
TxtFront.Text = $"Front {_Cameras[2].CameraInfo()}";
TxtRight.Text = $"Right {_Cameras[3].CameraInfo()}";
}
/// <summary>
/// カメラプロパティの設定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SetProperty_Click(object sender, EventArgs e) {
var config =_Cameras[0].SetProperty();
_Cameras.ForEach(c => c.SetProperty(config));
}
/// <summary>
/// フォームタイトルを設定
/// </summary>
private void SetTitle(string title) {
var version = Assembly.GetExecutingAssembly().GetName().Version;
#if DEBUG
var debug = " [DEBUG]";
#else
var debug = "";
#endif
Text = $"{title} ver {version.Major}.{version.Minor}{debug}";
}
/// <summary>
/// フォームを閉じる時
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {
_UITimer.Dispose();
}
/// <summary>
/// トリガー使用チェック変更時
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChkTrigger_CheckedChanged(object sender, EventArgs e) {
_Cameras.ForEach(c => c.SetTriggerMode(((CheckBox)sender).Checked));
}
}
}