#pragma once #include "BSEImg.h" #include "stdafx.h" #include "SEMCommonConst.h" namespace OTSController { using namespace OTSDATA; /// /// Interface of Image Acquisition Device /// class __declspec(dllexport) COTSScanBase { public: enum DEFAULT_SCAN_PARAMETER { SCAN_MAX_X = 4096, SCAN_MAX_Y = 3200, SCAN_STEP_SIZE = 4, SCAN_PIXEL_DWELL = 1, SCAN_INTER_PIXEL_DWELL = 1, SCAN_NUMBER_OF_READS = 1, SCAN_IMATRIX = 4 }; public: COTSScanBase(); ~COTSScanBase(); virtual ScanController::SCANNER_ID GetType() = 0; // initialization virtual BOOL Init() = 0; /// /// Capture a backscatter image, and apply any post processing. /// Note: The scanner interface seems to be heavily polluted by edax specific parameters /// passed to this and many other functions. The edax scanner collects a frame based /// on these parameters, other scanners (e.g. bruker,) rely on internal state set /// via SetImageSize, SetDwellTime etc. /// virtual CBSEImgPtr AcquireBSEImage() = 0; // move beam to point virtual BOOL MoveBeamTo(CPoint& a_beamPos) = 0; /// set dwell time virtual BOOL SetDwellTime(long a_nDwellTime) = 0; // set Image Size virtual BOOL SetImageSize(long a_nImageSize,long nHeight) = 0; }; typedef std::shared_ptr COTSScanBasePtr; }