当前位置:   article > 正文

大华相机C#学习之IDevice类

大华相机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<IDeviceInfo> 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<string> oErrPropertyList)

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

  1. private void test_Click(object sender, EventArgs e)
  2. {
  3. List<IDeviceInfo> 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<IDeviceInfo> 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. 相机关闭事件触发

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/458631
推荐阅读
相关标签
  

闽ICP备14008679号