Forráskód Böngészése

更新单项测试界面、配置文件管理,蔡司测试好的SmartSEM控制和Web管理程序

@wang_qi0307 5 éve
szülő
commit
cb148a27a2

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 507 - 409
HOZProject/FormUnitControl.Designer.cs


+ 87 - 116
HOZProject/FormUnitControl.cs

@@ -33,11 +33,11 @@ namespace HOZProject
 
         public XmlManager xmg = new XmlManager();
 
-
+        
         private String path = Directory.GetCurrentDirectory();
         private int st_flag = 0;
 
-        WebResult wr = new WebResult("127.0.0.1", "18080", "Huawei/WebServerTest");
+        WebResult wr = new WebResult("127.0.0.1", "18080");
         #endregion
 
         #region 构造函数
@@ -47,19 +47,19 @@ namespace HOZProject
 
             Control.CheckForIllegalCrossThreadCalls = false;
 
-            if (iSEM.ConnectStatus())
+            if(iSEM.ConnectStatus())
             {
                 float ret = iSEM.GetFIBIMAGING();
-                if (ret == 0)
+                if(ret==0)
                 {
                     btnSEM.BackColor = Color.Lime;
                 }
-                else if (ret == 1)
+                else if(ret==1)
                 {
                     btnFIB.BackColor = Color.Lime;
                     panelFIB.Visible = true;
                 }
-                else if (ret == 2)
+                else if(ret==2)
                 {
                     btnMILL.BackColor = Color.Lime;
                 }
@@ -71,7 +71,7 @@ namespace HOZProject
 
         }
         #endregion
-
+        
         #region 缩放Get
         private void btnenlargeGet_Click(object sender, EventArgs e)
         {
@@ -143,7 +143,7 @@ namespace HOZProject
                 btnBrightnessSet.Enabled = false;
             }
             else
-            {
+            { 
                 txtBrightnessSet.Text = ret.ToString();
                 btnBrightnessSet.Enabled = true;
             }
@@ -273,6 +273,7 @@ namespace HOZProject
             float set = 0;
             if (float.TryParse(txtTiltAngleSet.Text, out set))
             {
+                //iSEM.SetTiltAngleOn();
                 iSEM.SetTiltAngle(set);
             }
         }
@@ -317,7 +318,7 @@ namespace HOZProject
             float set = 0;
             if (float.TryParse(txtScanRotationSet.Text, out set))
             {
-
+                //iSEM.SetScanRotationOn();
                 iSEM.SetScanRotation(set);
             }
         }
