TisCamera.cs 22.5 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using TIS.Imaging;//引用相机名称空间

namespace OS.Spin.Common.Camera
{
   public class TisCamera
    {
        public TIS.Imaging.VCDButtonProperty Softtrigger;//触发属性
        public TIS.Imaging.VCDSwitchProperty TrigEnableSwitch;//触发使能开关
        public TIS.Imaging.VCDAbsoluteValueProperty Trigger_Delay_Time;//触发延时属性值对象
        public TIS.Imaging.VCDSwitchProperty TriPolarity;//触发极性属性
        public TIS.Imaging.VCDAbsoluteValueProperty Trigger_Debounce_Time;//Debounce属性

        private List<string> _serialNumbers = new List<string>() { "36814387", "36814387", "36814387" };
        //相机初始化
        public void CameraInitialize(TIS.Imaging.ICImagingControl icImagingControl1,int id)
        {
            
            //文件打开相机
            try
            {
                icImagingControl1.LoadDeviceStateFromFile(string.Format("Camera_settings_{0}.dat", id) , true);
            }
            catch (Exception)
            {
                icImagingControl1.ShowDeviceSettingsDialog();
                if (!icImagingControl1.DeviceValid)
                {
                    MessageBox.Show("没有找到设备");
                    Application.Exit();
                }
                else
                {
                    icImagingControl1.SaveDeviceStateToFile(string.Format("Camera_settings_{0}.dat", id));
                }

            }

            //SN号打开相机
            //OpenBySN(icImagingControl1, "51614008");


            ////初始化控件
            //icImagingControl1.LiveCaptureContinuous = true;//设置回调模式
            //icImagingControl1.LiveDisplayDefault = false;
            //icImagingControl1.LiveDisplayHeight = icImagingControl1.Height;
            //icImagingControl1.LiveDisplayWidth = icImagingControl1.Width;

            icImagingControl1.MemoryCurrentGrabberColorformat = TIS.Imaging.ICImagingControlColorformats.ICY8;//黑白格式为:ICY8;彩色格式为:ICRGB32


        }

        //SN号打开相机
        public void OpenBySN(TIS.Imaging.ICImagingControl icImagingControl1, string Ctemp)
        {
            string temp = "";
            if (icImagingControl1.Devices.Length > 0)
            {
                foreach (Device Dev in icImagingControl1.Devices)
                {
                    if (Dev.GetSerialNumber(out temp))
                    {
                        if (temp == Ctemp)//判断是否等于指定相机序号
                        {
                            icImagingControl1.Device = Dev.Name;
                            break;
                        }
                    }
                }
                if (!icImagingControl1.DeviceValid)
                {
                    MessageBox.Show("没有找到相机,是否SN号有误!");
                    Application.Exit();

                }
            }
            else
            {
                MessageBox.Show("没有找到设备,请确认相机是否连接好");
                Application.Exit();
            }
        }

        //开始取图                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
        public void StartLiveVideo(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            icImagingControl1.LiveStart();
        }

        //停止取图
        public void StopLiveVideo(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            icImagingControl1.LiveStop();
        }
        //相机属性
        public void Camproperty(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            icImagingControl1.ShowPropertyDialog();
        }
        //保存图片
        public void SaveImage(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            icImagingControl1.LiveStop();
            icImagingControl1.LiveStart();

            icImagingControl1.ImageActiveBuffer.SaveImage("test.bmp");
            //icImagingControl1.ImageActiveBuffer.
        }

        //触发使能
        public void TriEnable(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            TrigEnableSwitch = (TIS.Imaging.VCDSwitchProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" + 
                TIS.Imaging.VCDIDs.VCDElement_Value + ":" + TIS.Imaging.VCDIDs.VCDInterface_Switch);
            
            
        }

        //软触发
        public void Strigger(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            //Softtrigger = (TIS.Imaging.VCDButtonProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" +
            //    TIS.Imaging.VCDIDs.VCDElement_SoftwareTrigger + ":" + TIS.Imaging.VCDIDs.VCDInterface_Button);
            Softtrigger = (TIS.Imaging.VCDButtonProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" +
                TIS.Imaging.VCDIDs.VCDElement_SoftwareTrigger + ":" + TIS.Imaging.VCDIDs.VCDInterface_Button);

            //var TriggerMode = icImagingControl1.VCDPropertyItems.FindItem(VCDIDs.VCDID_TriggerMode);
            //Softtrigger = (VCDButtonProperty)TriggerMode.Elements.FindInterface("{FDB4003C-552C-4FAA-B87B-42E888D54147}" + ":" + VCDIDs.VCDInterface_Button);

            Softtrigger.Push();//软触发
        }

        //触发延时
        public void TrigDelay(TIS.Imaging.ICImagingControl icImagingControl1, double Dtime)
        {
            Trigger_Delay_Time = (TIS.Imaging.VCDAbsoluteValueProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" +
                TIS.Imaging.VCDIDs.VCDElement_TriggerDelay + ":" + TIS.Imaging.VCDIDs.VCDInterface_AbsoluteValue);

            if (Dtime <= Trigger_Delay_Time.RangeMin)
            {
                Trigger_Delay_Time.Value = Trigger_Delay_Time.RangeMin;
            }
            else if (Dtime >= Trigger_Delay_Time.RangeMax)
            {
                Trigger_Delay_Time.Value = Trigger_Delay_Time.RangeMax;
            }
            else
            {
                Trigger_Delay_Time.Value = Dtime;
            }
            
        }

        //Debounce
        public void TriDebounce(TIS.Imaging.ICImagingControl icImagingControl1, double DeTime)
        {
            Trigger_Debounce_Time = (TIS.Imaging.VCDAbsoluteValueProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" +
                TIS.Imaging.VCDIDs.VCDElement_TriggerDebounceTime + ":" + TIS.Imaging.VCDIDs.VCDInterface_AbsoluteValue);

            if (DeTime <= Trigger_Debounce_Time.RangeMin)
            {
                Trigger_Debounce_Time.Value = Trigger_Debounce_Time.RangeMin;
            }
            else if (DeTime >= Trigger_Debounce_Time.RangeMax)
            {
                Trigger_Debounce_Time.Value = Trigger_Debounce_Time.RangeMax;
            }
            else
            {
                Trigger_Debounce_Time.Value = DeTime;
            }
        }

        //极化
        public void TriggerPolary(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            //极化初始化
            TriPolarity = (TIS.Imaging.VCDSwitchProperty)icImagingControl1.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" +
                TIS.Imaging.VCDIDs.VCDElement_TriggerPolarity + ":" + TIS.Imaging.VCDIDs.VCDInterface_Switch);
            TriPolarity.Switch = false;
        }

        //退出时关闭相机
        public void CamClose(TIS.Imaging.ICImagingControl icImagingControl1)
        {
            if (icImagingControl1.DeviceValid)
            {
                icImagingControl1.LiveStop();
            }
        }
    }
}