• 大华相机C#学习之IDevice类


    获取方式

    Enumerator.GetDeviceByGigeIP()

            通过IP地址获取设备对象。

    1. private void test_Click(object sender, EventArgs e)
    2. {
    3. devices=Enumerator.EnumerateDevices();
    4. device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
    5. }

    常用属性

     DeviceInfo 

            获取设备的信息、


    IsGrabbing

            当前设备如果开启码流捕获,返回true;否则,返回false。


    IsOpen

            当前设备打开,返回true;否则,返回false。


    IsTriggerOn

            当前设备如果开启触发模式,返回true;否则,返回false。如果此属性为on,那么当码流获取图像时,不需要用户控制,相机一直读取图像;如果需要人为控制,一个信号采集一张图,那么需要将IsTriggerOn设为on,并设置其他参数。此参数可以通过TriggerSet属性获取的ITrigger对象进行控制。

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. List devices=Enumerator.EnumerateDevices();
    4. IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.10");
    5. Console.WriteLine("------------------------------------------------------------");
    6. Console.WriteLine("打开相机前,isTriggerOn属性:"+device.IsTriggerOn);
    7. device.Open();
    8. Thread.Sleep(100);
    9. Console.WriteLine("打开相机后,isTriggerOn属性:" + device.IsTriggerOn);
    10. ITrigger trigger=device.TriggerSet;
    11. Thread.Sleep(100);
    12. Console.WriteLine("------------------------------------------------------------");
    13. Console.WriteLine("获取设备trigger对象后");
    14. Console.WriteLine("trigger的isOpen属性为"+trigger.IsOpen);
    15. Console.WriteLine("device的isTriggerOn属性为"+device.IsTriggerOn);
    16. trigger.Close();
    17. Thread.Sleep(100);
    18. Console.WriteLine("------------------------------------------------------------");
    19. Console.WriteLine("执行trigger的close()方法后");
    20. Console.WriteLine("trigger的isOpen属性为" + trigger.IsOpen);
    21. Console.WriteLine("device的isTriggerOn属性为" + device.IsTriggerOn);
    22. trigger.Open(TriggerSourceEnum.Software);
    23. Thread.Sleep(100);
    24. Console.WriteLine("------------------------------------------------------------");
    25. Console.WriteLine("执行trigger的open()方法后");
    26. Console.WriteLine("trigger的isOpen属性为" + trigger.IsOpen);
    27. Console.WriteLine("device的isTriggerOn属性为" + device.IsTriggerOn);
    28. }
    29. 运行结果:
    30. ------------------------------------------------------------
    31. 打开相机前,isTriggerOn属性:False
    32. 打开相机后,isTriggerOn属性:True
    33. ------------------------------------------------------------
    34. 获取设备trigger对象后
    35. trigger的isOpen属性为True
    36. device的isTriggerOn属性为True
    37. ------------------------------------------------------------
    38. 执行trigger的close()方法后
    39. trigger的isOpen属性为False
    40. device的isTriggerOn属性为False
    41. ------------------------------------------------------------
    42. 执行trigger的open()方法后
    43. trigger的isOpen属性为True
    44. device的isTriggerOn属性为True

    StreamGrabber

            获取设备的取流对象。类型为IStream。


    ParameterCollection

            获取相机的配置操作集。


    TriggerSet(未理解Open方法参数有哪些)

            获取触发操作集合,返回ITrigger接口,以下为ITrigger接口对象的方法。


     常用方法

    ExecuteSoftwareTrigger()        

            执行单帧软触发,执行成功,返回true;否则,返回false。与Device的trigger对象执行ExecuteSoftwareTrigger()方法的效果一样。


    GrabUsingGrabLoopThread()

            使用内部线程捕获帧数据。简单点说,就是使用这方法,可以在不获取stream对象的情况下开启码流捕捉,其效果等于stream.Start()。


    SaveDeviceCfg(string strFullFileName)

            将相机配置保存到strFullFileName指示的路径上。(需先打开相机,否则,保存失败)

    1. private void test_Click(object sender, EventArgs e)
    2. {
    3. devices=Enumerator.EnumerateDevices();
    4. device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
    5. device.Open();
    6. int rst=device.SaveDeviceCfg("config.xml");
    7. if (rst==0)
    8. {
    9. Console.WriteLine("保存相机配置成功");
    10. }
    11. else
    12. {
    13. Console.WriteLine("保存相机配置失败");
    14. }
    15. device.Close();
    16. }
    17. 运行结果:
    18. 保存相机配置成功

    LoadDeviceCfg(string strFullFileName,ref List oErrPropertyList)

            从strFullFileName路径的文件读取相机配置到IDevice中,如果成功,返回0;否则,返回其他值。(需先打开相机再读取配置,否则,会失败)

    1. private void test_Click(object sender, EventArgs e)
    2. {
    3. List devices = Enumerator.EnumerateDevices();
    4. IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
    5. device.Open();
    6. List<string> errorList = new List<string>();
    7. int rst=device.LoadDeviceCfg("config.xml",ref errorList);
    8. if (rst == 0)
    9. {
    10. Console.WriteLine("加载相机配置成功");
    11. }
    12. else
    13. {
    14. Console.WriteLine("加载相机配置失败");
    15. }
    16. device.Close();
    17. }
    18. 运行结果:
    19. 加载相机配置成功

    Open()

            打开相机,如果成功,返回true;否则,返回false。


    ShutdownGrab()

            关闭流通道。与stream的Close()方法效果相同。


    常用事件

    CameraOpened

            当相机打开时,触发该事件。


    CameraClosed

            当相机关闭时,触发该事件。

    1. private void test_Click(object sender, EventArgs e)
    2. {
    3. List devices = Enumerator.EnumerateDevices();
    4. IDevice device = Enumerator.GetDeviceByGigeIP("192.168.0.11");
    5. device.CameraOpened += Device_CameraOpened;
    6. device.CameraClosed += Device_CameraClosed;
    7. device.Open();
    8. device.Close();
    9. }
    10. private void Device_CameraClosed(object sender, EventArgs e)
    11. {
    12. Console.WriteLine("相机关闭事件触发");
    13. }
    14. private void Device_CameraOpened(object sender, EventArgs e)
    15. {
    16. Console.WriteLine("相机打开事件触发");
    17. }
    18. 运行结果:
    19. 相机打开事件触发
    20. 相机关闭事件触发

  • 相关阅读:
    让你说一说Sass、Less 的区别是什么,你知道吗?
    mathtype在word内的简单使用
    Go 语言图片处理简明教程
    逍遥自在学C语言 | break-循环的中断与跳转
    【Kotlin】从字节码角度理解kotlin构造函数、成员变量、init代码块执行顺序
    RabbitMQ 安装
    杭电oj 2040 亲和数 C语言
    【算法练习Day31】单调递增的数字&&买卖股票的最佳时机含手续费&&监控二叉树
    ERP对接淘宝/天猫/京东/拼多多商品详情数据API接口
    什么是浏览器的缓存机制
  • 原文地址:https://blog.csdn.net/lgh65200/article/details/137876084