OTSBSEImageFun.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using OTSCLRINTERFACE;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using OTSModelSharp.ServiceInterface;
  9. using OTSDataType;
  10. namespace OTSMeasureApp
  11. {
  12. public class OTSBSEImageFun
  13. {
  14. //OTSIncAMeasureAppForm m_MsrApp = null;
  15. NLog.Logger log ;
  16. CImageHandler imageHandle;
  17. public OTSBSEImageFun()
  18. {
  19. log = NLog.LogManager.GetCurrentClassLogger();
  20. imageHandle = new CImageHandler();
  21. }
  22. public bool GetBSEImage(COTSImageProcParam ImgProcPrm,double pixelSize, byte[] BSEImage, int iHeight, int iWidth, ref byte[] BSEImageNoBG)
  23. {
  24. return imageHandle.GetBSEImage(ImgProcPrm,pixelSize, BSEImage, iHeight, iWidth,ref BSEImageNoBG);
  25. }
  26. public bool GetBSEImage(byte[] BSEImage, int iHeight, int iWidth, int grayStart, int grayEnd, ref byte[] BSEImageNoBG)
  27. {
  28. return imageHandle.GetBSEImage(BSEImage, iHeight, iWidth, grayStart, grayEnd,ref BSEImageNoBG);
  29. }
  30. public int GetScanImage(int iWidth, int iHeigh, ref byte[] bImageData)
  31. {
  32. //电镜设置对象
  33. COTSControlFunExport cfun = COTSControlFunExport.GetControllerInstance();
  34. int GetImgCount = 0;
  35. try
  36. {
  37. //连接电镜
  38. bool IsConnec = cfun.ConncetSem();
  39. if (!IsConnec)
  40. {
  41. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.ConncetSem() = false Failed";
  42. log.Error(strErrorInfo);
  43. return 0;
  44. }
  45. //实例电镜初始化
  46. bool IsScan = cfun.ScanInit();
  47. if (!IsScan)
  48. {
  49. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.ScanInit = false Failed";
  50. log.Error(strErrorInfo);
  51. return 0;
  52. }
  53. //int a_ExternalMode = 0;
  54. ////获取终止模式
  55. //a_ExternalMode = cfun.GetSemExternalMode();
  56. ////保存初始模式变量
  57. //int a_oldMode = 0;
  58. ////获取初始模式
  59. //if (!cfun.GetSemScanMode(ref a_oldMode))
  60. //{
  61. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemScanMode = false Failed";
  62. // log.Error(strErrorInfo);
  63. // return 0;
  64. //}
  65. ////设置当前模式
  66. //if (!cfun.SetSemScanMode(a_ExternalMode))
  67. //{
  68. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetSemScanMode = false Failed";
  69. // log.Error(strErrorInfo);
  70. // return 0;
  71. //}
  72. //#region BeamBlank
  73. //int a_nBeamBlank = 0;
  74. ////获取参数
  75. //if (!cfun.GetSemBeamBlank(ref a_nBeamBlank))
  76. //{
  77. // cfun.SetSemScanMode(a_oldMode);
  78. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemBeamBlank = false Failed";
  79. // log.Error(strErrorInfo);
  80. // return 0;
  81. //}
  82. ////设置参数
  83. //if (!cfun.SetSemBeamBlank(false))
  84. //{
  85. // cfun.SetSemScanMode(a_oldMode);
  86. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetSemBeamBlank = false Failed";
  87. // log.Error(strErrorInfo);
  88. // return 0;
  89. //}
  90. //#endregion
  91. //#region 获得放大倍数
  92. ////获得放大倍数
  93. //double a_dMagnification = 0;
  94. ////获取参数
  95. //if (!cfun.GetSemMagnification(ref a_dMagnification))
  96. //{
  97. // cfun.SetSemScanMode(a_oldMode);
  98. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemMagnification = false Failed";
  99. // log.Error(strErrorInfo);
  100. // return 0;
  101. //}
  102. //#endregion
  103. //#region 获取 电镜 X、Y轴 与角度
  104. ////获取 电镜 X、Y轴 与角度
  105. //double PositionX = 0;
  106. //double PositionY = 0;
  107. //double PositionR = 0;
  108. ////获取参数
  109. //if (!cfun.GetSemPositionXY(ref PositionX, ref PositionY, ref PositionR))
  110. //{
  111. // cfun.SetSemScanMode(a_oldMode);
  112. // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemPositionXY = false Failed";
  113. // log.Error(strErrorInfo);
  114. // return 0;
  115. //}
  116. //#endregion
  117. #region 设置图像分辨率
  118. //设置宽度
  119. if (!cfun.SetImageSize(iWidth,iHeigh))
  120. {
  121. //cfun.SetSemScanMode(a_oldMode);
  122. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetImageSize = false Failed";
  123. log.Error(strErrorInfo);
  124. return 0;
  125. }
  126. #endregion
  127. #region 采集时间
  128. //采集时间
  129. int nDwellTime = 4;
  130. if (!cfun.SetDwellTime(nDwellTime))
  131. {
  132. //cfun.SetSemScanMode(a_oldMode);
  133. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetDwellTime = false Failed";
  134. log.Error(strErrorInfo);
  135. return 0;
  136. }
  137. #endregion
  138. #region MatrixSize
  139. //获得放大倍数
  140. //int a_MatrixSize = 0;
  141. //Size size = new Size();
  142. //获取参数
  143. //size = cfun.GetMatrixSize(a_MatrixSize);
  144. //size = cfun.GetMatrixSize(a_MatrixSize);
  145. #endregion
  146. //获取图像数据
  147. int resultCount = iWidth * iHeigh;
  148. GetImgCount = cfun.AcquireBSEImage(0, 0, 0, ref bImageData);
  149. //记录日志
  150. if (resultCount == GetImgCount)
  151. {
  152. //设置为原始 扫描模式
  153. //cfun.SetSemScanMode(a_oldMode);
  154. }
  155. else
  156. {
  157. //cfun.SetSemScanMode(a_oldMode);
  158. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.AcquireBSEImage = 0 Failed";
  159. log.Error(strErrorInfo);
  160. }
  161. }
  162. catch (Exception ex)
  163. {
  164. //记录日志
  165. log.Error(ex.Message.ToString());
  166. string strErrorInfo = "(OTSBSEImageFun.GetScanImage) Exception Error Happend";
  167. log.Error(strErrorInfo);
  168. }
  169. return GetImgCount;
  170. }
  171. }
  172. }