#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;
}