@@ -414,7 +415,7 @@ namespace HOZProject
             }
             else
             {
-                if (ret == 0)
+                if(ret==0)
                 {
                     btnTiltCorr.BackColor = Color.Blue;
                     iSEM.SetTiltCorrectionOn();
@@ -600,7 +601,7 @@ namespace HOZProject
         #region 窗体关闭
         private void FormUnitControl_FormClosing(object sender, FormClosingEventArgs e)
         {
-            if (iSEM != null)
+            if(iSEM!=null)
             {
                 iSEM.Dispose();
             }
@@ -700,20 +701,20 @@ namespace HOZProject
         #region SEM模式
         private void btnSEM_Click(object sender, EventArgs e)
         {
-            if (iSEM.CmdFIBModeSEM())
+            if(iSEM.CmdFIBModeSEM())
             {
                 btnFIB.BackColor = SystemColors.Control;
                 btnSEM.BackColor = Color.Lime;
                 btnMILL.BackColor = SystemColors.Control;
                 panelFIB.Visible = false;
-            }
+            } 
         }
         #endregion
 
         #region FIB模式
         private void btnFIB_Click(object sender, EventArgs e)
         {
-            if (iSEM.CmdFIBModeFIB())
+            if(iSEM.CmdFIBModeFIB())
             {
                 btnFIB.BackColor = Color.Lime;
                 btnSEM.BackColor = SystemColors.Control;
@@ -726,7 +727,7 @@ namespace HOZProject
         #region MILL模式
         private void btnMILL_Click(object sender, EventArgs e)
         {
-            if (iSEM.CmdFIBModeMILL())
+            if(iSEM.CmdFIBModeMILL())
             {
                 btnFIB.BackColor = SystemColors.Control;
                 btnSEM.BackColor = SystemColors.Control;
@@ -762,11 +763,11 @@ namespace HOZProject
         {
             float ret = 111;
             Boolean state = false;
-            while (true)
+            while(true)
             {
                 Thread.Sleep(1000);
                 ret = iSEM.GetAutoFunction();
-                if (ret == 0)
+                if(ret==0)
                 {
                     if (st_flag == 1 && state == true)
                     {
@@ -783,7 +784,7 @@ namespace HOZProject
                         }
                         break;
                     }
-                    else if (st_flag == 2 && state)
+                    else if(st_flag==2 && state)
                     {
                         btnAutoFocus2.BackColor = Color.Lime;
                         Thread.Sleep(1000);
@@ -886,9 +887,9 @@ namespace HOZProject
                     //    fileStream.Dispose();
                     //}
 
-
+                    
                 }
-                else if (ret > 0 && ret < 12)
+                else if(ret>0 && ret<12)
                 {
                     state = true;
                 }
@@ -951,7 +952,7 @@ namespace HOZProject
                 fileStream.Dispose();
             }
             Thread.Sleep(1000);
-            iSEM.SetAutoVideoBrightness();
+            iSEM.SetAutoVideoContrast();
             btnAutoContrast.BackColor = Color.Red;
             st_flag = 4;
             Thread.Sleep(1000);
@@ -971,7 +972,7 @@ namespace HOZProject
                 fileStream.Dispose();
             }
             Thread.Sleep(1000);
-            iSEM.SetAutoVideoBrightness();
+            iSEM.SetAutoVideoBrightnessAndContrast();
             btnAutoBrightness.BackColor = Color.Red;
             btnAutoContrast.BackColor = Color.Red;
             btnAutoBC.BackColor = Color.Red;
@@ -1133,9 +1134,8 @@ namespace HOZProject
             sfd.Filter = "MLF文件|*.MLF";
             if (sfd.ShowDialog() == DialogResult.OK)
             {
-                string fn = Path.GetFileNameWithoutExtension(sfd.FileName).ToUpper();
-                iSEM.CMDMCFFilename(fn);
-
+                //string fn = Path.GetFileNameWithoutExtension(sfd.FileName).ToUpper();
+                iSEM.CMDMCFFilename(sfd.FileName);
             }
         }
         #endregion
@@ -1201,7 +1201,7 @@ namespace HOZProject
             {
                 return;
             }
-            if (!float.TryParse(txtStageY.Text, out sety))
+            if(!float.TryParse(txtStageY.Text,out sety))
             {
                 return;
             }
@@ -1215,10 +1215,10 @@ namespace HOZProject
         private void MoveStagexy()
         {
             float ret = 111;
-            while (true)
+            while(true)
             {
                 ret = iSEM.GetStageIs();
-                if (ret == 0)
+                if(ret==0)
                 {
                     btnMoveXY.BackColor = Color.Lime;
                     break;
@@ -1265,25 +1265,26 @@ namespace HOZProject
 
         private void btnExeEly_Click(object sender, EventArgs e)
         {
-            iSEM.CmdFIBLoadELY(@"E:\HOZ\MillStep2.ely");
+            OpenFileDialog sfd = new OpenFileDialog();
+            sfd.Title = "选择ELY文件:";
+            //sfd.InitialDirectory = @"C:\ProgramData\Carl Zeiss\SmartSEM\User\Default";
+            sfd.Filter = "ELY文件|*.ELY";
+            if (sfd.ShowDialog() == DialogResult.OK)
+            {
+                iSEM.CmdFIBLoadELY(sfd.FileName);
+            } 
         }
 
         private void btnExeEly2_Click(object sender, EventArgs e)
         {
-            iSEM.CmdFIBLoadELY(@"E:\HOZ\MillStep4.ely");
+            iSEM.CmdFIBEXPOSUREELY();
         }
 
         private void btnFIBStatus_Click(object sender, EventArgs e)
         {
-            btnFIBStatus.Text = iSEM.GetFIBApiStatus().ToString();
+            btnFIBStatus.Text = iSEM.GetFIBMode().ToString();
         }
 
-        //测量线程测试
-        private void button1_Click(object sender, EventArgs e)
-        {
-            //FormMeasureTest Measure = new FormMeasureTest();
-            //Measure.Show();
-        }
 
         private void btnPost1_Click(object sender, EventArgs e)
         {
@@ -1365,84 +1366,54 @@ namespace HOZProject
             lblstate6.Text = state.ToString();
         }
 
-        //private void btnPost1_Click(object sender, EventArgs e)
-        //{
-        //    double degree = 0;
-        //    int direction = 0;
-        //    int state = 0;
-        //    wr.Img_OffsetAngle_Direction("D:/aaaa.jpg", out degree, out direction, out state);
-        //    lbldegree1.Text = degree.ToString("0.0");
-        //    lbldirection1.Text = direction.ToString();
-        //    lblstate1.Text = state.ToString();
-        //}
-
-        //private void btnPost2_Click(object sender, EventArgs e)
-        //{
-        //    double offsetx = 0;
-        //    double offsety = 0;
-        //    int state = 0;
-        //    wr.Img_Cut_Position("D:/aaaa.jpg", out offsetx, out offsety, out state);
-        //    lbllocationx.Text = offsetx.ToString("0.0");
-        //    lbllocationy.Text = offsety.ToString("0.0");
-        //    lblstate2.Text = state.ToString();
-        //}
-
-        //private void btnPost3_Click(object sender, EventArgs e)
-        //{
-        //    int state = 0;
-        //    wr.Img_Cut_Success("D:/aaaa.jpg", "D:/bbbb.jpg", out state);
-        //    lblstate3.Text = state.ToString();
-        //}
-
-        //private void btnPost4_Click(object sender, EventArgs e)
-        //{
-        //    double offsetx = 0;
-        //    double offsety = 0;
-        //    int state = 0;
-        //    wr.Img_Trapezoid_Top_Center_Position("D:/aaaa.jpg", out offsetx, out offsety, out state);
-        //    lbltopcx.Text = offsetx.ToString("0.0");
-        //    lbltopcy.Text = offsety.ToString("0.0");
-        //    lblstate4.Text = state.ToString();
-        //}
-
-        //private void btnPost5_Click(object sender, EventArgs e)
-        //{
-        //    List<string> filenames = new List<string>();
-        //    filenames.Add("1111111");
-        //    filenames.Add("2222222");
-        //    filenames.Add("3333333");
-        //    lblfocuspath.Text = wr.Img_Auto_Focus(filenames);
-        //}
-
-        //private void btnPost6_Click(object sender, EventArgs e)
-        //{
-        //    List<string> filenames = new List<string>();
-        //    filenames.Add("1111111");
-        //    filenames.Add("2222222");
-        //    filenames.Add("3333333");
-        //    lblstigpath.Text = wr.Img_Auto_Focus(filenames);
-        //}
-
-        //private void btnPost7_Click(object sender, EventArgs e)
-        //{
-        //    double offsetx = 0;
-        //    double offsety = 0;
-        //    double degree = 0;
-        //    int direction = 0;
-        //    int state = 0;
-        //    wr.Img_Center_Position_OffsetAngle_Direction("D:/aaaa.jpg", out offsetx, out offsety, out degree, out direction, out state);
-        //    lblcenterx.Text = offsetx.ToString("0.0");
-        //    lblcentery.Text = offsety.ToString("0.0");
-        //    lbldegree2.Text = degree.ToString();
-        //    lbldirection2.Text = direction.ToString();
-        //    lblstate5.Text = state.ToString();
-        //}
-
-        //private void btnPost8_Click(object sender, EventArgs e)
-        //{
-        //    int state = 0;
-        //    wr.Img_Measure_Size("D:/aaaa.jpg", "1000", "0.005", out state);
-        //    lblstate6.Text = state.ToString();
-        //}
+        private void btnScanRotationSetLock_Click(object sender, EventArgs e)
+        {
+            iSEM.SetScanRotationOff();
+        }
+
+        private void button1_Click_1(object sender, EventArgs e)
+        {
+            iSEM.SetTiltAngleOff();
+        }
+
+        private void btnTiltAngleSetOn_Click(object sender, EventArgs e)
+        {
+            iSEM.SetTiltAngleOn();
+        }
+
+        private void btnScanRotationSetOn_Click(object sender, EventArgs e)
+        {
+            iSEM.SetScanRotationOn();
+        }
+
+        private void btnExeEly3_Click(object sender, EventArgs e)
+        {
+            iSEM.CmdFIBSTARTELY();
+        }
+
+        private void btnCreateConfig_Click(object sender, EventArgs e)
+        {
+            ConfigManager cfm = new ConfigManager();
+            cfm.PT_Depostion = chkpt0.Checked;
+            cfm.Template_File = txtTemplateFile.Text;
+            cfm.Sample_Name = txtSampleName.Text;
+            cfm.M_Config_Param.Voltage = Convert.ToDouble(txtvoltage.Text);
+            cfm.M_Config_Param.Magnification = Convert.ToDouble(txtMag.Text);
+            cfm.M_Config_Param.Pixel_Size = Convert.ToDouble(txtpixel.Text);
+            cfm.CreateXml(@"E:\test.cfg");
+            cfm.Save(@"E:\test.cfg");
+        }
+
+        private void btnReadConfig_Click(object sender, EventArgs e)
+        {
+            ConfigManager cfm = new ConfigManager();
+            cfm.Read(@"E:\test.cfg");
+            this.ckbPT.Checked = cfm.PT_Depostion;
+            this.lblTemplateFile.Text = cfm.Template_File;
+            this.lblSampleName.Text = cfm.Sample_Name;
+            this.lblvoltage.Text = cfm.M_Config_Param.Voltage.ToString();
+            this.lblmag.Text = cfm.M_Config_Param.Magnification.ToString();
+            this.lblpixel.Text = cfm.M_Config_Param.Pixel_Size.ToString();
+        }
     }
 }

+ 2 - 1
HOZProject/Program.cs

@@ -17,8 +17,9 @@ namespace HOZProject
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             //Application.Run(new FormUCMain());
-            Application.Run(new FormHOZMain());
+            //Application.Run(new FormHOZMain());
             //Application.Run(new FormMeasureTest());
+            Application.Run(new FormUnitControl());
         }
     }
 }

+ 157 - 0
MeasureData/ConfigManager.cs

@@ -0,0 +1,157 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using System.Xml;
+using System.IO;
+using FileManager;
+
+namespace MeasureData
+{
+    public class ConfigManager : ISlo
+    {
+        #region 内容
+        //是否PT沉积
+        private Boolean pt_Depostion;
+        public Boolean PT_Depostion
+        {
+            get { return this.pt_Depostion; }
+            set { this.pt_Depostion = value; }
+        }
+
+        //模板文件
+        private String template_File;
+        public String Template_File
+        {
+            get { return this.template_File; }
+            set { this.template_File = value; }
+        }
+
+        //样品名称
+        private String sample_Name;
+        public String Sample_Name
+        {
+            get { return this.sample_Name; }
+            set { this.sample_Name = value; }
+        }
+
+        //样品配置参数
+        private MeasureConfigParam m_Config_Param;
+        public MeasureConfigParam M_Config_Param
+        {
+            get { return this.m_Config_Param; }
+            set { this.m_Config_Param = value; }
+        }
+        #endregion
+
+        public ConfigManager()
+        {
+            this.m_Config_Param = new MeasureConfigParam();
+        }
+
+
+        /// <summary>
+        /// 创建XML文件
+        /// </summary>
+        /// <param name="filename">创建XML文件的全路径</param>
+        /// <returns>0:失败;1:成功;2:文件已存在</returns>
+        public int CreateXml(String filename)
+        {
+            if (!File.Exists(filename))
+            {
+                if (XmlManager.CreateXmlFile(filename))
+                {
+                    return 1;
+                }
+                else
+                {
+                    return 0;
+                }
+            }
+            else
+            {
+                XmlManager.CreateXmlFile(filename);
+                return 2;
+            }
+        }
+
+        //保存
+        public bool Save(String filename)
+        {
+            XmlDocument doc = new XmlDocument();
+            if (File.Exists(filename))
+            {
+                doc.Load(filename);//载入xml文件               
+            }
+            else
+            {
+                return false; //当前路径不存在               
+            }
+
+            XmlNode root = doc.SelectSingleNode("XMLData");
+            Serialize(true, doc, root);
+            doc.Save(filename);
+
+            return true;
+        }
+
+        //读取
+        public bool Read(String filename)
+        {
+            XmlDocument doc = new XmlDocument();
+            if (File.Exists(filename))
+            {
+                doc.Load(filename);//载入xml文件               
+            }
+            else
+            {
+                return false; //当前路径不存在               
+            }
+
+            XmlNode root = doc.SelectSingleNode("XMLData");
+            Serialize(false, doc, root);
+            //doc.Save(filename);
+
+            return true;
+        }
+
+        //XML文件保存
+        //样品孔存储xml文档
+        public override void Serialize(bool isStoring, XmlDocument xml, XmlNode rootNode)
+        {
+            Slo sFile = new Slo();
+            Slo sParam = new Slo();
+
+
+            xBool pt_depostion = new xBool();
+            xString template_file = new xString();
+            xString sample_name = new xString();
+
+            
+            
+            pt_depostion.AssignValue(this.pt_Depostion);
+            template_file.AssignValue(this.template_File);
+            sample_name.AssignValue(this.sample_Name);
+            sFile.Register("PT_Depostion", pt_depostion);
+            sFile.Register("Template_File", template_file);
+            sFile.Register("Sample_Name", sample_name);
+            sFile.Register("MeasureConfigParam", m_Config_Param);
+
+
+            if (isStoring)
+            {
+                sFile.Serialize(true, xml, rootNode);
+            }
+            else
+            {
+                sFile.Serialize(false, xml, rootNode);
+
+                this.pt_Depostion = pt_depostion.value();
+                this.template_File = template_file.value();
+                this.sample_Name = sample_name.value();
+            }
+        }
+    }
+}

+ 71 - 0
MeasureData/MeasureConfigParam.cs

@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FileManager;
+using System.Xml;
+
+namespace MeasureData
+{
+    public class MeasureConfigParam :ISlo
+    {
+        #region 内容
+        //测量电压
+        private double voltage;
+        public double Voltage
+        {
+            get { return this.voltage; }
+            set { this.voltage = value; }
+        }
+
+        //放大位数
+        private double magnification;
+        public double Magnification
+        {
+            get { return this.magnification; }
+            set { this.magnification = value; }
+        }
+
+        //像素
+        private double pixel_Size;
+        public double Pixel_Size
+        {
+            get { return this.pixel_Size; }
+            set { this.pixel_Size = value; }
+        }
+        #endregion
+
+        public override void Serialize(bool isStoring, XmlDocument xml, XmlNode rootNode)
+        {
+            Slo sFile = new Slo();
+            Slo sParam = new Slo();
+
+
+            xDouble _voltage = new xDouble();
+            xDouble _magnification = new xDouble();
+            xDouble _pixelsize = new xDouble();
+
+            _voltage.AssignValue(this.voltage);
+            _magnification.AssignValue(this.magnification);
+            _pixelsize.AssignValue(this.pixel_Size);
+            sFile.Register("Voltage", _voltage);
+            sFile.Register("Magnification", _magnification);
+            sFile.Register("PixelSize", _pixelsize);
+
+
+            if (isStoring)
+            {
+                sFile.Serialize(true, xml, rootNode);
+            }
+            else
+            {
+                sFile.Serialize(false, xml, rootNode);
+
+                this.voltage = _voltage.value();
+                this.magnification = _magnification.value();
+                this.pixel_Size = _pixelsize.value();
+            }
+        }
+    }
+}

+ 2 - 0
MeasureData/MeasureData.csproj

@@ -47,7 +47,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ConfigManager.cs" />
     <Compile Include="CutHole.cs" />
+    <Compile Include="MeasureConfigParam.cs" />
     <Compile Include="MeasureFile.cs" />
     <Compile Include="MeasureParam.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />

+ 10 - 1
SmartSEMControl/HardwareInterface.cs

@@ -96,6 +96,8 @@ namespace SmartSEMControl
 
         //角度补偿
         float GetTiltAngle();
+        Boolean SetTiltAngleOn();
+        Boolean SetTiltAngleOff();
         Boolean SetTiltAngle(float set);
 
         //抓图
@@ -130,6 +132,8 @@ namespace SmartSEMControl
 
         //Scan Rotate角度接口
         float GetScanRotation();
+        Boolean SetScanRotationOn();
+        Boolean SetScanRotationOff();
         Boolean SetScanRotation(float set);
 
         //像素读取PixelSize
@@ -173,7 +177,7 @@ namespace SmartSEMControl
         Boolean DetectorType(float set);
 
         //执行宏文件
-        Boolean CMDMCFFilename(String filename);
+        Boolean CMDMCFFilename(String _MLFFullFileName);
 
         //样品台状态
         float GetStageIs();
@@ -189,6 +193,11 @@ namespace SmartSEMControl
 
         //加载执行.ely文件
         Boolean CmdFIBLoadELY(String _ELYFullFileName);
+        //FIB确认.ely文件
+        Boolean CmdFIBEXPOSUREELY();
+        //FIB执行.ely文件
+        Boolean CmdFIBSTARTELY();
+
 
         //清除控件
         Boolean Dispose();

+ 119 - 14
SmartSEMControl/SmartSEM.cs

@@ -107,8 +107,11 @@ namespace SmartSEMControl
         #endregion
 
         #region 固定参数
+        //判断这个文件夹是否存在20200826
         private readonly String ELYPATH = @"C:\ProgramData\Carl Zeiss\SmartFIB\API\Drop\";
         private readonly String ELYFILENAME = "ApiLayout.ely";
+        private readonly String MLFPATH = @"C:\ProgramData\Carl Zeiss\SmartSEM\User\Service\";
+        private readonly String MLFFILENAME = "Opton.MLF";
         #endregion
 
         #region 模拟参数
@@ -203,6 +206,9 @@ namespace SmartSEMControl
 
         //FIB状态
         private readonly String DP_SMARTFIB_API_STATUS = "DP_SMARTFIB_API_STATUS";
+
+        //FIB,ELY文件确认前,需要将该变量置为2->FIB
+        private readonly String DP_PATTERNING_MODE = "DP_PATTERNING_MODE";
         #endregion
 
         #region 命令
@@ -233,6 +239,10 @@ namespace SmartSEMControl
 
         //FIB加载.ely文件命令
         private readonly String CMD_SMARTFIB_LOAD_ELY = "CMD_SMARTFIB_LOAD_ELY";
+        //FIB确认.ely文件命令
+        private readonly String CMD_SMARTFIB_PREPARE_EXPOSURE = "CMD_SMARTFIB_PREPARE_EXPOSURE";
+        //FIB开始.ley文件命令
+        private readonly String CMD_FIB_START_MILLING = "CMD_FIB_START_MILLING";
         #endregion
 
         #region 宏文件命令
@@ -249,6 +259,16 @@ namespace SmartSEMControl
         {
             LogManager.InitHardwareLog();
             Init();
+            //判断ELY默认文件夹是否存在
+            if(!Directory.Exists(ELYPATH))
+            {
+                Directory.CreateDirectory(ELYPATH);
+            }
+
+            if (!Directory.Exists(MLFPATH))
+            {
+                Directory.CreateDirectory(MLFPATH);
+            }
         }
         #endregion
 
@@ -782,6 +802,27 @@ namespace SmartSEMControl
                 return float.NaN;
             }
         }
+        /// <summary>
+        /// 角度补偿解锁
+        /// </summary>
+        /// <returns></returns>
+        public Boolean SetTiltAngleOn()
+        {
+            Boolean ret = WriteDataParams(DP_TILT_CORRECTION, 1);
+            LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 1.", ret);
+            return ret;
+        }
+
+        /// <summary>
+        /// 角度补偿锁定
+        /// </summary>
+        /// <returns></returns>
+        public Boolean SetTiltAngleOff()
+        {
+            Boolean ret = WriteDataParams(DP_TILT_CORRECTION, 0);
+            LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 0.", ret);
+            return ret;
+        }
 
         /// <summary>
         /// 设置角度补偿
@@ -791,12 +832,12 @@ namespace SmartSEMControl
         public Boolean SetTiltAngle(float set)
         {
             Boolean ret = false;
-            ret = WriteDataParams(DP_TILT_CORRECTION, 1);
-            LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 1.", ret);
+            //ret = WriteDataParams(DP_TILT_CORRECTION, 1);
+            //LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 1.", ret);
             ret = WriteParams(AP_TILT_ANGLE, set);
             LogManager.AddHardwareLog("SetTiltAngle = " + set.ToString(), ret);
-            ret = WriteDataParams(DP_TILT_CORRECTION, 0);
-            LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 0.", ret);
+            //ret = WriteDataParams(DP_TILT_CORRECTION, 0);
+            //LogManager.AddHardwareLog("Set DP_TILT_CORRECTION = 0.", ret);
             return ret;
         }
         #endregion
@@ -901,7 +942,11 @@ namespace SmartSEMControl
                 {
                     LogManager.AddHardwareLog("GrabImage Filename=" + filename + ",x,y,w,h,type=" + xoff.ToString() + "," + 
                         yoff.ToString() + "," + width.ToString() + "," + height.ToString() + "," + type.ToString(), true);
-                    ImageLive();
+                    float sta = GetImageFrozen();
+                    if (sta == 1)
+                    {
+                        ImageLive();
+                    }
                     return true;
                 }
             }
