Browse Source

Merge branch 'master' of http://192.168.1.123:10080/SDD1/HOZ

wb_han 4 years ago
parent
commit
1dd900ab5d

+ 1 - 1
HOZProject/App.config

@@ -50,7 +50,7 @@
       <!--远程IP地址-->
       <!--远程IP地址-->
       <add key="WebServerIP" value="127.0.0.1"/>
       <add key="WebServerIP" value="127.0.0.1"/>
       <!--远程IP端口-->
       <!--远程IP端口-->
-      <add key="WebServerPort" value="12345"/>
+      <add key="WebServerPort" value="18080"/>
       <!--远程算法地址-->
       <!--远程算法地址-->
       <add key="WebServerUrl" value="FIB_degree_recognize,test2,FIB_verify,test4,test5,test6,test7,test8"/>
       <add key="WebServerUrl" value="FIB_degree_recognize,test2,FIB_verify,test4,test5,test6,test7,test8"/>
 
 

+ 30 - 0
HOZProject/Macro/1-Deposition.ely

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ELAYOUT version="2.0" locked="false" name="01-Pt-IB-Deposition-300pA">
+
+  <VERSION created="07.04.2020 16:45:59" modified="07.04.2020 16:45:59" number="1.0"/>
+
+  <AXES show="false"/>
+
+  <GRID horizontal="1" show="true" snap_to="false" vertical="1"/>
+
+  <LAYER_LIST>
+    <LAYER fill_color="#00FF00" fill_opacity="0.5" hidden="false" locked="false" name="Layer">
+        </LAYER>
+  </LAYER_LIST>
+
+  <STRUCTURE_LIST>
+    <STRUCTURE locked="false" name="Structure">
+      <VERSION created="07.04.2020 16:45:59" modified="07.04.2020 16:45:59" number="1.0"/>
+      <INSTANCE_LIST/>
+      <LAYER_REFERENCE frame_cx="0" frame_cy="0" frame_size="262.386" ref="Layer">
+        <RECT dose_factor="0.7" edge_sel_auto_scan_angle="true" height="-1.5" width="20" angle="0 deg" x="-16.9051" y="18.9407" imaging="false">
+          <EXPOSURE version="2.1" column_type="FIB" purpose="FIB deposition" computed_parameter="cycles" cycles_area="10" dwell_times_point="1e-006 s" dwell_times_line="1e-006 s" dwell_times_area="1e-007 s" dwell_times_image="1e-006 s" delay="medium" cycle_delay="0 s" dose_image="0 C/m&#178;" dose_area="2000 C/m&#178;" dose_line="0 C/m" dose_point="0 C" pause="false" scanning_mode_fast="bidirectional" scanning_mode_cycle_mode="loop" pixel_spacing_image="0 m" pixel_spacing_area="100 %" pixel_spacing_line="50 %" track_spacing="40 %" gauging="1.79769e+308" description="">
+          <PROBE name="30kV:300pA" type="specific" current="3e-010 A" diameter="1.75e-007 m"/>
+          <GIS name="Platinum" channel="1" category="1" type="specific" ack="false" autopark="false" offset="false" usegas="true"/>
+          </EXPOSURE>
+            </RECT>
+      </LAYER_REFERENCE>
+    </STRUCTURE>
+  </STRUCTURE_LIST>
+
+</ELAYOUT>

