#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); };