@@ -1337,6 +1382,28 @@ namespace SmartSEMControl
             }
         }
 
+        /// <summary>
+        /// ScanRotation解锁
+        /// </summary>
+        /// <returns></returns>
+        public Boolean SetScanRotationOn()
+        {
+            Boolean ret = WriteDataParams(DP_SCAN_ROT, 1);
+            LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 1", ret);
+            return ret;
+        }
+
+        /// <summary>
+        /// ScanRotation锁定
+        /// </summary>
+        /// <returns></returns>
+        public Boolean SetScanRotationOff()
+        {
+            Boolean ret = WriteDataParams(DP_SCAN_ROT, 0);
+            LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 0", ret);
+            return ret;
+        }
+
         /// <summary>
         /// 设置Scan Rotate角度接口
         /// </summary>
@@ -1345,12 +1412,12 @@ namespace SmartSEMControl
         public Boolean SetScanRotation(float set)
         {
             Boolean ret = false;
-            ret = WriteDataParams(DP_SCAN_ROT, 1);
-            LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 1", ret);
+            //ret = WriteDataParams(DP_SCAN_ROT, 1);
+            //LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 1", ret);
             ret = WriteParams(AP_SCANROTATION, set);
             LogManager.AddHardwareLog("SetScanRotation = " + set.ToString(), ret);
-            ret = WriteDataParams(DP_SCAN_ROT, 0);
-            LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 0", ret);
+            //ret = WriteDataParams(DP_SCAN_ROT, 0);
+            //LogManager.AddHardwareLog("SetScanRotation DP_SCAN_ROT = 0", ret);
             return ret;
         }
         #endregion
