using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace OxfordExtenderWrapper { public class ExtenderIpcUI: MarshalByRefObject { ExtenderWrapper1 iExtender; public ExtenderIpcUI() { iExtender = new ExtenderWrapper1(); } public bool ConnectToEDSHardware() { return iExtender.ConnectToEDSHardware(); } //结束 public void CloseExtender() { iExtender.CloseExtender(); } public bool AquisitionImage(ref ImageAquistionParam p) { bool r = false; var p1 = p; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r= iExtender.AquisitionImage(ref p1); iExtender.SetSemScanExternal(false); }); thread.Start(); thread.Wait(); p = p1; return r; } public bool MoveStageXY(float x, float y) { var r = false; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r = iExtender.MoveStageXY(x,y); iExtender.SetSemScanExternal(false); }); thread.Start(); thread.Wait(); return r; } public bool XrayAreaCollecting(ref AreaXrayParam p) { bool r = false; var p1 = p; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r = iExtender.XrayAreaCollecting(ref p1); iExtender.SetSemScanExternal(false); }); //thread.IsBackground = true; thread.Start(); thread.Wait(); p = p1; return r; } public bool XrayPointCollecting(ref PointXrayParam p) { bool r = false; var p1 = p; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r = iExtender.XrayPointCollecting(ref p1); iExtender.SetSemScanExternal(false); }); thread.Start(); thread.Wait(); p = p1; return r; } public bool CollectXrayByPoints(ref List a_listPoints, uint a_nXRayAQTime, bool a_bElementInfo) { bool r = false; var p1 = a_listPoints; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r = iExtender.CollectXrayByPoints(ref p1,a_nXRayAQTime,a_bElementInfo); iExtender.SetSemScanExternal(false); }); thread.Start(); thread.Wait(); a_listPoints = p1; return r; } public bool CollectXrayByFeatures(ref List a_listFeatures, double a_nXRayAQTime, bool a_bElementInfo) { bool r = false; var p1 = a_listFeatures; var thread = new Task(() => { iExtender.SetSemScanExternal(true); r = iExtender.CollectXrayByFeatures(ref p1, a_nXRayAQTime, a_bElementInfo); iExtender.SetSemScanExternal(false); }); //thread.IsBackground = true; thread.Start(); thread.Wait(); a_listFeatures = p1; return r; } public float GetMagnification() { return (float)iExtender.GetMagnification(); } public Boolean SetMagnification(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetMagnification(set); }); thread.Start(); thread.Wait(); return r; } //焦距 public float GetWorkingDistance() { return (float)iExtender.GetWorkingDistance(); } public Boolean SetWorkingDistance(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetWorkingDistance(set); }); thread.Start(); thread.Wait(); return r; } //亮度 public float GetBrightness() { return (float)iExtender.GetBrightness(); } public Boolean SetBrightness(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetBrightness(set); }); thread.Start(); thread.Wait(); return r; } //对比度 public float GetContrast() { return (float)iExtender.GetContrast(); } public Boolean SetContrast(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetContrast(set); }); thread.Start(); thread.Wait(); return r; } //SEM电压 public float GetSEMVoltage() { return (float)iExtender.GetSEMVoltage(); } public Boolean SetSEMVoltage(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetSEMVoltage(set); }); thread.Start(); thread.Wait(); return r; } public bool SetSemScanExternal(bool b) { var r = false; var thread = new Task(() => { r = iExtender.SetSemScanExternal(b); }); thread.Start(); thread.Wait(); return r; } //样品台 public float[] GetStagePosition() { float[] ret = iExtender.GetStagePosition(); return ret; } public Boolean SetStagePosition(float[] set) { var r = false; var thread = new Task(() => { r = iExtender.SetStagePosition(set); }); thread.Start(); thread.Wait(); return r; } public Boolean SetStageGotoX(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetStageGotoX(set); }); thread.Start(); thread.Wait(); return r; } public Boolean SetStageGotoY(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetStageGotoY(set); }); thread.Start(); thread.Wait(); return r; } public Boolean SetStageGotoZ(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetStageGotoZ(set); }); thread.Start(); thread.Wait(); return r; } public Boolean SetStageGotoT(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetStageGotoT(set); }); thread.Start(); thread.Wait(); return r; } public Boolean SetStageGotoR(float set) { var r = false; var thread = new Task(() => { r = iExtender.SetStageGotoR(set); }); thread.Start(); thread.Wait(); return r; } public double[] ImageScanSize = { 32, 64, 128, 256, 512, 704, 768, 1024, 4096, 8192 }; public double DImagePixelsize { get => iExtender.GetDImagePixelsize(); set => iExtender.SetDImagePixelsize(value); } public float GetStageAtX() { return (float)iExtender.GetStageAtX(); } public float GetStageAtY() { return (float)iExtender.GetStageAtY(); } public float GetStageAtZ() { return (float)iExtender.GetStageAtZ(); } public float GetStageAtT() { return (float)iExtender.GetStageAtT(); } public float GetStageAtR() { return (float)iExtender.GetStageAtR(); } #region X-ray public bool IsAcquiringSpectrum() { return iExtender.IsAcquiringSpectrum(); } public void BeginMultipleAquisition() { iExtender.BeginMultipleAquisition(); } public void EndMultipleAquisition() { iExtender.EndMultipleAquisition(); } public bool GetSemBeamOn() { return iExtender.GetSemBeamOn(); } public void StopXrayAquisition() { iExtender.StopXrayAquisition(); } #endregion } }