ソースを参照

optimize the 5 6 kind samples measurement.

gsp 4 年 前
コミット
0238cb5659

+ 1 - 1
DBManager/MeasureDB.cs

@@ -45,7 +45,7 @@ namespace DBManager
             }
 
             m_db = new SQLiteConnection("data source =" + path);
-            //m_db.Open();
+            m_db.Open();
         }
 
         //关闭数据库

+ 6 - 1
ExtenderControl/Extender.cs

@@ -150,9 +150,10 @@ namespace Extender
         private Extender myExtender=null;
         AutoResetEvent startEvent= new AutoResetEvent(false);
         AutoResetEvent endEvent = new AutoResetEvent(false);
+        private NLog.Logger log;
         public ExtenderWrapper()
         {
-            
+            log = NLog.LogManager.GetCurrentClassLogger();
             controlThread = new Thread(this.ControlerThread);
             controlThread.Start();
         }
@@ -216,10 +217,12 @@ namespace Extender
                             if (myExtender.GrabImage(p.filename, p.xoff, p.yoff, p.width, p.height, p.type))
                             {
                                 currentCommand.returnType = true;
+                                log.Info("GrabImage:oxford thread return: " + currentCommand.returnType.ToString());
                             }
                             else
                             {
                                 currentCommand.returnType = false;
+                                log.Info("GrabImage:oxford thread return: " + currentCommand.returnType.ToString());
                             }
                             endEvent.Set();
                         }
@@ -345,8 +348,10 @@ namespace Extender
                     break;
                 }
             }
+            log.Info("GrabImage:oxford thread return: " + currentCommand.returnType.ToString());
             if (currentCommand.returnType == true)
             {
+
                 return true;
             }
             else

+ 4 - 0
ExtenderControl/HOZExtender.csproj

@@ -39,6 +39,10 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\bin\Debug\Newtonsoft.Json.dll</HintPath>
     </Reference>
+    <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\bin\Debug\NLog.dll</HintPath>
+    </Reference>
     <Reference Include="OINA.Extender, Version=4.2.0.0, Culture=neutral, PublicKeyToken=5efad68c95e0364e, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\bin\Debug\OINA.Extender.dll</HintPath>

+ 20 - 4
HOZProject/FormHOZMain.cs

@@ -12,6 +12,7 @@ using System.IO;
 using System.Linq;
 using System.Runtime.InteropServices;
 using System.Text;
+
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using static MeasureThread.ThreadStatusEventArgs;
@@ -117,7 +118,7 @@ namespace HOZProject
 
         //是否关闭窗体标识
         public bool IsClose = false;
-
+        OTSMeasureOutputNlog logwin;
         Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
         #endregion
 
@@ -133,7 +134,7 @@ namespace HOZProject
             m_BackgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
             m_BackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
             m_BackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
-           
+
             //LogManager.InitManulLog();
         }
         #endregion
@@ -375,9 +376,24 @@ namespace HOZProject
                 uControl_Init = new UControl_Init(this);
                 uControl_Init.ReloadConfig();
             }
-            OTSMeasureOutputNlog logwin = new OTSMeasureOutputNlog();
-            logwin.Visible = true;
+            logwin = new OTSMeasureOutputNlog();
+            logwin.Show();
+            NLog.Config.LoggingRule lr = NLog.LogManager.Configuration.LoggingRules.FirstOrDefault(
+                r => r.Targets.Any(
+                    t => "control" == t.Name
+                )
+            );
+            if (lr != null)
+            {
+              
+
+            }
+
+
+
+
             log = NLog.LogManager.GetCurrentClassLogger();
+
         } 
         #endregion
 

+ 1 - 1
HOZProject/MeasureXML/MeasureStructXml.xml

@@ -19,7 +19,7 @@
     <Step Index="13" Code="1-13" IsData="False" Type="Pt" IsShow="True" Title="插入PT针" Details="插入PT针"></Step>
     <Step Index="14" Code="1-14" IsData="False" Type="Pt" IsShow="True" Title="PT沉积" Details="PT进行沉积"></Step>
     <Step Index="15" Code="1-15" IsData="False" Type="Pt" IsShow="True" Title="撤出PT针" Details="撤出PT针"></Step>
-    <Step Index="16" Code="1-16" IsData="False" Type="FIB" IsShow="True" Title="保存六轴位置" Details="保存六轴的位置到数据库中"></Step>
+    <Step Index="16" Code="1-16" IsData="False" Type="FIB" IsShow="False" Title="保存六轴位置" Details="保存六轴的位置到数据库中"></Step>
 
     <Step Index="17" Code="1-17" IsData="True" Type="FIB" IsShow="False" Title="切割前SEM拍照" Details="切割前SEM拍照"></Step>
     <Step Index="18" Code="1-18" IsData="False" Type="FIB" IsShow="True" Title="切换到FIB模式" Details="电镜控制方式切换到FIB模式"></Step>

