#pragma once #include "SEMCommonConst.h" #include "SEMDataMsr.h" #include "SEMDataGnr.h" namespace OTSController { using namespace OTSDATA; const long WAITING_INVERAL = 500; const int SCREEN_SIZE_DEFAULT_MAG100_X = 1142; const int SCREEN_SIZE_DEFAULT_MAG100_Y = 856; //SCREEN_SIZE_DEFAULT_MAG100_Y = SCREEN_SIZE_DEFAULT_MAG100_X * 0.75 // Base of SEM Function class __declspec(dllexport) COTSSemBase { public: COTSSemBase(); ~COTSSemBase(); public: // move SEM to the given point virtual BOOL MoveSEMToPoint(const CPoint& a_poiPosition, const double& a_dRotation); // SEM data measure virtual BOOL GetSEMDataMsr(CSEMDataMsrPtr a_pSEMDataMsr); virtual BOOL SetSEMDataMsr(CSEMDataMsrPtr a_pSEMDataMsr); // SEM data general virtual BOOL GetSEMDataGnr(CSEMDataGnrPtr a_pSEMDataGnr); virtual BOOL SetSEMDataGnr(CSEMDataGnrPtr a_pSEMDataGnr); // SEM Controller type ID virtual OTSSEMController::SEM_ID GetType() = 0; // calls the SEM to create a connection virtual BOOL Connect(void) = 0; // disconnects from the SEM virtual BOOL Disconnect(void) = 0; // connect test virtual BOOL IsConnected(void) = 0; // beam blank virtual BOOL GetBeamBlank(long& a_nBeamBlank) = 0; virtual BOOL SetBeamBlank(long a_nBeamBlank) = 0; // brightness virtual BOOL GetBrightness(double& a_dBrightness) = 0; virtual BOOL SetBrightness(double a_dBrightness) = 0; // contrast virtual BOOL GetContrast(double& a_dContrast) = 0; virtual BOOL SetContrast(double a_dContrast) = 0; // working distance virtual BOOL GetWorkingDistance(double& a_dWorkingDistance) = 0; virtual BOOL SetWorkingDistance(double a_dWorkingDistance) = 0; //high tension virtual BOOL GetHighTension(double& a_dKV) = 0; virtual BOOL SetHighTension(double a_dKV) = 0; // magnification virtual BOOL GetMagnification(double& a_dMagnification) = 0; virtual BOOL SetMagnification(double a_dMagnification) = 0; // scan field size virtual BOOL GetScanFieldSize(double& a_dScanFieldSizeX, double& a_dScanFieldSizeY) = 0; virtual BOOL SetScanFieldSizeX(double a_dScanFieldSizeX) = 0; // HT virtual BOOL GetHTOnOff(BOOL& a_bHTValue) = 0; virtual BOOL SetHTOnOff(BOOL a_bHTValue) = 0; virtual BOOL SetBeamCurrent(BOOL a_bValue) = 0;//bvalue=true // spot size virtual BOOL GetSpotSize(double& a_dSpotSize) = 0; virtual BOOL SetSpotSize(double a_dSpotSize) = 0; // external mode virtual int GetExternalMode() = 0; virtual BOOL SetScanExternal(BOOL externalOn) = 0; // position virtual BOOL GetPositionXY(double& a_dPositionX, double& a_dPositionY, double& a_dRotation) = 0; virtual BOOL SetPositionXY(double a_dPositionX, double a_dPositionY, double a_dRotation) = 0; virtual BOOL SetPositionXY(double a_dPositionX, double a_dPositionY) = 0; // scan field100 virtual CSize GetScanField100() { return m_oScanField100; } virtual void SetScanField100(const CSize& a_oScanField100) { m_oScanField100 = a_oScanField100; } // rotation flag BOOL GetRotationFlag() { return m_bAllowRotation; } void SetRotationFlag(BOOL a_bAllowRotation) { m_bAllowRotation = a_bAllowRotation; } protected: // convert scan field size to magnification BOOL ScanFieldSizeToMag(double& a_dMagnification, double a_dScanFieldSizeX); // convert magnification to scan field size. BOOL MagToScanFieldSize(double a_dMagnification, double& a_dScanFieldSizeX, double& a_dScanFieldSizeY); // The scan field at 100 mag CSize m_oScanField100; // rotation flag BOOL m_bAllowRotation; }; typedef std::shared_ptr __declspec(dllexport) CSemBasePtr; }