FEISemController.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. using FEIApiControl;
  2. using OTSCLRINTERFACE;
  3. using OTSModelSharp.ServiceCenter;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace OTSMeasureApp.ServiceCenter
  10. {
  11. class FEISemController : ISemController
  12. {
  13. APIClass ApiClass = null;
  14. public FEISemController()
  15. {
  16. ApiClass = new APIClass();
  17. }
  18. public bool Connect()
  19. {
  20. string FEIIP = FileHelper.GetXMLInformations("FEIIP");
  21. string FEIPORT = FileHelper.GetXMLInformations("FEIPORT");
  22. if (FEIIP == "" || FEIPORT == "")
  23. {
  24. NLog.LogManager.GetCurrentClassLogger().Error("FEI电镜端口配置为空!");
  25. return false;
  26. }
  27. if (ApiClass.isConnect())
  28. {
  29. return true;
  30. }
  31. return ApiClass.Connect(FEIIP, FEIPORT);
  32. }
  33. public bool DisConnect()
  34. {
  35. return ApiClass.DisConnect();
  36. }
  37. public bool GetMagnification(ref double a_dMagnification)
  38. {
  39. return ApiClass.GetMagnification(ref a_dMagnification);
  40. }
  41. public bool GetScanFieldSize(ref double dScanFieldSizeX, ref double dScanFieldSizeY)
  42. {
  43. return ApiClass.GetSemScanFieldSize(ref dScanFieldSizeX, ref dScanFieldSizeY);
  44. }
  45. public bool GetScanFieldSize100(ref double dScanFieldSizeX, ref double dScanFieldSizeY)
  46. {
  47. ApiClass.SetMagnification(100);
  48. return ApiClass.GetSemScanFieldSize(ref dScanFieldSizeX, ref dScanFieldSizeY);
  49. }
  50. public bool GetSemBeamBlank(ref int a_nBeamBlank)
  51. {
  52. if (ApiClass.GetIsBlanked())
  53. {
  54. a_nBeamBlank = 1;
  55. }
  56. else
  57. {
  58. a_nBeamBlank = 0;
  59. }
  60. return true;
  61. }
  62. public bool GetSemBrightness(ref double a_dBrightness)
  63. {
  64. a_dBrightness = ApiClass.GetDetectorBrightness();
  65. return true;
  66. }
  67. public bool GetSemContrast(ref double a_dContrast)
  68. {
  69. a_dContrast = ApiClass.GetDetectorContrast();
  70. return true;
  71. }
  72. public bool GetSemHighTension(ref double a_dKV)
  73. {
  74. a_dKV = ApiClass.GetHightVoltage() / 1000;
  75. return true;
  76. }
  77. public bool GetSemPositionXY(ref double a_dPositionX, ref double a_dPositionY, ref double a_dPositionR)
  78. {
  79. double a_dPositionZ = 0;
  80. double a_dPositionT = 0;
  81. return ApiClass.GetSemPositionXYZRT(ref a_dPositionX, ref a_dPositionY, ref a_dPositionZ, ref a_dPositionR, ref a_dPositionT);
  82. }
  83. public bool GetWorkingDistance(ref double a_distance)
  84. {
  85. return ApiClass.GetWorkingDistance(ref a_distance);
  86. }
  87. public bool IsConnected()
  88. {
  89. return ApiClass.isConnect();
  90. }
  91. public bool MoveSEMToPoint(double a_dPositionX, double a_dPositionY, double rotation)
  92. {
  93. return ApiClass.SetSemPositionXYR(a_dPositionX, a_dPositionY, rotation);
  94. }
  95. public bool MoveSEMToPoint(double a_dPositionX, double a_dPositionY)
  96. {
  97. return ApiClass.SetSemPositionXY(a_dPositionX, a_dPositionY);
  98. }
  99. public bool SetMagnification(double a_dMagnification)
  100. {
  101. return ApiClass.SetMagnification(a_dMagnification);
  102. }
  103. public bool SetScanExternal(bool b)
  104. {
  105. return ApiClass.SetSemScanExternal(b);
  106. }
  107. public bool SetScanFieldSize100(double dScanFieldSizeX, double dScanFieldSizeY)
  108. {
  109. throw new NotImplementedException();
  110. }
  111. public bool SetSemBeamBlank(bool val)
  112. {
  113. if (val)
  114. {
  115. return ApiClass.SetBeamStateOn();
  116. }
  117. else
  118. {
  119. return ApiClass.SetBeamStateOff();
  120. }
  121. }
  122. public bool SetSemBeamCurrent(bool val)
  123. {
  124. if (val)
  125. {
  126. return ApiClass.SetBeamStateOn();
  127. }
  128. else
  129. {
  130. return ApiClass.SetBeamStateOff();
  131. }
  132. }
  133. public bool SetSemBrightness(double a_dBrightness)
  134. {
  135. return ApiClass.SetDetectorBrightness(a_dBrightness);
  136. }
  137. public bool SetSemContrast(double a_dContrast)
  138. {
  139. return ApiClass.SetDetectorContrast(a_dContrast);
  140. }
  141. public bool SetSemHighTension(double a_dKV)
  142. {
  143. return ApiClass.SetHightVoltage(a_dKV);
  144. }
  145. public bool SetWorkingDistance(double a_distance)
  146. {
  147. return ApiClass.SetWorkingDistance(a_distance);
  148. }
  149. public bool StopXrayAcquisition()
  150. {
  151. return ApiClass.DisConnect();
  152. }
  153. }
  154. }