大华相机C#学习之IDevice类

发布于:2024-04-30 ⋅ 阅读:(26) ⋅ 点赞:(0)

获取方式

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("相机打开事件触发");
}

运行结果:
相机打开事件触发
相机关闭事件触发


网站公告

今日签到

点亮在社区的每一天
去签到