获取方式
Enumerator.GetDeviceByGigeIP()
通过IP地址获取设备对象。
private void test_Click(object sender, EventArgs e)
{
devices=Enumerator.EnumerateDevices();
device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
}
常用属性
DeviceInfo
获取设备的信息、
IsGrabbing
当前设备如果开启码流捕获,返回true;否则,返回false。
IsOpen
当前设备打开,返回true;否则,返回false。
IsTriggerOn
当前设备如果开启触发模式,返回true;否则,返回false。如果此属性为on,那么当码流获取图像时,不需要用户控制,相机一直读取图像;如果需要人为控制,一个信号采集一张图,那么需要将IsTriggerOn设为on,并设置其他参数。此参数可以通过TriggerSet属性获取的ITrigger对象进行控制。
private void button1_Click(object sender, EventArgs e)
{
List<IDeviceInfo> devices=Enumerator.EnumerateDevices();
IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.10");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("打开相机前,isTriggerOn属性:"+device.IsTriggerOn);
device.Open();
Thread.Sleep(100);
Console.WriteLine("打开相机后,isTriggerOn属性:" + device.IsTriggerOn);
ITrigger trigger=device.TriggerSet;
Thread.Sleep(100);
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("获取设备trigger对象后");
Console.WriteLine("trigger的isOpen属性为"+trigger.IsOpen);
Console.WriteLine("device的isTriggerOn属性为"+device.IsTriggerOn);
trigger.Close();
Thread.Sleep(100);
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("执行trigger的close()方法后");
Console.WriteLine("trigger的isOpen属性为" + trigger.IsOpen);
Console.WriteLine("device的isTriggerOn属性为" + device.IsTriggerOn);
trigger.Open(TriggerSourceEnum.Software);
Thread.Sleep(100);
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("执行trigger的open()方法后");
Console.WriteLine("trigger的isOpen属性为" + trigger.IsOpen);
Console.WriteLine("device的isTriggerOn属性为" + device.IsTriggerOn);
}
运行结果:
------------------------------------------------------------
打开相机前,isTriggerOn属性:False
打开相机后,isTriggerOn属性:True
------------------------------------------------------------
获取设备trigger对象后
trigger的isOpen属性为True
device的isTriggerOn属性为True
------------------------------------------------------------
执行trigger的close()方法后
trigger的isOpen属性为False
device的isTriggerOn属性为False
------------------------------------------------------------
执行trigger的open()方法后
trigger的isOpen属性为True
device的isTriggerOn属性为True
StreamGrabber
获取设备的取流对象。类型为IStream。
ParameterCollection
获取相机的配置操作集。
TriggerSet(未理解Open方法参数有哪些)
获取触发操作集合,返回ITrigger接口,以下为ITrigger接口对象的方法。
常用方法
ExecuteSoftwareTrigger()
执行单帧软触发,执行成功,返回true;否则,返回false。与Device的trigger对象执行ExecuteSoftwareTrigger()方法的效果一样。
GrabUsingGrabLoopThread()
使用内部线程捕获帧数据。简单点说,就是使用这方法,可以在不获取stream对象的情况下开启码流捕捉,其效果等于stream.Start()。
SaveDeviceCfg(string strFullFileName)
将相机配置保存到strFullFileName指示的路径上。(需先打开相机,否则,保存失败)
private void test_Click(object sender, EventArgs e)
{
devices=Enumerator.EnumerateDevices();
device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
device.Open();
int rst=device.SaveDeviceCfg("config.xml");
if (rst==0)
{
Console.WriteLine("保存相机配置成功");
}
else
{
Console.WriteLine("保存相机配置失败");
}
device.Close();
}
运行结果:
保存相机配置成功
LoadDeviceCfg(string strFullFileName,ref List<string> oErrPropertyList)
从strFullFileName路径的文件读取相机配置到IDevice中,如果成功,返回0;否则,返回其他值。(需先打开相机再读取配置,否则,会失败)
private void test_Click(object sender, EventArgs e)
{
List<IDeviceInfo> devices = Enumerator.EnumerateDevices();
IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
device.Open();
List<string> errorList = new List<string>();
int rst=device.LoadDeviceCfg("config.xml",ref errorList);
if (rst == 0)
{
Console.WriteLine("加载相机配置成功");
}
else
{
Console.WriteLine("加载相机配置失败");
}
device.Close();
}
运行结果:
加载相机配置成功
Open()
打开相机,如果成功,返回true;否则,返回false。
ShutdownGrab()
关闭流通道。与stream的Close()方法效果相同。
常用事件
CameraOpened
当相机打开时,触发该事件。
CameraClosed
当相机关闭时,触发该事件。
private void test_Click(object sender, EventArgs e)
{
List<IDeviceInfo> devices = Enumerator.EnumerateDevices();
IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
device.CameraOpened += Device_CameraOpened;
device.CameraClosed += Device_CameraClosed;
device.Open();
device.Close();
}
private void Device_CameraClosed(object sender, EventArgs e)
{
Console.WriteLine("相机关闭事件触发");
}
private void Device_CameraOpened(object sender, EventArgs e)
{
Console.WriteLine("相机打开事件触发");
}
运行结果:
相机打开事件触发
相机关闭事件触发