123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- #pragma once
- #include "CCalib.h"
- struct CALIB_R_PARAM {
- double dCalibPosX = 0;
- double dCalibPosY = 0;
- double dGrabPosZ = 0;
- int nTempId = 0;
- double dStartAngle = -40;
- double dEndAngle = 40;
- int nRotationNum = 10;
- XY_DOUBLE_STRUCT stRotateCenter = { 0,0 };
- double dRad = 0;
- };
- class __declspec(dllexport) CRCalib : public CCalib {
- public:
-
- enum RCalibType {
- StepCalib,
- RotationCenterCalib
- };
-
- CRCalib(int GetModuleType, string GetModuleName);
-
- ~CRCalib() {}
-
- virtual int StartCalib() override;
-
- virtual void SetParam() override;
-
- virtual LONG GetParam() override;
-
- LONG GetCenter(XY_DOUBLE_STRUCT& center) {
-
- if (m_stCalibParam_R.stRotateCenter.x == 0 && m_stCalibParam_R.stRotateCenter.y == 0) {
- return FAIL;
- }
-
- center = m_stCalibParam_R.stRotateCenter;
- return OK;
- }
-
- LONG GetOffsetByAngle(double dAngle, Step_RCalib_Result& stCoefficient_R);
-
- LONG CalResult();
-
- LONG CalRotationOffset(double angle, double& dx, double& dy);
-
- bool rotationPos(const XY_DOUBLE_STRUCT& point, const double& rotationRad, XY_DOUBLE_STRUCT& rotatedPoint);
-
-
- void SetCenter(XY_DOUBLE_STRUCT center) {
- m_stCalibParam_R.stRotateCenter = center;
- SetParam();
- }
-
- void SetXYCalib(CXYCalib* calib) {
- m_pXYCalib = calib;
- }
-
- void SetTempID(int tempID) {
- m_stCalibParam_R.nTempId = tempID;
- SetParam();
- }
-
- CALIB_R_PARAM GetCalibParam() { return m_stCalibParam_R; }
- LONG MoveToCalibPos();
- LONG CalibTest();
- private:
- void DataChangNotice(string strDbName, string strTableName);
- private:
- const int ROT_NUM = 8;
- vector<MODULE_CONFIG_STRUCT> m_vecConfigStruct;
- vector<Point2D> m_vetRotatinPoints;
- vector<double> m_vetRadius;
- vector<double> m_vetAngle;
-
- CALIB_R_PARAM m_stCalibParam_R;
- RCalibType m_calibType = RotationCenterCalib;
-
-
-
- vector<Step_RCalib_Result> m_stVetCalib_R;
- CXYCalib* m_pXYCalib = nullptr;
- };
|