#pragma once #include "dt.h" #include <iostream> #include "CMath.h" #include "JAxis.h" #include "CForceControl.h" #include "CMachineCalibration.h" /* * ��ֱ�����࣬���ڽ��д�ֱ�����У���������� * ͨ���ڲ�ͬ�Ƕ��²����߶ȣ��������ֱ������� X ��� Y �����б�Ƕȡ� */ class __declspec(dllexport) CVerticalMeasure { public: /** * @brief ���캯������ʼ����ֱ�������� * * @param headId ͷ����Ψһ��ʶ�����������ֲ�ͬ�IJ�����Ԫ�� * @param forceController ָ�������ƶ����ָ�룬���ڿ��ƺ�ִ������ز����� * @param rotationAxis ָ����ת������ָ�룬���ڿ�����ת����˶��� */ CVerticalMeasure(int headId, CForceControl* forceController, CAxis* rotationAxis); /** * @brief �����������ͷŴ�ֱ��������ռ�õ���Դ�� */ ~CVerticalMeasure(); /** * @brief ��ʼ��ֱ����У������ * * �ú����������ת����ת��ָ���Ƕȣ��ƶ�����Ӧ�IJ���λ�ý��и߶Ȳ����� * ���ݲ����õ�����������㴹ֱ������� X ��� Y �����б�Ƕȡ� * * @return LONG У�����Ľ�����ɹ����� OK��ʧ�ܷ�����Ӧ�Ĵ����롣 */ LONG StartCalib(); /** * @brief �ӻ���У���ݿ��л�ȡ��ֱ��������IJ����� */ void GetParam(); /** * @brief ����ֱ�����õ��IJ������浽����У���ݿ��С� * * Ŀǰ�ú���Ϊ�գ��ɸ����������ʵ�֡� */ void SaveParam(); void Stop() { m_bStop = true; } void GetAngleResult(double& ZAxisAngleX, double& ZAxisAngleY) { ZAxisAngleX = m_calibrationParams.dZAxisAngleX; ZAxisAngleY = m_calibrationParams.dZAxisAngleY; } private: /** * @brief �����������ƶ�������λ�ò����и߶Ȳ����� * * @param testPosition ����λ�õĶ�ά���ꡣ * @param searchHeight �����߶ȣ����ڸ߶Ȳ��ԵIJο�ֵ�� * @param measuredHeight �����ʵ�ʲ����߶�ֵ�� * @return LONG ����������ɹ����� OK��ʧ�ܷ�����Ӧ�Ĵ����롣 */ LONG MoveToTestPositionAndMeasureHeight(const XY_DOUBLE_STRUCT& testPosition, double searchHeight, double& measuredHeight); /** * @brief ��������������ת����ת��ָ���Ƕȡ� * * @param targetAngle Ҫ��ת����Ŀ��Ƕȡ� * @return LONG ����������ɹ����� OK��ʧ�ܷ�����Ӧ�Ĵ����롣 */ LONG RotateAxisToAngle(double targetAngle); int m_headId; // ͷ����Ψһ��ʶ�� CForceControl* m_forceController = nullptr; // �����ƶ���ָ�� CAxis* m_rotationAxis = nullptr; // ��ת�����ָ�� CMachineCalibration* m_machineCalibrationDB = nullptr; // ����У���ݿ����ָ�� VERTICAL_MEASURE m_calibrationParams; // ��ֱ�����IJ����ṹ�� bool m_bStop = false; };