Explorar o código

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

# Conflicts:
#	HOZProject/FormUnitControl.cs
#	SmartSEMControl/HardwareInterface.cs
HaoShuang %!s(int64=5) %!d(string=hai) anos
pai
achega
1effbb2558

+ 2 - 2
HOZProject/FormUnitControl.cs

@@ -190,7 +190,7 @@ namespace HOZProject
 
 
         #region 缩放Get
         #region 缩放Get
         private void btnenlargeGet_Click(object sender, EventArgs e)
         private void btnenlargeGet_Click(object sender, EventArgs e)
-        {
+        {           
             ISEMControl iSEM = factorySEM.ISEM;
             ISEMControl iSEM = factorySEM.ISEM;
             iSEM.GetMagnification();
             iSEM.GetMagnification();
 
 
@@ -414,7 +414,7 @@ namespace HOZProject
             if (sfd.ShowDialog() == DialogResult.OK)
             if (sfd.ShowDialog() == DialogResult.OK)
             {
             {
                 string fn = sfd.FileName;
                 string fn = sfd.FileName;
-                sem.GrabImage(fn, 0);
+                sem.GrabImage(fn, 0, 0, 1024, 768, 0);
             }
             }
         }
         }
         #endregion
         #endregion

+ 3 - 3
SmartSEMControl/HardwareInterface.cs

@@ -9,6 +9,8 @@ namespace SmartSEMControl
     //sealed, 避免继承出新类造成重构
     //sealed, 避免继承出新类造成重构
     public sealed class FactoryHardware
     public sealed class FactoryHardware
     {
     {
+
+
         //只读的静态成员
         //只读的静态成员
         private static readonly FactoryHardware instance = new FactoryHardware();
         private static readonly FactoryHardware instance = new FactoryHardware();
 
 
@@ -18,9 +20,7 @@ namespace SmartSEMControl
         //在整个应用程序域中只会被执行一次。
         //在整个应用程序域中只会被执行一次。
         static FactoryHardware()
         static FactoryHardware()
         {
         {
-        }
-
-        private FactoryHardware()
+        }        private FactoryHardware()
         {
         {
         }
         }
 
 

+ 241 - 8
SmartSEMControl/SmartSEM.cs

@@ -21,6 +21,10 @@ namespace SmartSEMControl
         private String AP_BRIGHTNESS = "AP_BRIGHTNESS";
         private String AP_BRIGHTNESS = "AP_BRIGHTNESS";
         //对比度
         //对比度
         private String AP_CONTRAST = "AP_CONTRAST";
         private String AP_CONTRAST = "AP_CONTRAST";
+        //亮度目标
+        private String AP_AUTO_BRIGHT = "AP_AUTO_BRIGHT";
+        //对比度目标
+        private String AP_AUTO_CONTRAST = "AP_AUTO_CONTRAST";
         //消像散X轴
         //消像散X轴
         private String AP_STIG_X = "AP_STIG_X";
         private String AP_STIG_X = "AP_STIG_X";
         //消像散Y轴
         //消像散Y轴
@@ -66,6 +70,14 @@ namespace SmartSEMControl
         private String DP_SCAN_ROT = "DP_SCAN_ROT";
         private String DP_SCAN_ROT = "DP_SCAN_ROT";
         //取消电子束校正
         //取消电子束校正
         private String DP_TILT_CORRECTION = "DP_TILT_CORRECTION";
         private String DP_TILT_CORRECTION = "DP_TILT_CORRECTION";
+        //自动亮度对比度
+        private String DP_AUTO_VIDEO = "DP_AUTO_VIDEO";
+        //图像解冻
+        private String DP_FROZEN = "DP_FROZEN";
+        //图像类型切换
+        private String DP_DETECTOR_TYPE = "DP_DETECTOR_TYPE";
+        //图像大小
+        private String DP_IMAGE_STORE = "DP_IMAGE_STORE";
         #endregion
         #endregion
 
 
         #region 命令
         #region 命令
@@ -73,6 +85,12 @@ namespace SmartSEMControl
         private String CMD_BEAM_ON = "CMD_BEAM_ON";
         private String CMD_BEAM_ON = "CMD_BEAM_ON";
         //关闭电压
         //关闭电压
         private String CMD_EHT_OFF = "CMD_EHT_OFF";
         private String CMD_EHT_OFF = "CMD_EHT_OFF";
+        //自动对焦1
+        private String CMD_AUTO_FOCUS_COARSE = "CMD_AUTO_FOCUS_COARSE";
+        //自动对焦2
+        private String CMD_AUTO_FOCUS_FINE = "CMD_AUTO_FOCUS_FINE";
+        //自动消像散
+        private String CMD_AUTO_STIG = "CMD_AUTO_STIG";
         #endregion
         #endregion
 
 
         #region APILib
         #region APILib
@@ -389,6 +407,93 @@ namespace SmartSEMControl
         }
         }
         #endregion
         #endregion
 
 
