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;
namespace ISCamRecorder {
public partial class Form1 : Form {
//readonly int NUM_CAMS = 4;
//readonly string[] SERIALNO = new string[] { "9220016", "9220018", "9220021", "9220025" };
readonly string CAMERA_FORMAT = "RGB24 (640x480)";
readonly float FRAME_RATE = 30F;
List<TIS.Imaging.ICImagingControl> _iccs;
public Form1() {
InitializeComponent();
icTop.Tag = "9220016";
icLeft.Tag = "9220018";
icFront.Tag = "9220021";
icRight.Tag = "9220025";
_iccs = new List<TIS.Imaging.ICImagingControl> {
icTop, icLeft, icFront, icRight
};
}
private void button1_Click(object sender, EventArgs e) {
try {
var devs = _iccs[0].Devices;
//for (int id = 0; id < _iccs.Count; id++) {
// if (!_iccs[id].DeviceValid) {
// // カメラ接続
// _iccs[id].Device = devs.FirstOrDefault(
// c => c.GetSerialNumber().Equals(_iccs[id].Tag));
// }
// if (_iccs[id].DeviceValid) {
// if (_iccs[id].LiveVideoRunning) _iccs[id].LiveStop();
// // 撮影条件設定
// _iccs[id].DeviceFrameRate = _iccs[id].DeviceFrameRates.FirstOrDefault(
// c => (c > FRAME_RATE - 0.1F && c < FRAME_RATE + 0.1F));
// _iccs[id].VideoFormat = _iccs[id].VideoFormats.FirstOrDefault(
// c => c.Name.Equals(CAMERA_FORMAT));
// // カメラ設定読み込み
// _iccs[id].LoadDeviceStateFromFile($"config.xml", false);
// // プレビュー設定
// _iccs[id].LiveDisplayDefault = false;
// _iccs[id].LiveDisplayHeight = icTop.Height;
// _iccs[id].LiveDisplayWidth = icTop.Width;
// _iccs[id].LiveStart();
// }
//}
_iccs.ForEach(ic => {
if (!ic.DeviceValid) {
// カメラ接続
ic.Device = devs.FirstOrDefault(
c => c.GetSerialNumber().Equals(ic.Tag));
}
if (ic.DeviceValid) {
if (ic.LiveVideoRunning) ic.LiveStop();
// 撮影条件設定
//ic.VideoFormat = ic.VideoFormats.FirstOrDefault(
// c => c.Name.Equals(CAMERA_FORMAT));
//ic.DeviceFrameRate = ic.DeviceFrameRates.FirstOrDefault(
// c => (c > FRAME_RATE - 0.1F && c < FRAME_RATE + 0.1F));
// カメラ設定読み込み
ic.LoadDeviceState(ICCFImport.ICCFImport.Import(
$"dfk33ux290.iccf"), false);
// プレビュー設定
ic.LiveDisplayDefault = false;
ic.LiveDisplayHeight = icTop.Height;
ic.LiveDisplayWidth = icTop.Width;
ic.LiveStart();
}
});
} catch (TIS.Imaging.ICException iex) {
MessageBox.Show("Import of ICCF file failed:\n" + iex.Message,
"Import IC Capture File", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void button2_Click(object sender, EventArgs e) {
_iccs.ForEach(ic => ic.LiveStop());
_iccs[0].ShowPropertyDialog();
var setting = _iccs[0].SaveDeviceState();
_iccs.Skip(1).ToList().ForEach(ic => {
ic.LoadDeviceState(setting, false);
});
_iccs.ForEach(ic => ic.LiveStart());
}
}
}