|
@@ -1,5 +1,6 @@
|
|
|
using Cognex.VisionPro;
|
|
using Cognex.VisionPro;
|
|
|
using Microsoft.Win32;
|
|
using Microsoft.Win32;
|
|
|
|
|
+using NPOI.POIFS.Crypt.Dsig;
|
|
|
using NPOI.SS.Formula.Eval;
|
|
using NPOI.SS.Formula.Eval;
|
|
|
using SciCamera.Net;
|
|
using SciCamera.Net;
|
|
|
using System;
|
|
using System;
|
|
@@ -121,7 +122,7 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
|
|
|
|
|
if (devTlType == SciCam.SciCamTLType.SciCam_TLType_Gige)
|
|
if (devTlType == SciCam.SciCamTLType.SciCam_TLType_Gige)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
SciCam.SCI_DEVICE_GIGE_INFO gigeDevInfo = (SciCam.SCI_DEVICE_GIGE_INFO)SciCam.ByteToStruct(device.info.gigeInfo, typeof(SciCam.SCI_DEVICE_GIGE_INFO));
|
|
SciCam.SCI_DEVICE_GIGE_INFO gigeDevInfo = (SciCam.SCI_DEVICE_GIGE_INFO)SciCam.ByteToStruct(device.info.gigeInfo, typeof(SciCam.SCI_DEVICE_GIGE_INFO));
|
|
|
uint ip1 = gigeDevInfo.ip;
|
|
uint ip1 = gigeDevInfo.ip;
|
|
|
int nIp1 = (int)(ip1 & 0x000000ff);
|
|
int nIp1 = (int)(ip1 & 0x000000ff);
|
|
@@ -337,7 +338,7 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
throw new Exception("没有发现相机");
|
|
throw new Exception("没有发现相机");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- SciCam.SCI_DEVICE_INFO sCI_DEVICE_INFO= CameraInfo;
|
|
|
|
|
|
|
+ SciCam.SCI_DEVICE_INFO sCI_DEVICE_INFO = CameraInfo;
|
|
|
nReVal = mvCameraAcq.CreateDevice(ref sCI_DEVICE_INFO);
|
|
nReVal = mvCameraAcq.CreateDevice(ref sCI_DEVICE_INFO);
|
|
|
if (nReVal != SciCam.SCI_CAMERA_OK)
|
|
if (nReVal != SciCam.SCI_CAMERA_OK)
|
|
|
{
|
|
{
|
|
@@ -348,12 +349,22 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
nReVal = mvCameraAcq.OpenDevice();
|
|
nReVal = mvCameraAcq.OpenDevice();
|
|
|
// ch:设置触发模式为off | en:Set trigger mode as off
|
|
// ch:设置触发模式为off | en:Set trigger mode as off
|
|
|
nReVal = mvCameraAcq.SetEnumValueByStringEx(SciCam.SciCamDeviceXmlType.SciCam_DeviceXml_Camera, "TriggerMode", "Off");
|
|
nReVal = mvCameraAcq.SetEnumValueByStringEx(SciCam.SciCamDeviceXmlType.SciCam_DeviceXml_Camera, "TriggerMode", "Off");
|
|
|
|
|
+ nReVal = mvCameraAcq.SetEnumValueByString("TriggerSource", "Software");
|
|
|
|
|
+ // ch:注册事件回调 | en:Register event callback
|
|
|
|
|
+ //nReVal = mvCameraAcq.RegisterPayloadCallBack(new SciCam.fnOnPayloadDelegate(ImageCallBack), IntPtr.Zero, true);
|
|
|
|
|
+ // ch:设置采集策略 | en:Set Grab Strategy
|
|
|
|
|
+ nReVal = mvCameraAcq.SetGrabStrategy(SciCam.SciCamGrabStrategy.SciCam_GrabStrategy_Latest);
|
|
|
|
|
+ if (nReVal != SciCam.SCI_CAMERA_OK)
|
|
|
|
|
+ {
|
|
|
|
|
+ Console.WriteLine("Register Event CallBack fail! nRet {0}", nReVal);
|
|
|
|
|
+ }
|
|
|
if (!IsConnected)
|
|
if (!IsConnected)
|
|
|
{
|
|
{
|
|
|
CameraConnectChangedEvent?.Invoke(ID, true);
|
|
CameraConnectChangedEvent?.Invoke(ID, true);
|
|
|
}
|
|
}
|
|
|
|
|
+ mvCameraAcq.SetGrabTimeout(2000);
|
|
|
IsConnected = mvCameraAcq.IsDeviceOpen();
|
|
IsConnected = mvCameraAcq.IsDeviceOpen();
|
|
|
- if (IsConnected)
|
|
|
|
|
|
|
+ if (IsConnected)
|
|
|
{
|
|
{
|
|
|
mvCameraAcq.StartGrabbing();
|
|
mvCameraAcq.StartGrabbing();
|
|
|
}
|
|
}
|
|
@@ -415,7 +426,14 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
{
|
|
{
|
|
|
OpenDevice();
|
|
OpenDevice();
|
|
|
}
|
|
}
|
|
|
|
|
+ //if (!mvCameraAcq.IsGrabbing())
|
|
|
|
|
+ //{
|
|
|
|
|
+ // mvCameraAcq.StartGrabbing();
|
|
|
|
|
+ //}
|
|
|
//nReVal = mvCameraAcq.StartGrabbing();
|
|
//nReVal = mvCameraAcq.StartGrabbing();
|
|
|
|
|
+ //mvCameraAcq.ClearPayloadBuffer();
|
|
|
|
|
+ // ch:发送软触发命令 | en:Send Trigger Software command
|
|
|
|
|
+ //nReVal = mvCameraAcq.SetCommandValueEx(SciCam.SciCamDeviceXmlType.SciCam_DeviceXml_Camera, "TriggerSoftware");
|
|
|
nReVal = mvCameraAcq.Grab(ref payload);
|
|
nReVal = mvCameraAcq.Grab(ref payload);
|
|
|
if (nReVal == SciCam.SCI_CAMERA_OK)
|
|
if (nReVal == SciCam.SCI_CAMERA_OK)
|
|
|
{
|
|
{
|
|
@@ -423,11 +441,12 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
mvCameraAcq.FreePayload(payload);
|
|
mvCameraAcq.FreePayload(payload);
|
|
|
//nReVal = mvCameraAcq.StopGrabbing();
|
|
//nReVal = mvCameraAcq.StopGrabbing();
|
|
|
TotalTime = sw.Elapsed;
|
|
TotalTime = sw.Elapsed;
|
|
|
|
|
+ ErrorMessage = $"{i + 1}";
|
|
|
return Image;
|
|
return Image;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- nReVal = mvCameraAcq.FreePayload(payload);
|
|
|
|
|
|
|
+ //nReVal = mvCameraAcq.FreePayload(payload);
|
|
|
//nReVal = mvCameraAcq.StopGrabbing();
|
|
//nReVal = mvCameraAcq.StopGrabbing();
|
|
|
//_operationSemaphore.Release();
|
|
//_operationSemaphore.Release();
|
|
|
CloseDevice();
|
|
CloseDevice();
|
|
@@ -456,6 +475,27 @@ namespace TeamAAS_VP.Core.Cameras
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // ch:采集回调接口 | en:Grab Callback interface
|
|
|
|
|
+ void ImageCallBack(IntPtr payload, IntPtr tag)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (payload == IntPtr.Zero) return;
|
|
|
|
|
+ uint nReVal = SciCam.SCI_CAMERA_OK;
|
|
|
|
|
+
|
|
|
|
|
+ SciCam.SCI_CAM_PAYLOAD_ATTRIBUTE attribute = new SciCam.SCI_CAM_PAYLOAD_ATTRIBUTE();
|
|
|
|
|
+ nReVal = SciCam.PayloadGetAttribute(payload, ref attribute);
|
|
|
|
|
+ if (nReVal != SciCam.SCI_CAMERA_OK || !attribute.isComplete)
|
|
|
|
|
+ {
|
|
|
|
|
+ Console.WriteLine("Failed to get image attributes or frame is incomplete! nRet:{0}", nReVal);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ Image = GetConvertedInfo(payload);
|
|
|
|
|
+ ImageCallbackEvent?.Invoke(Image, TotalTime, ErrorMessage);
|
|
|
|
|
+ //Console.WriteLine("Get One Frame: Width[{0}], Height[{1}], nFrameNum[{2}]",
|
|
|
|
|
+ //attribute.imgAttr.width, attribute.imgAttr.height, attribute.frameID);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 开始采集图像
|
|
/// 开始采集图像
|
|
|
/// </summary>
|
|
/// </summary>
|