sing GxIAPINET;
using GxIAPINET.Sample.Common;
using System.Runtime.InteropServices;
using static GxIAPINET.IGXStream;
namespace GxIAPINETTest
{
public partial class Form1 : Form
{
private int m_nNum = 0;
IGXDevice objDevice;
GxBitmap objBitmap;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string strError = "";
GX_STATUS_LIST emStatus = GX_STATUS_LIST.GX_STATUS_SUCCESS;
try
{
IGXFactory.GetInstance().Init();
// IGXFactory.GetInstance().Uninit();
List<IGXDeviceInfo> listGXDeviceInfo = new List<IGXDeviceInfo>();
IGXFactory.GetInstance().UpdateDeviceList(1000, ref listGXDeviceInfo);
objDevice = IGXFactory.GetInstance().OpenDeviceBySN(listGXDeviceInfo[0].GetSN(), GX_ACCESS_MODE.GX_ACCESS_CONTROL);
if (objDevice == null )
{
MessageBox.Show("设备打开失败");
return;
}
objBitmap = new GxBitmap(objDevice, pictureBox1);
IGXStream objStream = objDevice.OpenStream(1);
CaptureDelegate m_CallBackDelegate = new CaptureDelegate(__CaptureCallback);
objStream.RegisterCaptureCallback(this, m_CallBackDelegate);
objDevice.GetRemoteFeatureControl().GetCommandFeature("AcquisitionStart").Execute();
Thread.Sleep(1000000);
objDevice.GetRemoteFeatureControl().GetCommandFeature("AcquisitionStop").Execute();
objStream.UnregisterCaptureCallback();
objDevice.Close();
IGXFactory.GetInstance().Uninit();
int a = 0; int b = 0;
}
catch (CGalaxyException ex)
{
emStatus = (GX_STATUS_LIST)ex.GetErrorCode();
strError = ex.ToString();
}
catch (Exception ex)
{
emStatus = GX_STATUS_LIST.GX_STATUS_ERROR;
strError = ex.ToString();
}
}
private void __CaptureCallback(object objUserParam, ref IFrameData objIFrameData)
{
if (objIFrameData.GetStatus() == GX_FRAME_STATUS_LIST.GX_FRAME_STATUS_SUCCESS)
{
objBitmap.Show(objIFrameData);
m_nNum++;
}
}
}
}