+ 34 - 23
MeasureThread/Measure.cs

@@ -546,7 +546,7 @@ namespace MeasureThread
           
 
             //检查硬件连接是否正常
-            log.Info("测量线程:开始连接硬件...", true);
+            log.Warn("测量线程:开始连接硬件...", true);
             if (!ConnectHardware())
             {
                 MessageBox.Show("连接电镜失败!","重要错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
@@ -606,7 +606,7 @@ namespace MeasureThread
                 }
                 Thread.Sleep(5000);
 
-                log.Info("测量线程:测试第"+i.ToString()+"个分析点。", true);
+                log.Warn("测量线程:测试第"+i.ToString()+"个分析点。", true);
                 //记录测量序号和孔名
                 m_nWorkHoleNo = i;
                 arg.HoleName = m_cutHoles[i].HoleName;
@@ -663,13 +663,13 @@ namespace MeasureThread
                 //开始循环工作
                 if (i == 0)
                 {
-                    log.Info("测量线程:分析点" + m_cutHoles[i].HoleName+"开始测量。", true);
+                    log.Warn("测量线程:分析点" + m_cutHoles[i].HoleName+"开始测量。", true);
                     m_cutHoles[i].START = DateTime.Now;
                     //切孔操作-开始
                     m_cutHoles[i].STATE = State.InProcess;
                     SendCutHoleMsg(((int)m_cutHoles[i].STATE).ToString(), m_cutHoles[i].HoleName);
 
-                    log.Info("测量线程:控制样品台至样品分析点位置(R,X,Y,Z) = (" + m_cutHoles[0].Position.R.ToString() + ","
+                    log.Warn("测量线程:控制样品台至样品分析点位置(R,X,Y,Z) = (" + m_cutHoles[0].Position.R.ToString() + ","
                         + m_cutHoles[0].Position.X.ToString()+","
                         + m_cutHoles[0].Position.Y.ToString()+","
                         + m_cutHoles[0].Position.Z.ToString() + ")", true);
@@ -1195,6 +1195,8 @@ namespace MeasureThread
                 arg.Picture_Information.Picture_FullPath = fileName2;
                 arg.Message = "FIB拍照成功";
                 SendMsg("1-11");
+                Thread.Sleep(200);
+                SendMsg("1-16");
                 iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
                 Thread.Sleep(200);
                 cycle_time = iSEM.GetCycleTime();
@@ -1208,7 +1210,7 @@ namespace MeasureThread
 
                 iSEM.CmdFIBModeSEM();
                 Thread.Sleep(200);
-
+               
                 //10.将照片传给客户,返回梯形位置坐标,及样品类型参数(是否需要PT沉积,PT坐标位置,PT宽度、PT高度、梯形上、下边及深度、扫描时间、束流、样品放大倍数1、样品放大倍数2等切割参数)
                 log.Info("测量线程:调用图像处理接口,准备移动样品台", true);
                 log.Info("文件名=" + fileName2, true);
@@ -1910,7 +1912,7 @@ namespace MeasureThread
             //2.控制SEM自动对焦、亮度、对比度-接口
             //add by sun 2020-12-16 解决第5/6类样品 2000倍对焦不好问题
             if ((m_measureFile.MParam.SampleName == "2")||(m_measureFile.MParam.SampleName == "3"))
-                iSEM.SetReduced(402, 128, 500, 500);
+                iSEM.SetReduced(402, 128, 600, 600);
             else  //add by sun 2020-12-16 解决第5/6类样品 2000倍对焦不好问题 end
                 iSEM.SetReduced(402, 128, 340, 256);
             Thread.Sleep(200);
@@ -2629,10 +2631,10 @@ namespace MeasureThread
             if (m_measureFile.MParam.IsonlyEDSForDebug == true)
             {
                 //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 
-                log.Info("测量线程:第一孔=====设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA  目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
+                log.Warn("测量线程:第一孔=====设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA  目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
                 if (!SetVoltageAndIPROBE())
                 {
-                    log.Info("测量线程:第一孔=====设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
+                    log.Error("测量线程:第一孔=====设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", false);
                     return false;
                 }
                 //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
@@ -2687,7 +2689,7 @@ namespace MeasureThread
                 // 2是5/6类样品,不需要拉直
                 if (m_measureFile.MParam.SampleName != "2")
                 {
-                    log.Info("测量线程:第一个孔的测试过程-拉直操作开始!", true);
+                    log.Warn("测量线程:第一个孔的测试过程-拉直操作开始!", true);
                     if (!Straighten_Handle())
                     {
                         log.Info("测量线程报错:第一个孔的测试过程-拉直操作失败。", true);
@@ -2719,7 +2721,7 @@ namespace MeasureThread
                 }
 
                 //13. 自动 定位功能  
-                log.Info("测量线程:第一个孔的测试过程-自动定位开始!", true);
+                log.Warn("测量线程:第一个孔的测试过程-自动定位开始!", true);
                 if (!GetPoistion())
                 {
                     log.Error("测量线程报错:自动定位失败,程序退出。", false);
@@ -2738,7 +2740,7 @@ namespace MeasureThread
                 {
                     if (m_measureFile.MParam.IsCutingForDebug)
                     {
-                        log.Info("测量线程:第一个孔的测试过程-14.自动控制FIB切割开始!==" + m_measureFile.MParam.IsCutingForDebug, true);
+                        log.Warn("测量线程:第一个孔的测试过程-14.自动控制FIB切割开始!==" + m_measureFile.MParam.IsCutingForDebug, true);
                         if (!FIBCross())
                         {
                             log.Error("测量线程报错:自动控制FIB切割失败。", false);
@@ -2769,7 +2771,7 @@ namespace MeasureThread
                         return false;
                     }
                 }
-                log.Info("测量线程:第一个孔的测试过程-17.自动控制SEM拍截面照开始", true);
+                log.Warn("测量线程:第一个孔的测试过程-17.自动控制SEM拍截面照开始", true);
                 //将过程17最后的拍照图片提出给18步进行调用
                 List<String> limg_path = new List<string>();
                 List<float> lsize = new List<float>();
@@ -2793,7 +2795,7 @@ namespace MeasureThread
                 //18.自动层高分析
                 if (m_measureFile.MParam.Is_Photograph == false)
                 {
-                    log.Info("测量线程:第一个孔的测试过程-18.自动层高分析开始", true);
+                    log.Warn("测量线程:第一个孔的测试过程-18.自动层高分析开始", true);
                     float size = iSEM.GetPixelSize();
                     int state = 1;
                     wr.Img_Measure_Height(limg_path, lsize, data_path + "\\", Convert.ToInt32(m_measureFile.MParam.SampleName), m_measureFile.MParam.Firm, out state);
@@ -2814,7 +2816,7 @@ namespace MeasureThread
             //19.能谱分析
             if (m_measureFile.MParam.EDS)
             {
-                log.Info("测量线程:第一个孔的测试过程-19.能谱分析开始===" + m_measureFile.MParam.EDS, true);
+                log.Warn("测量线程:第一个孔的测试过程-19.能谱分析开始===" + m_measureFile.MParam.EDS, true);
                 EDSAnalysis();
                 log.Info("测量线程:第一个孔的测试过程-19.能谱分析结束===" + m_measureFile.MParam.EDS, true);
             }
@@ -2828,7 +2830,7 @@ namespace MeasureThread
         public bool OtherHole()
         {
             //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 
-            log.Info("测量线程:非第一孔==设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA  目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
+            log.Warn("测量线程:非第一孔==设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA  目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
             if (!SetVoltageAndIPROBE())
             {
                 log.Error("测量线程:非第一孔==设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", false);
@@ -2836,6 +2838,7 @@ namespace MeasureThread
             }
             //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
             //设置拉直的放大倍数
+            log.Info("设置拉直放大倍数!");
             if (!iSEM.SetMagnification(m_measureFile.MParam.Stretch_Magnification))
             {
                 log.Error("拉直放大倍数设置失败,程序退出。", false);
@@ -2859,6 +2862,7 @@ namespace MeasureThread
             //自动化流程-每个点都需要补偿54度
             if (m_measureFile.MParam.Is_Photograph == false)
             {
+                log.Info("角度补偿54度!");
                 if (!TiltCorrection(54.0f))
                 {
                     arg.Message = "角度补偿54度失败!";
@@ -2879,6 +2883,7 @@ namespace MeasureThread
 
             if (m_measureFile.MParam.SampleName != "2")
             {
+                log.Warn("开始进行拉直操作!");
                 if (!Straighten_Handle())
                 {
                     log.Info("测量线程报错:拉直操作失败。", true);
@@ -2908,6 +2913,7 @@ namespace MeasureThread
             }
 
             //13. 自动 定位功能
+            log.Info("开始进行自动定位!");
             if (!GetPoistion())
             {
                 return false;
@@ -2917,10 +2923,11 @@ namespace MeasureThread
             {
                 return false;
             }
-
+           
             //14.自动控制FIB切割
             if (m_measureFile.MParam.Is_Photograph == false)
             {
+                log.Warn("开始进行FIB切割!");
                 if (!FIBCross())
                 {
                     return false;
@@ -2935,6 +2942,7 @@ namespace MeasureThread
             // 16.找到切割位置
             if (m_measureFile.MParam.Is_Photograph == false)
             {
+                log.Warn("开始找切割位置!");
                 if (!FindCross())
                 {
                     return false;
@@ -2950,6 +2958,7 @@ namespace MeasureThread
             List<String> limg_path = new List<string>();
             List<float> lsize = new List<float>();
             //17.自动控制SEM拍截面照
+            log.Warn("开始控制SEM拍截面照!");
             if (!ShotSection(ref limg_path, ref lsize))
             {
                 //return false;
@@ -2968,6 +2977,7 @@ namespace MeasureThread
             //18.自动层高分析
             if (m_measureFile.MParam.Is_Photograph == false)
             {
+                log.Warn("开始进行层高分析!");
                 float size = iSEM.GetPixelSize();
                 int state = 1;
                 wr.Img_Measure_Height(limg_path, lsize, data_path + "\\", Convert.ToInt32(m_measureFile.MParam.SampleName), m_measureFile.MParam.Firm, out state);
@@ -2986,6 +2996,7 @@ namespace MeasureThread
             //19.能谱分析
             if (m_measureFile.MParam.EDS)
             {
+                log.Warn("开始进行能谱分析!");
                 EDSAnalysis();
             }
 
@@ -4064,7 +4075,7 @@ namespace MeasureThread
             string path = a_param.Path;
             if (!Directory.Exists(path))
             {
-                log.Info("文件夹丢失", true);
+                log.Error("文件夹丢失", false);
                 return false;
             }
             string path_coarse = a_param.Path + "\\Coarse";
@@ -4590,7 +4601,7 @@ namespace MeasureThread
             }
             else
             {
-                log.Info("FIB自动聚焦参数设置有误", true);
+                log.Error("FIB自动聚焦参数设置有误", false);
                 return false;
             }
 
@@ -4598,14 +4609,14 @@ namespace MeasureThread
 
             if (a_param == null)
             {
-                log.Info("空参数", true);
+                log.Error("空参数", false);
                 return false;
             }
 
             string path = a_param.Path;
             if (!Directory.Exists(path))
             {
-                log.Info("文件夹丢失", true);
+                log.Error("文件夹丢失", false);
                 return false;
             }
             string path_coarse = a_param.Path + "\\Coarse";
@@ -4642,7 +4653,7 @@ namespace MeasureThread
                 }
                 else
                 {
-                    log.Info("FIB对焦参数设置有误,对焦类型错", true);
+                    log.Error("FIB对焦参数设置有误,对焦类型错", false);
                     return false;
                 }
 
@@ -4702,7 +4713,7 @@ namespace MeasureThread
                 }
                 else
                 {
-                    log.Info("自动消像散参数设置有误", true);
+                    log.Error("自动消像散参数设置有误", false);
                     return false;
                 }
                 //arg.Picture_Information.Work_Distance = (float)(cWd * 0.00000001);
@@ -6877,7 +6888,7 @@ namespace MeasureThread
             }
             catch
             {
-                log.Info("在测量图上显示放大倍数和像素大小信息失败", true);
+                log.Error("在测量图上显示放大倍数和像素大小信息失败", false);
             }
         }
         //add by zjx 2020-12-21 在测量图上显示放大倍数和像素大小等信息 end

+ 7 - 7
OxfordTest/Form1.cs

@@ -544,13 +544,13 @@ namespace OxfordTest
         {
             //向数据库插入分析点数据
             msf = new MeasureFile();
-            //msf.FileName = @"E:\HOZ\Test\asd.msf";
-            //msf.MParam.EDSP.DwellTime = 200;
-            //msf.MParam.EDSP.AreaTime = 200;
-            //m_MeasDB = new MeasureDB(msf);
-            //pname.Add("aaaa");
-            //pname.Add("bbbb");
-            //pname.Add("cccc");
+            msf.FileName = @"E:\HOZ\Test\asd.msf";
+            msf.MParam.EDSP.DwellTime = 200;
+            msf.MParam.EDSP.AreaTime = 200;
+            m_MeasDB = new MeasureDB(msf);
+            pname.Add("aaaa");
+            pname.Add("bbbb");
+            pname.Add("cccc");
             OTSMeasureOutputNlog lowWindow = new OTSMeasureOutputNlog();
             lowWindow.Visible = true;
         }