+ 34 - 0
HOZProject/Macro/2-CrossSection.ely

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ELAYOUT version="2.0" locked="false" name="02-Coarse CrossSection-30nA">
+
+  <VERSION created="07.04.2020 16:45:59" modified="07.04.2020 16:45:59" number="1.0"/>
+
+  <AXES show="false"/>
+
+  <GRID horizontal="1" show="true" snap_to="false" vertical="1"/>
+
+  <LAYER_LIST>
+    <LAYER fill_color="#00FF00" fill_opacity="0.5" hidden="false" locked="false" name="Layer">
+        </LAYER>
+  </LAYER_LIST>
+
+  <STRUCTURE_LIST>
+    <STRUCTURE locked="false" name="Structure">
+      <VERSION created="07.04.2020 16:45:59" modified="07.04.2020 16:45:59" number="1.0"/>
+      <INSTANCE_LIST/>
+      <LAYER_REFERENCE frame_cx="0" frame_cy="0" frame_size="279.276" ref="Layer">
+        <TRAPEZOID dose_factor="4" edge_sel_auto_scan_angle="true" x="-18.0568" y="-8.46012" width_a="30.7494" width_b="35.8743" offset_c="-2.56245" height="-24.4662">
+          <EXPOSURE version="2.1" column_type="FIB" purpose="FIB milling" computed_parameter="dwell time" cycles_area="10" dwell_times_point="1e-006 s" dwell_times_line="1e-006 s" dwell_times_area="1e-006 s" dwell_times_image="1e-006 s" delay="medium" cycle_delay="0 s" dose_image="0 C/m&#178;" dose_area="2000 C/m&#178;" dose_line="0 C/m" dose_point="0 C" pause="false" scanning_mode_fast="by purpose" scanning_mode_cycle_mode="cross-section" pixel_spacing_image="0 m" pixel_spacing_area="5 %" pixel_spacing_line="0 m" track_spacing="5 %" gauging="1.79769e+308" description="">
+          <PROBE name="30kV:30nA" type="specific" current="3e-008 A" diameter="1.4e-006 m"/>
+          </EXPOSURE>
+            </TRAPEZOID>
+        <TRAPEZOID dose_factor="4" edge_sel_auto_scan_angle="true" x="-18.7249" y="-2.61755" width_a="30.2824" width_b="35.3295" offset_c="-2.52354" height="21.611">
+          <EXPOSURE version="2.1" column_type="FIB" purpose="FIB milling" computed_parameter="dwell time" cycles_area="10" dwell_times_point="1e-006 s" dwell_times_line="1e-006 s" dwell_times_area="1e-006 s" dwell_times_image="1e-006 s" delay="medium" cycle_delay="0 s" dose_image="0 C/m&#178;" dose_area="2000 C/m&#178;" dose_line="0 C/m" dose_point="0 C" pause="false" scanning_mode_fast="bidirectional" scanning_mode_cycle_mode="cross-section" pixel_spacing_image="0 m" pixel_spacing_area="5 %" pixel_spacing_line="0 m" track_spacing="5 %" gauging="1.79769e+308" description="">
+          <PROBE name="30kV:30nA" type="specific" current="3e-008 A" diameter="1.4e-006 m"/>
+          </EXPOSURE>
+            </TRAPEZOID>
+      </LAYER_REFERENCE>
+    </STRUCTURE>
+  </STRUCTURE_LIST>
+
+</ELAYOUT>

BIN
HOZProject/Macro/Export TIFF.MLF


BIN
HOZProject/Macro/GIS Insert.MLF


BIN
HOZProject/Macro/GIS Retract.MLF


BIN
HOZProject/Macro/Good picture.MLF


BIN
HOZProject/Macro/Scan picture.MLF


+ 1 - 1
HOZProject/MeasureXML/MeasureStructXml.xml

@@ -16,7 +16,7 @@
     <Step Index="11" Code="1-11" IsData="True" Type="FIB" IsShow="True" Title="切割前拍照" Details="FIB进行拍照"></Step>
     <Step Index="11" Code="1-11" IsData="True" Type="FIB" IsShow="True" Title="切割前拍照" Details="FIB进行拍照"></Step>
     <Step Index="12" Code="1-12" IsData="False" Type="FIB" IsShow="True" Title="FIB切割" Details="控制FIB进行切割"></Step>
     <Step Index="12" Code="1-12" IsData="False" Type="FIB" IsShow="True" Title="FIB切割" Details="控制FIB进行切割"></Step>
     <Step Index="13" Code="1-13" IsData="True" Type="FIB" IsShow="True" Title="切割后拍照" Details="FIB切割后进行拍照"></Step>
     <Step Index="13" Code="1-13" IsData="True" Type="FIB" IsShow="True" Title="切割后拍照" Details="FIB切割后进行拍照"></Step>
-    <Step Index="14" Code="1-14" IsData="False" Type="FIB" IsShow="True" Title="验证移动准确性" Details="验证移动准确性:获取当前FIB中心位置坐标,与客户返回坐标对比"></Step>
+    <Step Index="14" Code="1-14" IsData="False" Type="FIB" IsShow="True" Title="切割验证结果" Details="切割验证结果"></Step>
     <Step Index="15" Code="1-15" 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="切换到SEM模式" Details="从FIB模式切换到SEM模式"></Step>
     <Step Index="16" Code="1-16" IsData="False" Type="FIB" IsShow="True" Title="切换到SEM模式" Details="从FIB模式切换到SEM模式"></Step>

+ 11 - 1
HOZProject/UnitControl.csproj