+        #region 自动亮度对比度
+        /// <summary>
+        /// 读取自动亮度对比度状态
+        /// </summary>
+        /// <returns>true:float or false:NaN</returns>
+        public float GetAutoVideo()
+        {
+            float ret = 0;
+            if (ReadParams(DP_AUTO_VIDEO, ref ret))
+            {
+                return ret;
+            }
+            else
+            {
+                return float.NaN;
+            }
+        }
+
+        /// <summary>
+        /// 设置自动亮度对比度状态
+        /// </summary>
+        /// <param name="set">0:off;1:B(亮度);2:C(对比度);3:BC</param>
+        /// <returns>true or false</returns>
+        public Boolean SetAutoVideo(float set)
+        {
+            return WriteDataParams(DP_AUTO_VIDEO, set);
+        }
+        #endregion
+
+        #region 亮度目标
+        /// <summary>
+        /// 读取亮度目标
+        /// </summary>
+        /// <returns>true:float or false:NaN</returns>
+        public float GetAutoBright()
+        {
+            float ret = 0;
+            if (ReadParams(AP_AUTO_BRIGHT, ref ret))
+            {
+                return ret;
+            }
+            else
+            {
+                return float.NaN;
+            }
+        }
+
+        /// <summary>
+        /// 设置亮度目标
+        /// </summary>
+        /// <param name="set">亮度</param>
+        /// <returns>true or false</returns>
+        public Boolean SetAutoBright(float set)
+        {
+            return WriteParams(AP_AUTO_BRIGHT, set);
+        }
+        #endregion
+
+        #region 对比度目标
+        /// <summary>
+        /// 读取对比度目标
+        /// </summary>
+        /// <returns>true:float or false:NaN</returns>
+        public float GetAutoContrast()
+        {
+            float ret = 0;
+            if (ReadParams(AP_AUTO_CONTRAST, ref ret))
+            {
+                return ret;
+            }
+            else
+            {
+                return float.NaN;
+            }
+        }
+
+        /// <summary>
+        /// 设置对比度目标
+        /// </summary>
+        /// <param name="set">对比度目标</param>
+        /// <returns>true or false</returns>
+        public Boolean SetAutoContrast(float set)
+        {
+            return WriteParams(AP_AUTO_CONTRAST, set);
+        }
+        #endregion
+
         #region 消像散
         #region 消像散
         /// <summary>
         /// <summary>
         /// 读取消像散X
         /// 读取消像散X
@@ -470,7 +575,88 @@ namespace SmartSEMControl
         /// <returns>true or false</returns>
         /// <returns>true or false</returns>
         public Boolean SetTiltAngle(float set)
         public Boolean SetTiltAngle(float set)
         {
         {
-            return WriteParams(AP_TILT_ANGLE, set);
+            Boolean ret = false;
+            ret = WriteDataParams(DP_TILT_CORRECTION, 1);
+            ret = WriteParams(AP_TILT_ANGLE, set);
+            ret = WriteDataParams(DP_TILT_CORRECTION, 0);
+            return ret;
+        }
+        #endregion
+
+        #region 图像大小
+        public int[] GetImageStore()
+        {
+            int[] i_ret = new int[2];
+            float ret = 0;
+            if (ReadParams(DP_IMAGE_STORE, ref ret))
+            {
+                switch(ret)
+                {
+                    case 0:
+                        i_ret[0] = 1024;
+                        i_ret[1] = 768;
+                        break;
+                    case 1:
+                        i_ret[0] = 512;
+                        i_ret[1] = 384;
+                        break;
+                    case 2:
+                        i_ret[0] = 2048;
+                        i_ret[1] = 1536;
+                        break;
+                    case 3:
+                        i_ret[0] = 3072;
+                        i_ret[1] = 2304;
+                        break;
+                    case 4:
+                        i_ret[0] = 4096;
+                        i_ret[1] = 3072;
+                        break;
+                    case 5:
+                        i_ret[0] = 5120;
+                        i_ret[1] = 3840;
+                        break;
+                    case 6:
+                        i_ret[0] = 6144;
+                        i_ret[1] = 4608;
+                        break;
+                    case 7:
+                        i_ret[0] = 8192;
+                        i_ret[1] = 6144;
+                        break;
+                    case 8:
+                        i_ret[0] = 12288;
+                        i_ret[1] = 9216;
+                        break;
+                    case 9:
+                        i_ret[0] = 16384;
+                        i_ret[1] = 12288;
+                        break;
+                    case 10:
+                        i_ret[0] = 24576;
+                        i_ret[1] = 18432;
+                        break;
+                    case 11:
+                        i_ret[0] = 32768;
+                        i_ret[1] = 24576;
+                        break;
+                    default:
+                        i_ret[0] = 0;
+                        i_ret[1] = 0;
+                        break;
+                }
+            }
+            else
+            {
+                i_ret[0] = 0;
+                i_ret[1] = 0;
+            }
+            return i_ret;
+        }
+
+        public Boolean SetImageStore(float set)
+        {
+            return WriteDataParams("DP_IMAGE_STORE", set);
         }
         }
         #endregion
         #endregion
 
 
