EntityCamera.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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 "SapClassBasic.h"
  9. /// ENTITY相机接口类
  10. class ICamera : public IBaseCamera
  11. {
  12. public:
  13. /// 初始化相机环境
  14. static bool initEnv();
  15. /// 关闭相机环境
  16. static bool closeEnv();
  17. /// 获取所有相机序列号
  18. static QVector<QString> cameraSerial();
  19. public:
  20. static SapManager* m_pManger;
  21. };
  22. class EntityCamera : public ICamera
  23. {
  24. private:
  25. EntityCamera();
  26. ~EntityCamera(void);
  27. CamParamConfig* m_pCamParamConfig; //配置参数类
  28. class DialogCamPasram* m_pDialogCamPasram; //相机参数设置窗口
  29. public:
  30. static EntityCamera* createCamera(QString serial);
  31. public:
  32. /// 获取配置参数类
  33. virtual IBaseCamParamConfig* camParamConfig();
  34. protected:
  35. /// 打开相机
  36. bool openCamera(QString serial);
  37. /// 关闭相机
  38. bool closeCamera();
  39. /// 初始化
  40. bool initialize();
  41. private:
  42. /// 加载参数
  43. virtual void loadCamParam();
  44. /// 保存参数
  45. virtual void saveCamParam();
  46. /// 设置相机工作模式
  47. virtual bool setWorkMode(IBaseCamCommon::CamWorkMode, bool Running = false) ;
  48. /// 相机工作模式
  49. virtual IBaseCamCommon::CamWorkMode workMode() ;
  50. /// 相机开始工作
  51. virtual bool startWork() ;
  52. /// 相机停止工作
  53. virtual bool stopWork() ;
  54. /// 相机序列号
  55. virtual QString serial() ;
  56. /// 重启相机
  57. virtual bool restartCamera() ;
  58. /// 获取一桢图像
  59. virtual bool captureImage(void** buf, int size) ;
  60. /// 获取图像宽
  61. virtual int imageWidth(void) ;
  62. /// 获取图像高
  63. virtual int imageHeight(void) ;
  64. /// 获取图像通道数
  65. virtual int imageChannels(void) ;
  66. /// 显示设置参数窗口页面
  67. virtual void showParamConfigWindow(int mode = 0) ;
  68. /// 获取相机最大分辨率
  69. virtual bool getMaxSize(int& w, int& h) ;
  70. /// 设置相机分辨率
  71. virtual bool setResolution(int w, int h) ;
  72. /// 获取已注册图像回调的数量
  73. virtual int getReceCallBackSIze();
  74. ///设置接收图像数据回调函数
  75. virtual void setReceCallBack(IBaseCamCommon::receImgCallBack callBack, long long userParam, QString userID = "main");
  76. ///设置接收Log数据回调函数
  77. virtual void setReceLogCallBack(IBaseCamCommon::receLogCallBack callBack, long long userParam) ;//设置接收数据回调函数
  78. /// 软件触发采图
  79. virtual void softTriggerCap(QString userID = "main") ;
  80. private:
  81. int m_nImageChannels;
  82. QString m_strSerial;
  83. IBaseCamCommon::CamWorkMode mWorkMode; //工作模式
  84. long long mUserParam; //回调函数用户自定义参数
  85. long long mLogUserParam; //回调Log函数用户自定义参数
  86. QString m_strUserID;
  87. IBaseCamCommon::CamImgData mImgCapBuffer;//捕获图像缓存
  88. QVector <IBaseCamCommon::ImgCallBack*> m_pImgCallBack;//接收数据回调函数
  89. private:
  90. bool SN_ToSeverName(QString strSN, char* ServerName);
  91. SapBuffer* m_pBuffers;
  92. SapTransfer* m_Xfer;
  93. SapColorConversion* m_pColorconv;
  94. BYTE* TMPBUF;
  95. int m_iImageWidth, m_iImageHeight;
  96. static void XferCallback(SapXferCallbackInfo* pInfo);
  97. static void SignalCallback(SapAcqCallbackInfo* pInfo);
  98. void GetSignalStatus();
  99. void GetSignalStatus(SapAcquisition::SignalStatus signalStatus);
  100. BOOL m_IsSignalDetected; // TRUE 如果检测到摄像机信号
  101. public:
  102. SapAcqDevice* m_pCamera;
  103. SapFeature* m_pFeature;
  104. private:
  105. //接收数据回调函数
  106. IBaseCamCommon::receImgCallBack m_pReceImgFunction;
  107. //接收Log回调函数
  108. IBaseCamCommon::receLogCallBack m_pReceLogFunction;
  109. /// 执行回调函数
  110. void execCallFunction(IBaseCamCommon::CamImgData*, int frameCount);
  111. /// 执行Log回调函数
  112. void execLogCallFunction(QString serial, QString Massage, long long userParam);
  113. /// 设置连续采集图像
  114. bool setToFreeRunMode();
  115. /// 设置软件触发模式采图
  116. bool setToSoftwareTrigerMode();
  117. /// 设置硬件触发
  118. bool setToHardwareTrigerMode();
  119. };