#pragma once #include #include "GreedyTSP.h" struct SSchedulerResult { SSchedulerResult() { Reset(); } void Reset() { nAxisType = 0; //x nPointIndex = -1; nTotalIndex = -1; dPositionX = 0.0; dPositionY = 0.0; dMoveDistance = 0.0; dMoveSpeed = 0.0; dMoveAccel = 0.0; dMoveDecel = 0.0; dMoveTime = 0.0; dAutoFocusTime = 0.0; dImageGrabTime = 0.0; dMotionDelayTime = 0.0; } double GetDurationTime() const { return (dMoveTime+dAutoFocusTime+dImageGrabTime+dMotionDelayTime); } int nAxisType; int nPointIndex; int nTotalIndex; int pDataType[PATH_DATA_TYPE_COUNT]; double dPositionX; double dPositionY; double dMoveDistance; // mm double dMoveSpeed; // mm/sec double dMoveAccel; double dMoveDecel; double dMoveTime; double dAutoFocusTime; double dImageGrabTime; double dMotionDelayTime; }; class AFX_EXT_CLASS CPathSchedulerResult { public: CPathSchedulerResult(int nModuleIdx=0, int nScanIdx=0); CPathSchedulerResult(const CPathSchedulerResult& rhs); CPathSchedulerResult& operator=(const CPathSchedulerResult& rhs); virtual ~CPathSchedulerResult(void); void Reset(); // adder void AddHeadScheduleResult(CPathSchedulerResult& reviewResult); void AddTailScheduleResult(CPathSchedulerResult& reviewResult); // resize void ResizeScheduleResult(int nCount); // setter void SetScheduleResultCount(int nCount); void SetScheduleResult(int nIndex, const SSchedulerResult& scheduleResult); // getter int GetModuleIndex() const; int GetScanIndex() const; int GetPathSchedulerResultCount() const; SSchedulerResult* GetPathSchedulerResult(); const SSchedulerResult* GetPathSchedulerResult() const; SSchedulerResult* GetPathSchedulerResult(int nIndex); const SSchedulerResult* GetPathSchedulerResult(int nIndex) const; double GetTotalSchedulerTime() const; double GetTotalSchedulerTime(int nIndex) const; double GetScheduleTime(int nIndex) const; double GetScheduleTime(int nStartIdx, int nEndIdx) const; double GetTotalSchedulerDistance() const; double GetTotalSchedulerDistance(int nIndex) const; void SetCollisionResultIndex(int nIndex); void SetCollisionResultTime(double dTime); void SetCollisionPositionX(int nPos); void SetCollisionPositionY(int nPos); int GetCollisionResultIndex() const; double GetCollisionResultTime() const; int GetCollisionPositionX() const; int GetCollisionPositionY() const; static BOOL LoadResult(const CString& strFilename, CPathSchedulerResult& reviewResult); static BOOL SaveResult(const CString& strFilename, CPathSchedulerResult& reviewResult); protected: int nModuleIndex; int nScanIndex; SSchedulerResult* pScheduleResult; int nScheduleResultCount; int nCollisionResultIndex; double dCollisionResultTime; int nCollisionPositionX; int nCollisionPositionY; }; typedef std::vector VectorPathSchedulerResult; typedef std::vector::iterator VectorPathScheduleResultIt; typedef std::vector::const_iterator constVectorPathScheduleResultIt; typedef std::vector VectorRect; typedef std::vector::iterator VectorRectIt; typedef std::vector::const_iterator constVectorRectIt;