Files
2024-05-09 16:38:39 +08:00

262 lines
5.2 KiB
C++

#ifndef HSI_FUNCTION_INCLUDED_
#define HSI_FUNCTION_INCLUDED_
#pragma once
#include "HSI.h"
enum E_EF3_PROBE_STATUS
{
E_EF3_PROBE_DONE,//0表示探针运行状态完成
E_EF3_PROBE_RUNNING,//1标示探针正在运行
};
class CHSIParameters
{
public:
CHSIParameters()
{
for (int i = 0; i < 12; i++)
{
m_I[i] = 0;
m_L[i] = 0;
m_S[i] = _T("");
m_D[i] = 0.0;
m_F[i] = 0.0;
}
}
virtual ~CHSIParameters()
{}
CHSIParameters& operator=(const CHSIParameters &Param)
{
for (int i = 0; i < 12; i++)
{
m_I[i] = Param.m_I[i];
m_L[i] = Param.m_L[i];
m_S[i] = Param.m_S[i];
m_D[i] = Param.m_D[i];
m_F[i] = Param.m_F[i];
}
return *this;
}
virtual bool CHSIParameters::operator==(const CHSIParameters &t) const
{
for (int i = 0; i < 12; i++)
{
if (m_I[i] != t.m_I[i] ||
m_L[i] != t.m_L[i] ||
m_S[i] != t.m_S[i] ||
m_D[i] != t.m_D[i] ||
m_F[i] != t.m_F[i])
return false;
}
return true;
}
int m_I[12];
long m_L[12];
CString m_S[12];
double m_D[12];
float m_F[12];
};
class CHSIMeasPoint
{
public:
CHSIMeasPoint()
{
m_X = 0.0;
m_Y = 0.0;
m_Z = 0.0;
m_I = 0.0;
m_J = 0.0;
m_K = 0.0;
m_V = 0.0;
m_W = 0.0;
m_T1 = 0.0;
m_T2 = 0.0;
};
virtual ~CHSIMeasPoint()
{}
;
CHSIMeasPoint& operator=(const CHSIMeasPoint &Source)
{
m_X = Source.m_X;
m_Y = Source.m_Y;
m_Z = Source.m_Z;
m_I = Source.m_I;
m_J = Source.m_J;
m_K = Source.m_K;
m_V = Source.m_V;
m_W = Source.m_W;
m_T1 = Source.m_T1;
m_T2 = Source.m_T2;
return *this;
}
virtual bool CHSIMeasPoint::operator==(const CHSIMeasPoint & t) const
{
return (m_X == t.m_X &&
m_Y == t.m_Y &&
m_Z == t.m_Z &&
m_I == t.m_I &&
m_J == t.m_J &&
m_K == t.m_K &&
m_V == t.m_V &&
m_W == t.m_W &&
m_T1 == t.m_T1 &&
m_T2 == t.m_T2);
}
double m_X;
double m_Y;
double m_Z;
double m_I;
double m_J;
double m_K;
double m_V;
double m_W;
double m_T1;
double m_T2;
};
class CHSITPParams
{
public:
CHSITPParams()
{
m_Overshoot = 0.0;
m_Approach = 0.0;
m_SeekSpeed = 0.0;
m_TravelSpeed = 0.0;
m_Retract = 0.0;
wcsncpy_s(m_PartProgram, HSI_MaxStringLength + 1, _T(""), HSI_MaxStringLength);
wcsncpy_s(m_FeatureID, HSI_MaxStringLength + 1, _T(""), HSI_MaxStringLength);
};
virtual ~CHSITPParams()
{}
;
CHSITPParams& operator=(const CHSITPParams & Source)
{
m_Overshoot = Source.m_Overshoot;
m_Approach = Source.m_Approach;
m_SeekSpeed = Source.m_SeekSpeed;
m_TravelSpeed = Source.m_TravelSpeed;
m_Retract = Source.m_Retract;
m_PrehitPnt = Source.m_PrehitPnt;
m_RetractPnt = Source.m_RetractPnt;
return *this;
};
virtual bool CHSITPParams::operator==(const CHSITPParams & t) const
{
return ((m_Overshoot == t.m_Overshoot) &&
(m_Approach == t.m_Approach) &&
(m_SeekSpeed == t.m_SeekSpeed) &&
(m_TravelSpeed == t.m_TravelSpeed) &&
(m_Retract == t.m_Retract) &&
(m_PrehitPnt == t.m_PrehitPnt) &&
(m_RetractPnt == t.m_RetractPnt)
);
};
double m_Overshoot;
double m_Approach;
double m_SeekSpeed;
double m_TravelSpeed;
double m_Retract;
CHSIMeasPoint m_PrehitPnt; // Need for TP scanning
CHSIMeasPoint m_RetractPnt;
TCHAR m_PartProgram[HSI_MaxStringLength + 1];
TCHAR m_FeatureID[HSI_MaxStringLength + 1];
};
class CHSITPMeasurePoint : public CHSITPParams
{
public:
CHSITPMeasurePoint()
{}
;
~CHSITPMeasurePoint()
{}
;
CHSITPMeasurePoint & operator= (const CHSITPMeasurePoint & Source)
{
CHSITPParams::operator =(Source);
m_MeasPoint = Source.m_MeasPoint;
return *this;
}
virtual bool CHSITPMeasurePoint::operator==(const CHSITPMeasurePoint & t) const
{
return (CHSITPParams::operator==(t) &&
m_MeasPoint == t.m_MeasPoint
);
}
CHSIMeasPoint m_MeasPoint;
};
class CHSITPManualConfig
{
public:
CHSITPManualConfig()
{
m_Retract = 0.0;
};
virtual ~CHSITPManualConfig()
{}
;
CHSITPManualConfig& operator=(const CHSITPManualConfig & Source)
{
m_Retract = Source.m_Retract;
return *this;
}
virtual bool CHSITPManualConfig::operator==(const CHSITPManualConfig & t) const
{
return (m_Retract == t.m_Retract);
};
double m_Retract;
};
class HSI_Function :public HSI
{
public:
HSI_Function();
~HSI_Function();
HSI_STATUS HSI_TP_Enable(bool bProbeEnable);
HSI_STATUS HSI_TP_Startup(void);
HSI_STATUS HSI_TP_GetActiveProbe(int &nProbe);
HSI_STATUS HSI_TP_SetActiveProbe(int nProbe);
HSI_STATUS HSI_TP_SetManualTouchData(double dRetract);
HSI_STATUS HSI_TP_SetTipOffset(double OffsetX, double OffsetY, double OffsetZ);
HSI_STATUS HSI_TP_GetTipOffset(double &OffsetX, double &OffsetY, double &OffsetZ);
HSI_STATUS HSI_TP_SetupMeasurePoint(double dBeginX, double dBeginY, double dBeginZ, double dEndX, double dEndY, double dEndZ, double dTraveSpeed, double dTouchSpeed, double dRetrackDis);
HSI_STATUS HSI_TP_DoMeasure(bool bWait);
HSI_STATUS HSI_TP_IsMeasuring(bool &bMeasuring);
HSI_STATUS HSI_TP_GetMeasureData(double &dBeginX, double &dBeginY, double &dBeginZ, double &dEndX, double &dEndY, double &dEndZ);
HSI_STATUS HSI_TP_Shutdown(void);
private:
double startPos[4];
double endPos[4];
double travelSpeed;
double seekSpeed;
double retractDis;
double retractManDis;
E_EF3_PROBE_STATUS probeRunStatus;//探锟斤拷锟斤拷锟斤拷状态
};
extern HSI_Function *g_pHSI_Function;
#endif