@@ -1461,12 +1528,30 @@ namespace SmartSEMControl
         #endregion
 
         #region 调用宏文件命令
-        public Boolean CMDMCFFilename(String filename)
+        public Boolean CMDMCFFilename(String _MLFFullFileName)
         {
-            String CMDMCF = MCF_FILENAME + filename;
-            Boolean ret = ExecuteCmd(CMDMCF);
-            LogManager.AddHardwareLog("CMDMCFFilename = " + filename, ret);
-            return ret;
+            //String CMDMCF = MCF_FILENAME + filename;
+            //Boolean ret = ExecuteCmd(CMDMCF);
+            //LogManager.AddHardwareLog("CMDMCFFilename = " + filename, ret);
+            //return ret;
+
+            if (File.Exists(_MLFFullFileName) && Directory.Exists(MLFPATH))
+            {
+                //移动文件
+                if (_MLFFullFileName != (MLFPATH + MLFFILENAME))
+                {
+                    File.Copy(_MLFFullFileName, MLFPATH + MLFFILENAME, true);
+                    LogManager.AddHardwareLog("CmdFIBLoadMLF Copy FileName:" + _MLFFullFileName + " To " + MLFPATH + MLFFILENAME, true);
+                }
+                Boolean ret = ExecuteCmd(MCF_FILENAME + MLFFILENAME.Substring(0,MLFFILENAME.Length-4));
+                LogManager.AddHardwareLog("CmdFIBLoadMLF Success Execute " + _MLFFullFileName, true);
+                return ret;
+            }
+            else
+            {
+                LogManager.AddHardwareLog("CmdFIBLoadMLF Faild:" + _MLFFullFileName + " Is Not Exists!", false);
+                return false;
+            }
         }
         #endregion
 
