Newer
Older
ISCamRecorder / ISCamRecorder / Form1.cs
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";
            icTop.Tag = "50020749";
            icLeft.Tag = "50020036";
            _iccs = new List<TIS.Imaging.ICImagingControl> {
 //               icTop, icLeft, icFront, icRight
                icTop, icLeft
            };
        }

        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(
                            $"dfk42buc03.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());
        }
    }
}