CCalib.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #pragma once
  2. //#include "McGlobal.h"
  3. #include "CAxis.h"
  4. #include "CCameraBase.h"
  5. #include "CManageDB.h"
  6. #include "CMachineCalibration.h"
  7. #include "CPrStrategy.h"
  8. #include "CMathCalc.h"
  9. #include "ICalibration.h"
  10. #include "CPxielLocation.h"
  11. #include "CHardwareList.h"
  12. #include "CMessageBox.h"
  13. /*
  14. * 标定类
  15. * 功能描述:
  16. * 1、执行标定动作
  17. * 2、保存标定结果
  18. * 3、坐标转换接口(虽然代码中未直接体现坐标转换接口的具体实现,但类设计意图包含此功能)
  19. */
  20. using namespace ns_db;
  21. using namespace ns_pr;
  22. class __declspec(dllexport) CCalib
  23. {
  24. public:
  25. /**
  26. * @brief 构造函数
  27. * @param GetModuleType 模块类型,用于标识不同的模块,具体含义取决于业务逻辑
  28. * @param GetModuleName 模块名称,用于区分不同的模块
  29. */
  30. CCalib(int GetModuleType, string GetModuleName);
  31. /**
  32. * @brief 析构函数
  33. * 由于析构函数为空,没有特殊的资源释放操作,若后续添加了动态分配的资源,需要在此处进行释放
  34. */
  35. ~CCalib() {}
  36. /**
  37. * @brief 设置 X 和 Y 轴
  38. * @param xAxis X 轴对象指针
  39. * @param yAxis Y 轴对象指针
  40. */
  41. void SetXYAxis(CAxis* xAxis, CAxis* yAxis) {
  42. m_pXAxis = xAxis;
  43. m_pYAxis = yAxis;
  44. };
  45. /**
  46. * @brief 设置 X、Y 和 Z 轴
  47. * @param xAxis X 轴对象指针
  48. * @param yAxis Y 轴对象指针
  49. * @param zAxis Z 轴对象指针
  50. */
  51. void SetXYZAxis(CAxis* xAxis, CAxis* yAxis, CAxis* zAxis) {
  52. m_pXAxis = xAxis;
  53. m_pYAxis = yAxis;
  54. m_pZAxis = zAxis;
  55. };
  56. /**
  57. * @brief 设置 X、Y 和 R 轴
  58. * @param xAxis X 轴对象指针
  59. * @param yAxis Y 轴对象指针
  60. * @param rAxis R 轴对象指针
  61. */
  62. void SetXYRAxis(CAxis* xAxis, CAxis* yAxis, CAxis* rAxis) {
  63. m_pXAxis = xAxis;
  64. m_pYAxis = yAxis;
  65. m_pRAxis = rAxis;
  66. };
  67. /**
  68. * @brief 设置 X、Y、Z 和 R 轴
  69. * @param xAxis X 轴对象指针
  70. * @param yAxis Y 轴对象指针
  71. * @param zAxis Z 轴对象指针
  72. * @param rAxis R 轴对象指针
  73. */
  74. void SetXYZRAxis(CAxis* xAxis, CAxis* yAxis, CAxis* zAxis, CAxis* rAxis) {
  75. m_pXAxis = xAxis;
  76. m_pYAxis = yAxis;
  77. m_pZAxis = zAxis;
  78. m_pRAxis = rAxis;
  79. }
  80. /**
  81. * @brief 设置相机对象
  82. * @param camera 相机对象指针
  83. * 该函数还预留了创建 PR 策略对象的代码位置,后续可根据需求添加具体实现
  84. */
  85. void SetCamera(CCameraBase* camera) {
  86. m_pCamera = camera;
  87. //m_pPRStrategy = new
  88. }
  89. /**
  90. * @brief 开始标定操作
  91. * @return 标定操作的返回值,具体含义取决于业务逻辑,通常 0 表示成功,非 0 表示失败
  92. * 该函数为纯虚函数,需要在派生类中实现具体的标定逻辑
  93. */
  94. virtual int StartCalib() { return OK; };
  95. /**
  96. * @brief 获取标定参数
  97. * 该函数为纯虚函数,需要在派生类中实现具体的获取参数逻辑
  98. */
  99. virtual LONG GetParam() = 0;
  100. /**
  101. * @brief 设置标定参数
  102. * 该函数为纯虚函数,需要在派生类中实现具体的设置参数逻辑
  103. */
  104. virtual void SetParam() = 0;
  105. virtual void Stop() { m_bStop = true; }
  106. protected:
  107. LONG SearchTemp(int iTempID, CCameraBase* camera, bool isToCameraCenter, X_Y_ANGLE_STRUCT& outResult);
  108. LONG SearchTemp(int iTempID, CCameraBase* camera, bool isToCameraCenter, XY_DOUBLE_STRUCT& outResult);
  109. void PopWarn(AlarmID iId, std::string strDescribe, std::string otherInfo = "",
  110. LogStream::LogLevel iLevel = LogStream::LogLevel::Error, int buttons = BUTTON_TYPE::CLOSE_BUTTON,
  111. std::string strTip = "", std::string strHelp = "");
  112. protected:
  113. int m_nID = 0; // 模块的 ID,用于唯一标识不同的模块
  114. string m_sName = ""; // 模块的名称,用于区分不同的模块
  115. CAxis* m_pXAxis = nullptr; // X 轴对象指针
  116. CAxis* m_pYAxis = nullptr; // Y 轴对象指针
  117. CAxis* m_pZAxis = nullptr; // Z 轴对象指针
  118. CAxis* m_pRAxis = nullptr; // R 轴对象指针
  119. CCameraBase* m_pCamera = nullptr; // 相机对象指针
  120. ICalibration* m_pCalibration = nullptr; // 标定接口对象指针
  121. CPixelLocation* m_pPixelLocation = nullptr; // 像素位置对象指针
  122. CManageDB* m_pManageDB = nullptr;
  123. CMachineCalibration* m_pCalibDB = nullptr;
  124. CCalibrationConfig* m_pCCalibrationConfig = nullptr;
  125. CMessageBox* m_pMessageBox = nullptr;
  126. bool m_bStop = false;
  127. int imageNum = 0;
  128. // 注释中的函数声明,可能用于定位操作,未在类中实现
  129. //LONG Location(int temp, ImageInfo image, X_Y_ANGLE_STRUCT outResult);
  130. };