EntityCamera.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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 "VimbaCPP.h"
  9. #include <VimbaCPPCommon.h>
  10. #include <Camera.h>
  11. #include <Interface.h>
  12. #include <VimbaSystem.h>
  13. #include <FeatureContainer.h>
  14. #include <ICameraFactory.h>
  15. #include <ICameraListObserver.h>
  16. #include <IInterfaceListObserver.h>
  17. #include <IFeatureObserver.h>
  18. #include <IFrameObserver.h>
  19. #include <Frame.h>
  20. #include <CameraObserver.h>
  21. #include <FrameObserver.h>
  22. using namespace AVT;
  23. using namespace AVT::VmbAPI;
  24. using namespace AVT::VmbAPI::Examples;
  25. /// ENTITY相机接口类
  26. class ICamera : public IBaseCamera
  27. {
  28. public:
  29. /// 初始化相机环境
  30. static bool initEnv();
  31. /// 关闭相机环境
  32. static bool closeEnv();
  33. /// 获取所有相机序列号
  34. static QVector<QString> cameraSerial();
  35. public:
  36. // A reference to our Vimba singleton
  37. VimbaSystem& m_system;
  38. // The currently streaming camera
  39. CameraPtr m_pCamera;
  40. };
  41. class EntityCamera : public ICamera
  42. {
  43. private:
  44. EntityCamera();
  45. ~EntityCamera(void);
  46. CamParamConfig* m_pCamParamConfig; //配置参数类
  47. class DialogCamPasram* m_pDialogCamPasram; //相机参数设置窗口
  48. public:
  49. static EntityCamera* createCamera(QString serial);
  50. public:
  51. /// 获取配置参数类
  52. virtual IBaseCamParamConfig* camParamConfig();
  53. protected:
  54. /// 打开相机
  55. bool openCamera(QString serial);
  56. /// 关闭相机
  57. bool closeCamera();
  58. /// 初始化
  59. bool initialize();
  60. private:
  61. /// 加载参数
  62. virtual void loadCamParam();
  63. /// 保存参数
  64. virtual void saveCamParam();
  65. /// 设置相机工作模式
  66. virtual bool setWorkMode(IBaseCamCommon::CamWorkMode, bool Running = false) ;
  67. /// 相机工作模式
  68. virtual IBaseCamCommon::CamWorkMode workMode() ;
  69. /// 相机开始工作
  70. virtual bool startWork() ;
  71. /// 相机停止工作
  72. virtual bool stopWork() ;
  73. /// 相机序列号
  74. virtual QString serial() ;
  75. /// 重启相机
  76. virtual bool restartCamera() ;
  77. /// 获取一桢图像
  78. virtual bool captureImage(void** buf, int size) ;
  79. /// 获取图像宽
  80. virtual int imageWidth(void) ;
  81. /// 获取图像高
  82. virtual int imageHeight(void) ;
  83. /// 获取图像通道数
  84. virtual int imageChannels(void) ;
  85. /// 显示设置参数窗口页面
  86. virtual void showParamConfigWindow(int mode = 0) ;
  87. /// 获取相机最大分辨率
  88. virtual bool getMaxSize(int& w, int& h) ;
  89. /// 设置相机分辨率
  90. virtual bool setResolution(int w, int h) ;
  91. /// 获取已注册图像回调的数量
  92. virtual int getReceCallBackSIze();
  93. ///设置接收图像数据回调函数
  94. virtual void setReceCallBack(IBaseCamCommon::receImgCallBack callBack, long long userParam, QString userID = "main") ;
  95. ///设置接收Log数据回调函数
  96. virtual void setReceLogCallBack(IBaseCamCommon::receLogCallBack callBack, long long userParam) ;//设置接收数据回调函数
  97. /// 软件触发采图
  98. virtual void softTriggerCap(QString userID = "main") ;
  99. private:
  100. int m_nImageChannels;
  101. QString m_strSerial;
  102. IBaseCamCommon::CamWorkMode mWorkMode; //工作模式
  103. long long mUserParam; //回调函数用户自定义参数
  104. long long mLogUserParam; //回调Log函数用户自定义参数
  105. QString m_strUserID;
  106. IBaseCamCommon::CamImgData mImgCapBuffer;//捕获图像缓存
  107. QVector <IBaseCamCommon::ImgCallBack*> m_pImgCallBack;//接收数据回调函数
  108. private:
  109. static void onGetFrame(const Dahua::GenICam::CFrame& pFrame, const void* pUser);
  110. public:
  111. private:
  112. //接收数据回调函数
  113. //IBaseCamCommon::receImgCallBack m_pReceImgFunction;
  114. //接收Log回调函数
  115. IBaseCamCommon::receLogCallBack m_pReceLogFunction;
  116. /// 执行回调函数
  117. void execCallFunction(IBaseCamCommon::CamImgData*, int frameCount);
  118. /// 执行Log回调函数
  119. void execLogCallFunction(QString serial, QString Massage, long long userParam);
  120. /// 设置连续采集图像
  121. bool setToFreeRunMode();
  122. /// 设置软件触发模式采图
  123. bool setToSoftwareTrigerMode();
  124. /// 设置硬件触发
  125. bool setToHardwareTrigerMode();
  126. };