@@ -479,17 +665,18 @@ namespace SmartSEMControl
         /// 抓取图像
         /// 抓取图像
         /// </summary>
         /// </summary>
         /// <returns>true:float or false:NaN</returns>
         /// <returns>true:float or false:NaN</returns>
-        public Boolean GrabImage(String filename, short type)
+        public Boolean GrabImage(String filename, short xoff,short yoff, short width,short height,short type)
         {
         {
             if (m_bInitialised)
             if (m_bInitialised)
             {
             {
-                lrt = CZEMApi.Grab(0, 0, 1024, 768, type, filename);
+                lrt = CZEMApi.Grab(xoff, yoff, width, height, type, filename);
                 if (lrt != 0)
                 if (lrt != 0)
                 {
                 {
                     return false;
                     return false;
                 }
                 }
                 else
                 else
                 {
                 {
+                    Frozen(1);
                     return true;
                     return true;
                 }
                 }
             }
             }
@@ -500,9 +687,23 @@ namespace SmartSEMControl
         }
         }
         #endregion
         #endregion
 
 
-        #region SEM移动接口
+        #region 图像解冻
+        public Boolean Frozen(float set)
+        {
+            return WriteDataParams(DP_FROZEN, set); 
+        }
+        #endregion
+
+        #region 图像类型切换
+        public Boolean DetectorType(float set)
+        {
+            return WriteDataParams(DP_DETECTOR_TYPE, set);
+        }
+        #endregion
+
+        #region 电子束移动接口
         /// <summary>
         /// <summary>
-        /// 获取SEM移动接口X
+        /// 获取电子束移动接口X
         /// </summary>
         /// </summary>
         /// <returns>true:float or false:NaN</returns>
         /// <returns>true:float or false:NaN</returns>
         public float GetBeamShiftX()
         public float GetBeamShiftX()
@@ -519,7 +720,7 @@ namespace SmartSEMControl
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 获取SEM移动接口Y
+        /// 获取电子束移动接口Y
         /// </summary>
         /// </summary>
         /// <returns>true:float or false:NaN</returns>
         /// <returns>true:float or false:NaN</returns>
         public float GetBeamShiftY()
         public float GetBeamShiftY()
@@ -536,7 +737,7 @@ namespace SmartSEMControl
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 设置SEM移动接口X
+        /// 设置电子束移动接口X
         /// </summary>
         /// </summary>
         /// <param name="set">X坐标</param>
         /// <param name="set">X坐标</param>
         /// <returns>true or false</returns>
         /// <returns>true or false</returns>
@@ -546,7 +747,7 @@ namespace SmartSEMControl
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 设置SEM移动接口Y
+        /// 设置电子束移动接口Y
         /// </summary>
         /// </summary>
         /// <param name="set">X坐标</param>
         /// <param name="set">X坐标</param>
         /// <returns>true or false</returns>
         /// <returns>true or false</returns>
@@ -755,6 +956,16 @@ namespace SmartSEMControl
         }
         }
         #endregion
         #endregion
 
 
+        #region 移动样品台XY轴
+        public Boolean MoveStageXY(float x,float y)
+        {
+            Boolean ret = false;
+            ret = SetStageGotoX(x);
+            ret = SetStageGotoY(y);
+            return ret;
+        }
+        #endregion
+
         #region Scan Rotate角度接口
         #region Scan Rotate角度接口
         /// <summary>
         /// <summary>
         /// 获取Scan Rotate角度接口
         /// 获取Scan Rotate角度接口
@@ -850,5 +1061,27 @@ namespace SmartSEMControl
         }
         }
         #endregion
         #endregion
 
 
+        #region 自动对焦1
+        public Boolean CmdAutoFocusCoarse()
+        {
+            return ExecuteCmd(CMD_AUTO_FOCUS_COARSE);
+        }
+        #endregion
+
+        #region 自动对焦2
+        public Boolean CmdAutoFocusFine()
+        {
+            return ExecuteCmd(CMD_AUTO_FOCUS_FINE);
+        }
+        #endregion
+
+        #region 自动消像散
+        public Boolean CmdAutoStig()
+        {
+            return ExecuteCmd(CMD_AUTO_STIG);
+        }
+        #endregion
+
+
     }
     }
 }
 }