using FEIApiControl; using OTSModelSharp.ServiceCenter; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NSDLL_CLR; using System.Reflection; namespace OTSMeasureApp.ServiceCenter.Coxm { class CoxmSemController : ISemController { public static NSRestClient m_api; private int imageWidth = 640; private int imageHeight = 480; double dwelltime = 10; int port = 7321; string ip = "127.0.0.1"; /// /// //se 0;bse 1;se_bse 2; /// int scan_chanel = 1; /// /// //red 0; fast 1; slow 2; slow2 3 /// int scan_speed = 1; public CoxmSemController() { m_api = NSDLL_CLR.NSRestClient.GetControllerInstance(); } public static NSRestClient GetApiClassInstance() { if (m_api == null) { m_api = NSDLL_CLR.NSRestClient.GetControllerInstance(); } return m_api; } public bool Connect() { string FEIIP = FileHelper.GetXMLInformations("FEIIP"); string FEIPORT = FileHelper.GetXMLInformations("FEIPORT"); if (FEIIP == "" || FEIPORT == "") { NLog.LogManager.GetCurrentClassLogger().Error("FEI电镜端口配置为空!"); return false; } if (m_api.IsServerConnectStatus()) { return true; } if (m_api.ServerConnect()) { return true; } return false; } public bool DisConnect() { if (m_api.ServerDisConnect()) { return true; } return false; } public bool GetMagnification(ref double a_dMagnification) { int mag = 0; if (m_api.GetMagnification(ref mag)) { a_dMagnification=(double)mag; return true; } return false; } public bool GetScanFieldSize(ref double dScanFieldSizeX, ref double dScanFieldSizeY) { if (!m_api.IsServerConnectStatus()) { return false; } else { dScanFieldSizeX = imageWidth; dScanFieldSizeY = imageHeight; return true; } } public bool GetSemBeamBlank(ref bool a_nBeamBlank) { return m_api.PostBeamBlank(a_nBeamBlank); } public bool GetSemBrightness(ref double a_dBrightness) { int brightness = 0; bool get = m_api.GetBrightness(ref brightness); if(get) a_dBrightness=(double)brightness; return get; } public bool GetSemContrast(ref double a_dContrast) { int contrast = 0; bool get=m_api.GetContrast(ref contrast); if(get) { a_dContrast=(double)contrast; } return get; } public bool GetSemHighTension(ref double a_dKV) { int kv = 0; if(m_api.GetAccVoltage(ref kv)) { a_dKV=(double)kv; } return false; } public bool GetSemPositionXY(ref double a_dPositionX, ref double a_dPositionY, ref double a_dPositionR) { double t = 0; return m_api.GetStageALL(ref a_dPositionX, ref a_dPositionY, ref a_dPositionR, ref a_dPositionR, ref t); } public bool GetWorkingDistance(ref double a_distance) { return m_api.GetWD(ref a_distance); } public bool IsConnected() { return m_api.IsServerConnectStatus(); } public bool MoveSEMToPoint(double a_dPositionX, double a_dPositionY, double rotation) { return false; } public bool MoveSEMToPoint(double a_dPositionX, double a_dPositionY) { return true;//test when no stage //return m_api.MoveStageX_YAndConform(a_dPositionX, a_dPositionY); } public bool SetMagnification(double a_dMagnification) { int mag =(int) a_dMagnification; return m_api.PostMagnification(mag); } public bool SetScanExternal(bool b) { return m_api.PostExternalOn(b); } public bool SetSemBeamBlank(bool value) { return m_api.PostBeamBlank(value); } public bool SetSemBeamCurrentOff(bool value) { return false; } public bool SetSemBrightness(double a_dBrightness) { int brightness=(int) a_dBrightness; return m_api.PostBrightness(brightness); } public bool SetSemContrast(double a_dContrast) { int contast=(int) a_dContrast; return m_api.PostContrast(contast); } public bool SetSemHighTension(double a_dKV) { int KV = (int)a_dKV; return m_api.PostAccVoltage(KV); } public bool SetSemHTOff(bool value) { if(value) { return m_api.PostEGunOFF(); } else { return false; } } public bool SetWorkingDistance(double a_distance) { return m_api.PostWD(a_distance); } public bool StopXrayAcquisition() { return false; } bool ISemController.GetSemBeamBlank(ref int a_nBeamBlank) { if(a_nBeamBlank==1) { m_api.PostBeamBlank(true); } else if(a_nBeamBlank==0) { m_api.PostBeamBlank(false); } return false; } bool ISemController.RunHIGH_VACUUM() { return true; } bool ISemController.SetFullFrame() { return true; } bool ISemController.SetReducedArea() { return true; } bool ISemController.StopImageAcquisition() { return true; } } }