// Proto_Util.h: interface for the CDataLink class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_) #define AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_ #define MV_TRACE if ( g_pLogger && g_pLogger->m_lLogMask & LOGACTIONS ) g_pLogger->SendAndFlushPerMode #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "logger.h" #include "SsiStatus.h" enum SETTLE_STATUS { NOTSETTLED = 0, SETTLED, TIMEDOUT }; // CSettleStageParams and CSettleStage are copied from QVI, but QVI is based on millionths of and inch // and we will use microns for MV class CSettleStageParams { public: CSettleStageParams() { EDGE_RETRY_TIMEOUT_X = 800; EDGE_RETRY_TIMEOUT_Y = 800; EDGE_RETRY_TIMEOUT_Z = 800; EDGE_RETRY_TIMEOUT_MAG = 800; EDGE_RETRY_BANDWIDTH_X = 1; EDGE_RETRY_BANDWIDTH_Y = 1; EDGE_RETRY_BANDWIDTH_Z = 1; EDGE_RETRY_BANDWIDTH_MAG = 1; EDGE_RETRY_COUNT_X = 1; EDGE_RETRY_COUNT_Y = 1; EDGE_RETRY_COUNT_Z = 1; EDGE_RETRY_COUNT_MAG = 1; }; long EDGE_RETRY_TIMEOUT_X; //300 long EDGE_RETRY_TIMEOUT_Y; //300 long EDGE_RETRY_TIMEOUT_Z; //300 long EDGE_RETRY_TIMEOUT_MAG; //300 long EDGE_RETRY_BANDWIDTH_X; //50 long EDGE_RETRY_BANDWIDTH_Y; //50 long EDGE_RETRY_BANDWIDTH_Z; //50 long EDGE_RETRY_BANDWIDTH_MAG; //50 long EDGE_RETRY_COUNT_X; //1 long EDGE_RETRY_COUNT_Y; //1 long EDGE_RETRY_COUNT_Z; //1 long EDGE_RETRY_COUNT_MAG; //1 }; class CSettleStage { public: CSettleStage(long lAxis, double dStartTime, long lStart, long lDeadband, double dTestIncrSec, double dMaxTimeSec); enum SETTLE_STATUS Test(double dCurTime, long lCurPos); private: double m_dStartTime; long m_lStartPos; long m_lDeadband; double m_dTestIncrSec; double m_dMaxTimeSec; double m_dIncrStartTimeSec; long m_lAxis; }; //====================================================================================== class CProto_Util { public: double ScaleToMM(long lCount, double dResolution); long MMtoScale(double lDistanceMM, double dResolution); // CProto_Util(); virtual ~CProto_Util(); SSI_STATUS Initialize(); SSI_STATUS Terminate(); SSI_STATUS GetAppPath(CString &Path); SSI_STATUS ExtractAppPath(CString &Path); double TimeInSecs(void); CLogger* g_pLogger; void _swap_byte(unsigned short &Val); void _reverse_dword(DWORD *); void _scale2inch(unsigned long scale, double &inch); void _inch2scale(unsigned long &scale, double inch); long _4char2long(unsigned char *cBuff); void _char2bin(unsigned char *cBuff, BYTE *cBytes, int len); void _clear_blanks(char *cBuff); void _ascii2bin(char *cBuff); SSI_STATUS WaitForSettleXYZZM(); }; #endif // !defined(AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)