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 _serialNumbers = new List() { "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(); } } } }