Blame view

OS.Spin/OS.Spin.Common/Camera/TisCamera.cs 22.5 KB
8ca6e89d   Tuo Wenbo   20211021
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
  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();
              }
          }
      }
  }