123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #pragma once
- //#include "McGlobal.h"
- #include "CAxis.h"
- #include "CCameraBase.h"
- #include "CManageDB.h"
- #include "CMachineCalibration.h"
- #include "CPrStrategy.h"
- #include "CMathCalc.h"
- #include "ICalibration.h"
- #include "CPxielLocation.h"
- #include "CHardwareList.h"
- /*
- * 标定类
- * 功能描述:
- * 1、执行标定动作
- * 2、保存标定结果
- * 3、坐标转换接口(虽然代码中未直接体现坐标转换接口的具体实现,但类设计意图包含此功能)
- */
- using namespace ns_db;
- using namespace ns_pr;
- class __declspec(dllexport) CCalib
- {
- public:
- /**
- * @brief 构造函数
- * @param GetModuleType 模块类型,用于标识不同的模块,具体含义取决于业务逻辑
- * @param GetModuleName 模块名称,用于区分不同的模块
- */
- CCalib(int GetModuleType, string GetModuleName);
- /**
- * @brief 析构函数
- * 由于析构函数为空,没有特殊的资源释放操作,若后续添加了动态分配的资源,需要在此处进行释放
- */
- ~CCalib() {}
- /**
- * @brief 设置 X 和 Y 轴
- * @param xAxis X 轴对象指针
- * @param yAxis Y 轴对象指针
- */
- void SetXYAxis(CAxis* xAxis, CAxis* yAxis) {
- m_pXAxis = xAxis;
- m_pYAxis = yAxis;
- };
- /**
- * @brief 设置 X、Y 和 Z 轴
- * @param xAxis X 轴对象指针
- * @param yAxis Y 轴对象指针
- * @param zAxis Z 轴对象指针
- */
- void SetXYZAxis(CAxis* xAxis, CAxis* yAxis, CAxis* zAxis) {
- m_pXAxis = xAxis;
- m_pYAxis = yAxis;
- m_pZAxis = zAxis;
- };
- /**
- * @brief 设置 X、Y 和 R 轴
- * @param xAxis X 轴对象指针
- * @param yAxis Y 轴对象指针
- * @param rAxis R 轴对象指针
- */
- void SetXYRAxis(CAxis* xAxis, CAxis* yAxis, CAxis* rAxis) {
- m_pXAxis = xAxis;
- m_pYAxis = yAxis;
- m_pRAxis = rAxis;
- };
- /**
- * @brief 设置 X、Y、Z 和 R 轴
- * @param xAxis X 轴对象指针
- * @param yAxis Y 轴对象指针
- * @param zAxis Z 轴对象指针
- * @param rAxis R 轴对象指针
- */
- void SetXYZRAxis(CAxis* xAxis, CAxis* yAxis, CAxis* zAxis, CAxis* rAxis) {
- m_pXAxis = xAxis;
- m_pYAxis = yAxis;
- m_pZAxis = zAxis;
- m_pRAxis = rAxis;
- }
- /**
- * @brief 设置相机对象
- * @param camera 相机对象指针
- * 该函数还预留了创建 PR 策略对象的代码位置,后续可根据需求添加具体实现
- */
- void SetCamera(CCameraBase* camera) {
- m_pCamera = camera;
- //m_pPRStrategy = new
- }
- /**
- * @brief 开始标定操作
- * @return 标定操作的返回值,具体含义取决于业务逻辑,通常 0 表示成功,非 0 表示失败
- * 该函数为纯虚函数,需要在派生类中实现具体的标定逻辑
- */
- virtual int StartCalib() { return OK; };
- /**
- * @brief 获取标定参数
- * 该函数为纯虚函数,需要在派生类中实现具体的获取参数逻辑
- */
- virtual LONG GetParam() = 0;
- /**
- * @brief 设置标定参数
- * 该函数为纯虚函数,需要在派生类中实现具体的设置参数逻辑
- */
- virtual void SetParam() = 0;
- virtual void Stop() { m_bStop = true; }
- protected:
- LONG SearchTemp(int iTempID, CCameraBase* camera, bool isToCameraCenter, XY_DOUBLE_STRUCT& outResult);
- protected:
- int m_nID = 0; // 模块的 ID,用于唯一标识不同的模块
- string m_sName = ""; // 模块的名称,用于区分不同的模块
- CAxis* m_pXAxis = nullptr; // X 轴对象指针
- CAxis* m_pYAxis = nullptr; // Y 轴对象指针
- CAxis* m_pZAxis = nullptr; // Z 轴对象指针
- CAxis* m_pRAxis = nullptr; // R 轴对象指针
- CCameraBase* m_pCamera = nullptr; // 相机对象指针
- ICalibration* m_pCalibration = nullptr; // 标定接口对象指针
- CPixelLocation* m_pPixelLocation = nullptr; // 像素位置对象指针
- CManageDB* m_pManageDB = nullptr;
- CMachineCalibration* m_pCalibDB = nullptr;
- bool m_bStop = false;
- int imageNum = 0;
- // 注释中的函数声明,可能用于定位操作,未在类中实现
- //LONG Location(int temp, ImageInfo image, X_Y_ANGLE_STRUCT outResult);
- };
|