@@ -156,6 +156,13 @@
       <DependentUpon>UCTimeLine.cs</DependentUpon>
       <DependentUpon>UCTimeLine.cs</DependentUpon>
     </EmbeddedResource>
     </EmbeddedResource>
     <None Include="DataBase\MeasureFile.db" />
     <None Include="DataBase\MeasureFile.db" />
+    <None Include="Macro\1-Deposition.ely" />
+    <None Include="Macro\2-CrossSection.ely" />
+    <None Include="Macro\Export TIFF.MLF" />
+    <None Include="Macro\GIS Insert.MLF" />
+    <None Include="Macro\GIS Retract.MLF" />
+    <None Include="Macro\Good picture.MLF" />
+    <None Include="Macro\Scan picture.MLF" />
     <None Include="Properties\Settings.settings">
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
       <Generator>SettingsSingleFileGenerator</Generator>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -167,7 +174,9 @@
     </Compile>
     </Compile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <None Include="App.config" />
+    <None Include="App.config">
+      <SubType>Designer</SubType>
+    </None>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\FileManager\FileManager.csproj">
     <ProjectReference Include="..\FileManager\FileManager.csproj">
@@ -281,6 +290,7 @@
   <ItemGroup>
   <ItemGroup>
     <Content Include="MeasureXML\MeasureStructXml.xml">
     <Content Include="MeasureXML\MeasureStructXml.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <SubType>Designer</SubType>
     </Content>
     </Content>
     <None Include="Resources\Start_Green.png" />
     <None Include="Resources\Start_Green.png" />
     <None Include="Resources\Stop_Red.png" />
     <None Include="Resources\Stop_Red.png" />

+ 33 - 2
MeasureThread/Measure.cs

@@ -600,17 +600,20 @@ namespace MeasureThread
                     SendCutHoleMsg(((int)ThreadState.InProcess).ToString(), m_cutHoles[i].HoleName);
                     SendCutHoleMsg(((int)ThreadState.InProcess).ToString(), m_cutHoles[i].HoleName);
                     firstPosition = iSEM.GetStagePosition();
                     firstPosition = iSEM.GetStagePosition();
                     //第一个孔的测试
                     //第一个孔的测试
+                    m_cutHoles[i].START = DateTime.Now;
                     //成功
                     //成功
                     if(FirstHole())
                     if(FirstHole())
                     {
                     {
                         //保存文件,将测量状态更改
                         //保存文件,将测量状态更改
                         m_cutHoles[i].STATE = State.Success;
                         m_cutHoles[i].STATE = State.Success;
+                        m_cutHoles[i].END = DateTime.Now;
                         m_measureFile.Save();
                         m_measureFile.Save();
                     }
                     }
                     //失败
                     //失败
                     else
                     else
                     {
                     {
                         m_cutHoles[i].STATE = State.Failed;
                         m_cutHoles[i].STATE = State.Failed;
+                        m_cutHoles[i].END = DateTime.Now;
                         m_measureFile.Save();
                         m_measureFile.Save();
                     }
                     }
                     //切孔操作-完成
                     //切孔操作-完成
