大华相机C#学习之IDevice类

获取方式

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

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

相关推荐

  1. 大华相机C#学习Enumerator

    2024-04-20 16:26:02       36 阅读
  2. 大华相机C#学习IStream

    2024-04-20 16:26:02       28 阅读
  3. 掘根宝典C++模板大全

    2024-04-20 16:26:02       29 阅读
  4. C++】相关知识

    2024-04-20 16:26:02       26 阅读
  5. c++学习特殊设计与类型转换

    2024-04-20 16:26:02       57 阅读
  6. C++string

    2024-04-20 16:26:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 16:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 16:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 16:26:02       82 阅读
  4. Python语言-面向对象

    2024-04-20 16:26:02       91 阅读

热门阅读

  1. Spring Cloud 面试题(一)

    2024-04-20 16:26:02       31 阅读
  2. 代码随想录 day44 第九章 动态规划 part06

    2024-04-20 16:26:02       35 阅读
  3. Spring框架中的11种设计模式(设计模式之美)

    2024-04-20 16:26:02       34 阅读
  4. 【LeetCode热题100】【贪心算法】划分字母区间

    2024-04-20 16:26:02       33 阅读
  5. vue admin pro 角色不同显示不同页面

    2024-04-20 16:26:02       36 阅读
  6. 【LeetCode热题100】【图论】岛屿数量

    2024-04-20 16:26:02       30 阅读
  7. 2-内核开发-第一个内核Hello模块开发案例

    2024-04-20 16:26:02       26 阅读
  8. Avi Wigderson:理论计算科学的先驱者与图灵奖得主

    2024-04-20 16:26:02       34 阅读
  9. 五个关于CSS3的常见面试题及其答案

    2024-04-20 16:26:02       27 阅读