123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- using OTSCLRINTERFACE;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using OTSModelSharp.ServiceInterface;
- using OTSDataType;
- namespace OTSMeasureApp
- {
- public class OTSBSEImageFun
- {
- //OTSIncAMeasureAppForm m_MsrApp = null;
- NLog.Logger log ;
- CImageHandler imageHandle;
- public OTSBSEImageFun()
- {
- log = NLog.LogManager.GetCurrentClassLogger();
- imageHandle = new CImageHandler();
- }
- public bool GetBSEImage(COTSImageProcParam ImgProcPrm,double pixelSize, byte[] BSEImage, int iHeight, int iWidth, ref byte[] BSEImageNoBG)
- {
-
- return imageHandle.GetBSEImage(ImgProcPrm,pixelSize, BSEImage, iHeight, iWidth,ref BSEImageNoBG);
- }
- public bool GetBSEImage(byte[] BSEImage, int iHeight, int iWidth, int grayStart, int grayEnd, ref byte[] BSEImageNoBG)
- {
- return imageHandle.GetBSEImage(BSEImage, iHeight, iWidth, grayStart, grayEnd,ref BSEImageNoBG);
- }
- public int GetScanImage(int iWidth, int iHeigh, ref byte[] bImageData)
- {
- //电镜设置对象
- COTSControlFunExport cfun = COTSControlFunExport.GetControllerInstance();
- int GetImgCount = 0;
- try
- {
- //连接电镜
- bool IsConnec = cfun.ConncetSem();
- if (!IsConnec)
- {
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.ConncetSem() = false Failed";
- log.Error(strErrorInfo);
- return 0;
- }
- //实例电镜初始化
- bool IsScan = cfun.ScanInit();
- if (!IsScan)
- {
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.ScanInit = false Failed";
- log.Error(strErrorInfo);
- return 0;
- }
- //int a_ExternalMode = 0;
- ////获取终止模式
- //a_ExternalMode = cfun.GetSemExternalMode();
- ////保存初始模式变量
- //int a_oldMode = 0;
- ////获取初始模式
- //if (!cfun.GetSemScanMode(ref a_oldMode))
- //{
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemScanMode = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- ////设置当前模式
- //if (!cfun.SetSemScanMode(a_ExternalMode))
- //{
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetSemScanMode = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- //#region BeamBlank
- //int a_nBeamBlank = 0;
- ////获取参数
- //if (!cfun.GetSemBeamBlank(ref a_nBeamBlank))
- //{
- // cfun.SetSemScanMode(a_oldMode);
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemBeamBlank = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- ////设置参数
- //if (!cfun.SetSemBeamBlank(false))
- //{
- // cfun.SetSemScanMode(a_oldMode);
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetSemBeamBlank = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- //#endregion
- //#region 获得放大倍数
- ////获得放大倍数
- //double a_dMagnification = 0;
- ////获取参数
- //if (!cfun.GetSemMagnification(ref a_dMagnification))
- //{
- // cfun.SetSemScanMode(a_oldMode);
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemMagnification = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- //#endregion
- //#region 获取 电镜 X、Y轴 与角度
- ////获取 电镜 X、Y轴 与角度
- //double PositionX = 0;
- //double PositionY = 0;
- //double PositionR = 0;
- ////获取参数
- //if (!cfun.GetSemPositionXY(ref PositionX, ref PositionY, ref PositionR))
- //{
- // cfun.SetSemScanMode(a_oldMode);
- // string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.GetSemPositionXY = false Failed";
- // log.Error(strErrorInfo);
- // return 0;
- //}
- //#endregion
- #region 设置图像分辨率
- //设置宽度
- if (!cfun.SetImageSize(iWidth,iHeigh))
- {
- //cfun.SetSemScanMode(a_oldMode);
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetImageSize = false Failed";
- log.Error(strErrorInfo);
- return 0;
- }
- #endregion
- #region 采集时间
- //采集时间
- int nDwellTime = 4;
- if (!cfun.SetDwellTime(nDwellTime))
- {
- //cfun.SetSemScanMode(a_oldMode);
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.SetDwellTime = false Failed";
- log.Error(strErrorInfo);
- return 0;
- }
- #endregion
- #region MatrixSize
- //获得放大倍数
- //int a_MatrixSize = 0;
- //Size size = new Size();
- //获取参数
- //size = cfun.GetMatrixSize(a_MatrixSize);
- //size = cfun.GetMatrixSize(a_MatrixSize);
- #endregion
- //获取图像数据
- int resultCount = iWidth * iHeigh;
- GetImgCount = cfun.AcquireBSEImage(0, 0, 0, ref bImageData);
- //记录日志
- if (resultCount == GetImgCount)
- {
- //设置为原始 扫描模式
- //cfun.SetSemScanMode(a_oldMode);
-
- }
- else
- {
- //cfun.SetSemScanMode(a_oldMode);
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) cfun.AcquireBSEImage = 0 Failed";
- log.Error(strErrorInfo);
-
- }
- }
- catch (Exception ex)
- {
- //记录日志
- log.Error(ex.Message.ToString());
- string strErrorInfo = "(OTSBSEImageFun.GetScanImage) Exception Error Happend";
- log.Error(strErrorInfo);
- }
-
- return GetImgCount;
- }
- }
- }
|