@@ -1854,6 +1939,26 @@ namespace SmartSEMControl
         }
         #endregion
 
+        #region FIB确认.ely文件
+        public Boolean CmdFIBEXPOSUREELY()
+        {
+            Boolean ret = WriteDataParams(DP_PATTERNING_MODE, 2);
+            LogManager.AddHardwareLog("DP_PATTERNING_MODE = 2", ret);
+            ret = ExecuteCmd(CMD_SMARTFIB_PREPARE_EXPOSURE);
+            LogManager.AddHardwareLog("CMD_SMARTFIB_PREPARE_EXPOSURE", ret);
+            return ret;
+        }
+        #endregion
+
+        #region FIB执行.ely文件
+        public Boolean CmdFIBSTARTELY()
+        {
+            Boolean ret = ExecuteCmd(CMD_FIB_START_MILLING);
+            LogManager.AddHardwareLog("CMD_FIB_START_MILLING", ret);
+            return ret;
+        }
+        #endregion
+
         #region 错误代码转义
         private String ErrorToString(long lError)
         {

+ 18 - 22
WebManager/WebResult.cs

@@ -28,12 +28,10 @@ namespace WebManager
         /// </summary>
         /// <param name="ws_ip">WebServer的IP地址</param>
         /// <param name="ws_port">WebServer的端口号</param>
-        /// <param name="ws_path">WebServer的项目名</param>
-        public WebResult(String ws_ip,String ws_port,String ws_path)
+        public WebResult(String ws_ip,String ws_port)
         {
             this.webServer_IP = ws_ip;
             this.webServer_Port = ws_port;
-            this.webServer_Path = ws_path;
             //更新Web网址
             Update_Url();
         }
@@ -43,10 +41,7 @@ namespace WebManager
         /// </summary>
         private void Update_Url()
         {
-            if (this.webServer_Path.Substring(0, 1) != "/")
-            {
-                this.webServer_Path = "/" + this.webServer_Path;
-            }
+            this.webServer_Path = "/" + this.webServer_Path;
             this.Url = "http://" + this.webServer_IP + ":" + this.webServer_Port + this.webServer_Path;
         }
 
@@ -59,7 +54,6 @@ namespace WebManager
             set
             {
                 this.webServer_IP = value;
-                Update_Url();
             }
         }
 