@@ -643,6 +646,7 @@ namespace MeasureThread
 
 
                 if(key_stop)
                 if(key_stop)
                 {
                 {
+                    m_cutHoles[i].END = DateTime.Now;
                     m_cutHoles[i].STATE = State.Unmeasured;
                     m_cutHoles[i].STATE = State.Unmeasured;
                     m_measureFile.Save();
                     m_measureFile.Save();
                     arg.Message = "用户停止测量";
                     arg.Message = "用户停止测量";
@@ -852,6 +856,13 @@ namespace MeasureThread
 
 
             //1.控制SEM放大600X
             //1.控制SEM放大600X
             arg.Picture_Information.Work_Status = "SEM";
             arg.Picture_Information.Work_Status = "SEM";
+            if (!iSEM.SetSEMVoltage(m_MsParam.Location_Voltage))
+            {
+                arg.Message = "电压设置" + m_MsParam.Location_Voltage.ToString("0.0") + "失败";
+                arg.State = false;
+                SendMsg("1-1");
+                return false;
+            }
             if (!iSEM.SetMagnification(m_measureFile.MParam.Location_Magnification))
             if (!iSEM.SetMagnification(m_measureFile.MParam.Location_Magnification))
             {
             {
                 arg.Message = "放大" + m_measureFile.MParam.Location_Magnification.ToString("0.0") + "倍失败";
                 arg.Message = "放大" + m_measureFile.MParam.Location_Magnification.ToString("0.0") + "倍失败";
@@ -1249,6 +1260,13 @@ namespace MeasureThread
             }
             }
 
 
             //1.控制SEM放大到300倍
             //1.控制SEM放大到300倍
+            if (!iSEM.SetSEMVoltage(m_MsParam.Location_Voltage))
+            {
+                arg.Message = "电压设置" + m_MsParam.Location_Voltage.ToString("0.0") + "失败";
+                arg.State = false;
+                SendMsg("1-17");
+                return false;
+            }
             if (!iSEM.SetMagnification(m_measureFile.MParam.Location_Magnification/2))
             if (!iSEM.SetMagnification(m_measureFile.MParam.Location_Magnification/2))
             {
             {
                 arg.Message = "放大" + (m_measureFile.MParam.Location_Magnification / 2).ToString("0.0") + "倍失败";
                 arg.Message = "放大" + (m_measureFile.MParam.Location_Magnification / 2).ToString("0.0") + "倍失败";
@@ -1397,9 +1415,16 @@ namespace MeasureThread
         {
         {
             float x0 = 0, y0 = 0, x1 = 0, y1 = 0, x2 = 0, y2 = 0;
             float x0 = 0, y0 = 0, x1 = 0, y1 = 0, x2 = 0, y2 = 0;
             int state = 0;
             int state = 0;
-            
+
 
 
             //1、放大6000倍,放大倍数参数photograph_
             //1、放大6000倍,放大倍数参数photograph_
+            if (!iSEM.SetSEMVoltage(m_MsParam.Photograph_Voltage))
+            {
+                arg.Message = "电压设置" + m_MsParam.Photograph_Voltage.ToString("0.0") + "失败";
+                arg.State = false;
+                SendMsg("1-22");
+                return false;
+            }
             if (!iSEM.SetMagnification(m_MsParam.Photograph_Magnification))
             if (!iSEM.SetMagnification(m_MsParam.Photograph_Magnification))
             {
             {
                 arg.Message = "放大倍数调整失败";
                 arg.Message = "放大倍数调整失败";
@@ -1585,11 +1610,11 @@ namespace MeasureThread
                 SendMsg("1-29");
                 SendMsg("1-29");
                 return false;
                 return false;
             }
             }
+            Thread.Sleep(3000);
             arg.State = true;
             arg.State = true;
             image18 = fileName6;
             image18 = fileName6;
             arg.Message = "SEM拍照成功";
             arg.Message = "SEM拍照成功";
             SendMsg("1-29");
             SendMsg("1-29");
-            Thread.Sleep(3000);
             //判断是否停止进程
             //判断是否停止进程
             if (key_stop)
             if (key_stop)
             {
             {
@@ -1623,9 +1648,11 @@ namespace MeasureThread
                 if (!InsertPT())
                 if (!InsertPT())
                 {
                 {
                     arg.Message = "插入PT针失败";
                     arg.Message = "插入PT针失败";
+                    arg.State = false;
                     SendMsg("1-0");
                     SendMsg("1-0");
                     return false;
                     return false;
                 }
                 }
+                arg.State = true;
                 arg.Message = "插入PT针成功";
                 arg.Message = "插入PT针成功";
                 SendMsg("1-0");
                 SendMsg("1-0");
             }
             }
@@ -1667,9 +1694,11 @@ namespace MeasureThread
                 if (!RetractPT())
                 if (!RetractPT())
                 {
                 {
                     arg.Message = "撤出PT针失败";
                     arg.Message = "撤出PT针失败";
+                    arg.State = false;
                     SendMsg("1-15");
                     SendMsg("1-15");
                     return false;
                     return false;
                 }
                 }
+                arg.State = true;
                 arg.Message = "撤出PT针成功";
                 arg.Message = "撤出PT针成功";
                 SendMsg("1-15");
                 SendMsg("1-15");
             }
             }
@@ -1716,9 +1745,11 @@ namespace MeasureThread
                 if (state == 0)
                 if (state == 0)
                 {
                 {
                     arg.Message = "测量尺寸失败";
                     arg.Message = "测量尺寸失败";
+                    arg.State = false;
                     SendMsg("1-31");
                     SendMsg("1-31");
                     return false;
                     return false;
                 }
                 }
+                arg.State = true;
                 arg.Message = "测量尺寸成功";
                 arg.Message = "测量尺寸成功";
                 SendMsg("1-31");
                 SendMsg("1-31");
             }
             }