using OTSDataType; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OTSModelSharp.ServiceInterface { public class SemController : ISemController { public static OTSCLRINTERFACE.COTSControlFunExport hw=null; public SemController() { } public bool Connect() { if (hw == null) { hw = OTSCLRINTERFACE.COTSControlFunExport.GetControllerInstance(); } if (hw.IsConnected()) { return true; } else { //和电镜建立通讯连接 return hw.ConncetSem(); } } public bool DisConnect() { if (hw != null) { return hw.DisconnectSem(); } return true; } public bool GetSEMDataGnrFromHw(ref CSEMDataGnr SemDataGnr) { Connect(); double kv=0, brightness=0, contrast=0; hw.GetSemHighTension(ref kv); hw.GetSemBrightness(ref brightness); hw.GetSemContrast(ref contrast); SemDataGnr.SetValue(kv, brightness, contrast); return true; } public bool GetMagnification(ref double a_dMagnification) { Connect(); return hw.GetSemMagnification(ref a_dMagnification); } public bool GetScanFieldSize(ref double dScanFieldSizeX, ref double dScanFieldSizeY) { Connect(); return hw.GetSemScanFieldSize(ref dScanFieldSizeX, ref dScanFieldSizeY); } public bool GetSemPositionXY(ref double a_dPositionX, ref double a_dPositionY, ref double a_dPositionR) { Connect(); return hw.GetSemPositionXY(ref a_dPositionX, ref a_dPositionY, ref a_dPositionR); } public bool GetWorkingDistance(ref double a_distance) { Connect(); return hw.GetSemWorkingDistance(ref a_distance); } public bool IsConnected() { //return true; return hw.IsConnected(); } public bool MoveSEMToPoint(Point poi, double rotation) { Connect(); return hw.MoveSEMToPoint(poi.X, poi.Y, rotation); } public bool SetMagnification(double a_dMagnification) { Connect(); //hw.SetMagnification(a_dMagnification); hw.SetSemMagnification(a_dMagnification); return true; } public bool SetScanExternal(bool b) { Connect(); //int seValue = b ? 1 : 0; return hw.SetSemScanExternal(b); } public bool SetWorkingDistance(double a_distance) { Connect(); return hw.SetSemWorkingDistance(a_distance); } public OTSCLRINTERFACE.COTSControlFunExport GetHardwareInterface() { Connect(); return hw; } } }