@@ -72,20 +66,6 @@ namespace WebManager
             set
             {
                 this.webServer_Port = value;
-                Update_Url();
-            }
-        }
-
-        /// <summary>
-        /// WebServer的项目名
-        /// </summary>
-        public String WebServer_Path
-        {
-            //get { return this.webServer_IP; }
-            set
-            {
-                this.webServer_Path = value;
-                Update_Url();
             }
         }
 
@@ -114,6 +94,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_OffsetAngle_Direction(String imagePath, out double degree, out int direction, out int state)
         {
+            this.webServer_Path = "test1";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_path", imagePath);
             String res = RequestString(JsonConvert.SerializeObject(json));
@@ -142,6 +124,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_Cut_Position(String imagePath, out double offsetx, out double offsety, out int state)
         {
+            this.webServer_Path = "test2";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_path", imagePath);
             String res = RequestString(JsonConvert.SerializeObject(json));
@@ -170,6 +154,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_Cut_Success(String imageBefore, String imageAfter, out int state)
         {
+            this.webServer_Path = "test3";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_before_path", imageBefore);
             json.Add("img_after_path", imageAfter);
@@ -192,6 +178,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_Trapezoid_Top_Center_Position(String imagePath, out double offsetx, out double offsety, out int state)
         {
+            this.webServer_Path = "test4";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_path", imagePath);
             String res = RequestString(JsonConvert.SerializeObject(json));
@@ -219,6 +207,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public String Img_Auto_Focus(List<String> imagePath)
         {
+            this.webServer_Path = "test5";
+            Update_Url();
             JObject json = new JObject();
             for(int i=0;i<imagePath.Count;i++)
             {
@@ -243,6 +233,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public String Img_Auto_Stigmatic(List<String> imagePath)
         {
+            this.webServer_Path = "test6";
+            Update_Url();
             JObject json = new JObject();
             for (int i = 0; i < imagePath.Count; i++)
             {
@@ -267,6 +259,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_Center_Position_OffsetAngle_Direction(String imagePath, out double offsetx, out double offsety, out double degree, out int direction, out int state)
         {
+            this.webServer_Path = "test7";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_path", imagePath);
             String res = RequestString(JsonConvert.SerializeObject(json));
@@ -301,6 +295,8 @@ namespace WebManager
         /// <returns>json字符串</returns>
         public void Img_Measure_Size(String imagePath, String ratio, String size, out int state)
         {
+            this.webServer_Path = "test8";
+            Update_Url();
             JObject json = new JObject();
             json.Add("img_path", imagePath);
             json.Add("ratio", ratio);

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott