EntityCamera.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. #pragma once
  2. #include "Camera_Global.h"
  3. #include "../../Common/CameraBaseClass/IBaseCamCommon.h"
  4. #include "../../Common/CameraBaseClass/IBaseCamera.h"
  5. #include "CamParamConfig.h"
  6. #include "DialogCamPasram.h"
  7. //////////////////////////////////////////////////////////////////////////
  8. #include "pylon/PylonIncludes.h"
  9. #ifdef PYLON_WIN_BUILD
  10. #include "pylon/PylonGUI.h"
  11. #endif
  12. #include "pylon/ConfigurationEventHandler.h"
  13. #include "pylon/CameraEventHandler.h"
  14. #include "pylon/ImageEventHandler.h"
  15. using namespace Pylon;
  16. using namespace GenApi;
  17. /// ENTITY相机接口类
  18. class ICamera : public IBaseCamera
  19. {
  20. public:
  21. /// 初始化相机环境
  22. static bool initEnv();
  23. /// 关闭相机环境
  24. static bool closeEnv();
  25. /// 获取所有相机序列号
  26. static QVector<QString> cameraSerial();
  27. public:
  28. CInstantCamera* m_pCameraCtrl; // 相机实例
  29. /// 获取相机控制
  30. CInstantCamera* cameraCtrl()
  31. {
  32. return m_pCameraCtrl;
  33. }
  34. };
  35. class EntityCamera : public ICamera, public CImageEventHandler, public CConfigurationEventHandler
  36. {
  37. private:
  38. EntityCamera();
  39. ~EntityCamera(void);
  40. CamParamConfig* m_pCamParamConfig; //配置参数类
  41. class DialogCamPasram* m_pDialogCamPasram; //相机参数设置窗口
  42. public:
  43. static EntityCamera* createCamera(QString serial);
  44. public:
  45. /// 获取配置参数类
  46. virtual IBaseCamParamConfig* camParamConfig();
  47. protected:
  48. /// 打开相机
  49. bool openCamera(QString serial);
  50. /// 关闭相机
  51. bool closeCamera();
  52. /// 初始化
  53. bool initialize();
  54. private:
  55. /// 加载参数
  56. virtual void loadCamParam();
  57. /// 保存参数
  58. virtual void saveCamParam();
  59. /// 设置相机工作模式
  60. virtual bool setWorkMode(IBaseCamCommon::CamWorkMode, bool Running = false) ;
  61. /// 相机工作模式
  62. virtual IBaseCamCommon::CamWorkMode workMode() ;
  63. /// 相机开始工作
  64. virtual bool startWork() ;
  65. /// 相机停止工作
  66. virtual bool stopWork() ;
  67. /// 相机序列号
  68. virtual QString serial() ;
  69. /// 重启相机
  70. virtual bool restartCamera() ;
  71. /// 获取一桢图像
  72. virtual bool captureImage(void** buf, int size) ;
  73. /// 获取图像宽
  74. virtual int imageWidth(void) ;
  75. /// 获取图像高
  76. virtual int imageHeight(void) ;
  77. /// 获取图像通道数
  78. virtual int imageChannels(void) ;
  79. /// 显示设置参数窗口页面
  80. virtual void showParamConfigWindow(int mode = 0) ;
  81. /// 获取相机最大分辨率
  82. virtual bool getMaxSize(int& w, int& h) ;
  83. /// 设置相机分辨率
  84. virtual bool setResolution(int w, int h) ;
  85. /// 获取已注册图像回调的数量
  86. virtual int getReceCallBackSIze();
  87. ///设置接收图像数据回调函数
  88. virtual void setReceCallBack(IBaseCamCommon::receImgCallBack callBack, long long userParam, QString userID = "main") ;
  89. ///设置接收Log数据回调函数
  90. virtual void setReceLogCallBack(IBaseCamCommon::receLogCallBack callBack, long long userParam) ;//设置接收数据回调函数
  91. /// 软件触发采图
  92. virtual void softTriggerCap(QString userID = "main") ;
  93. private:
  94. int m_nImageChannels;
  95. QString m_strSerial;
  96. IBaseCamCommon::CamWorkMode mWorkMode; //工作模式
  97. long long mUserParam; //回调函数用户自定义参数
  98. long long mLogUserParam; //回调Log函数用户自定义参数
  99. QString m_strUserID;
  100. IBaseCamCommon::CamImgData mImgCapBuffer;//捕获图像缓存
  101. QVector <IBaseCamCommon::ImgCallBack*> m_pImgCallBack;//接收数据回调函数
  102. private:
  103. //static void __stdcall ImageCallBackEx(unsigned char* pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser);
  104. /// 图像数据读取 继承CImageEventHandler类函数
  105. virtual void OnImageGrabbed(CInstantCamera& camera, const CGrabResultPtr& grabResult);
  106. //handles device removal events.
  107. virtual void OnCameraDeviceRemoved(CInstantCamera& camera);
  108. public:
  109. private:
  110. //接收数据回调函数
  111. //IBaseCamCommon::receImgCallBack m_pReceImgFunction;
  112. //接收Log回调函数
  113. IBaseCamCommon::receLogCallBack m_pReceLogFunction;
  114. /// 执行回调函数
  115. void execCallFunction(IBaseCamCommon::CamImgData*, int frameCount);
  116. /// 执行Log回调函数
  117. void execLogCallFunction(QString serial, QString Massage, long long userParam);
  118. /// 设置连续采集图像
  119. bool setToFreeRunMode();
  120. /// 设置软件触发模式采图
  121. bool setToSoftwareTrigerMode();
  122. /// 设置硬件触发
  123. bool setToHardwareTrigerMode();
  124. };