CCalib.h 3.7 KB

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