瀏覽代碼

将轴方向测试提出成单独窗体

cxs 3 月之前
父節點
當前提交
b628f870c1

+ 17 - 0
Bin/x64/Debug/Resources/XMLData/AppResource_ZH.xml

@@ -124,6 +124,23 @@
 	  <Control name="str2" text="连接" />
      </Controls>
   </Form>
+  <Form>
+  <Name>StageTest</Name>
+    <Controls>
+	   <Control name="message1" text="请输入要设置的参数!" />
+	  <Control name="message2" text="连接硬件设备成功!" />
+	  <Control name="message3" text="连接硬件设备失败!" />
+	  <Control name="message4" text="设置成功!" />
+	  <Control name="message5" text="设置失败,请检查硬件是否连接!" />
+	  <Control name="message6" text="获取成功!" />
+	  <Control name="message7" text="获取失败,请检查硬件是否连接!" />
+	  <Control name="message8" text="设置的内容格式有错误!" />
+	  <Control name="message9" text="未连接硬件设备!" />
+	  <Control name="message10" text="与硬件设备已断开!" />
+	  <Control name="str1" text="关闭连接" />
+	  <Control name="str2" text="连接" />
+     </Controls>
+  </Form>
  <!-- OTSIncAReportApp -->
 <Form>
    <Name>frmReportApp</Name>

+ 11 - 229
OTSSysMgrApp/ControllerSettingForm.Designer.cs

@@ -57,22 +57,6 @@
             this.tbCollectionTime = new System.Windows.Forms.TextBox();
             this.label2 = new System.Windows.Forms.Label();
             this.lblCollectionTime = new System.Windows.Forms.Label();
-            this.tabImage2 = new System.Windows.Forms.TabPage();
-            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-            this.btn_Recommendedconfiguration = new System.Windows.Forms.Button();
-            this.label5 = new System.Windows.Forms.Label();
-            this.cb_imageresolution = new System.Windows.Forms.ComboBox();
-            this.label4 = new System.Windows.Forms.Label();
-            this.label3 = new System.Windows.Forms.Label();
-            this.tB_scanFieldSize100 = new System.Windows.Forms.TextBox();
-            this.label1 = new System.Windows.Forms.Label();
-            this.btn_confirm = new System.Windows.Forms.Button();
-            this.cb_Ydirection = new System.Windows.Forms.ComboBox();
-            this.label_y = new System.Windows.Forms.Label();
-            this.cb_Xdirection = new System.Windows.Forms.ComboBox();
-            this.label_x = new System.Windows.Forms.Label();
-            this.btn_continuousshot = new System.Windows.Forms.Button();
-            this.panel2 = new System.Windows.Forms.Panel();
             this.tabSetting.SuspendLayout();
             this.tabImage.SuspendLayout();
             this.groupBox2.SuspendLayout();
@@ -81,24 +65,18 @@
             this.tabXRay.SuspendLayout();
             this.groupBox1.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.chartXRay)).BeginInit();
-            this.tabImage2.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-            this.splitContainer1.Panel1.SuspendLayout();
-            this.splitContainer1.Panel2.SuspendLayout();
-            this.splitContainer1.SuspendLayout();
             this.SuspendLayout();
             // 
             // tabSetting
             // 
             this.tabSetting.Controls.Add(this.tabImage);
             this.tabSetting.Controls.Add(this.tabXRay);
-            this.tabSetting.Controls.Add(this.tabImage2);
             this.tabSetting.Dock = System.Windows.Forms.DockStyle.Fill;
             this.tabSetting.Location = new System.Drawing.Point(0, 0);
             this.tabSetting.Margin = new System.Windows.Forms.Padding(2);
             this.tabSetting.Name = "tabSetting";
             this.tabSetting.SelectedIndex = 0;
-            this.tabSetting.Size = new System.Drawing.Size(1050, 770);
+            this.tabSetting.Size = new System.Drawing.Size(959, 770);
             this.tabSetting.TabIndex = 2;
             // 
             // tabImage
@@ -115,7 +93,7 @@
             this.tabImage.Margin = new System.Windows.Forms.Padding(2);
             this.tabImage.Name = "tabImage";
             this.tabImage.Padding = new System.Windows.Forms.Padding(2);
-            this.tabImage.Size = new System.Drawing.Size(1042, 744);
+            this.tabImage.Size = new System.Drawing.Size(951, 744);
             this.tabImage.TabIndex = 1;
             this.tabImage.Text = "BSE测试";
             this.tabImage.UseVisualStyleBackColor = true;
@@ -146,7 +124,7 @@
             this.groupBox2.Margin = new System.Windows.Forms.Padding(2);
             this.groupBox2.Name = "groupBox2";
             this.groupBox2.Padding = new System.Windows.Forms.Padding(2);
-            this.groupBox2.Size = new System.Drawing.Size(1029, 692);
+            this.groupBox2.Size = new System.Drawing.Size(938, 692);
             this.groupBox2.TabIndex = 13;
             this.groupBox2.TabStop = false;
             this.groupBox2.Text = "图像显示";
@@ -159,7 +137,7 @@
             this.panel1.Location = new System.Drawing.Point(2, 16);
             this.panel1.Margin = new System.Windows.Forms.Padding(2);
             this.panel1.Name = "panel1";
-            this.panel1.Size = new System.Drawing.Size(1025, 674);
+            this.panel1.Size = new System.Drawing.Size(934, 674);
             this.panel1.TabIndex = 2;
             // 
             // pbImage
@@ -169,7 +147,7 @@
             this.pbImage.Location = new System.Drawing.Point(0, 0);
             this.pbImage.Margin = new System.Windows.Forms.Padding(2);
             this.pbImage.Name = "pbImage";
-            this.pbImage.Size = new System.Drawing.Size(1025, 674);
+            this.pbImage.Size = new System.Drawing.Size(934, 674);
             this.pbImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
             this.pbImage.TabIndex = 0;
             this.pbImage.TabStop = false;
@@ -177,7 +155,7 @@
             // btnClear
             // 
             this.btnClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnClear.Location = new System.Drawing.Point(957, 77);
+            this.btnClear.Location = new System.Drawing.Point(866, 77);
             this.btnClear.Margin = new System.Windows.Forms.Padding(2);
             this.btnClear.Name = "btnClear";
             this.btnClear.Size = new System.Drawing.Size(67, 50);
@@ -190,7 +168,7 @@
             // btnSaveImage
             // 
             this.btnSaveImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnSaveImage.Location = new System.Drawing.Point(478, 8);
+            this.btnSaveImage.Location = new System.Drawing.Point(387, 8);
             this.btnSaveImage.Margin = new System.Windows.Forms.Padding(2);
             this.btnSaveImage.Name = "btnSaveImage";
             this.btnSaveImage.Size = new System.Drawing.Size(67, 33);
@@ -203,7 +181,7 @@
             // btnDisplay
             // 
             this.btnDisplay.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnDisplay.Location = new System.Drawing.Point(684, 8);
+            this.btnDisplay.Location = new System.Drawing.Point(593, 8);
             this.btnDisplay.Margin = new System.Windows.Forms.Padding(2);
             this.btnDisplay.Name = "btnDisplay";
             this.btnDisplay.Size = new System.Drawing.Size(133, 33);
@@ -267,7 +245,7 @@
             this.tabXRay.Margin = new System.Windows.Forms.Padding(2);
             this.tabXRay.Name = "tabXRay";
             this.tabXRay.Padding = new System.Windows.Forms.Padding(2);
-            this.tabXRay.Size = new System.Drawing.Size(1042, 744);
+            this.tabXRay.Size = new System.Drawing.Size(951, 744);
             this.tabXRay.TabIndex = 0;
             this.tabXRay.Text = "X-Ray测试";
             this.tabXRay.UseVisualStyleBackColor = true;
@@ -299,7 +277,7 @@
             this.chartXRay.Name = "chartXRay";
             series1.ChartArea = "ChartArea1";
             series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
-            series1.CustomProperties = "PixelPointWidth=1, PointWidth=0.1, MaxPixelPointWidth=2000";
+            series1.CustomProperties = "MaxPixelPointWidth=2000, PointWidth=0.1, PixelPointWidth=1";
             series1.LabelBorderDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.NotSet;
             series1.LabelBorderWidth = 0;
             series1.MarkerSize = 1;
@@ -424,186 +402,12 @@
             this.lblCollectionTime.TabIndex = 0;
             this.lblCollectionTime.Text = "采集时间";
             // 
-            // tabImage2
-            // 
-            this.tabImage2.Controls.Add(this.splitContainer1);
-            this.tabImage2.Location = new System.Drawing.Point(4, 22);
-            this.tabImage2.Name = "tabImage2";
-            this.tabImage2.Padding = new System.Windows.Forms.Padding(3);
-            this.tabImage2.Size = new System.Drawing.Size(1042, 744);
-            this.tabImage2.TabIndex = 2;
-            this.tabImage2.Text = "轴方向测试";
-            this.tabImage2.UseVisualStyleBackColor = true;
-            // 
-            // splitContainer1
-            // 
-            this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.splitContainer1.Location = new System.Drawing.Point(7, 8);
-            this.splitContainer1.Name = "splitContainer1";
-            this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
-            // 
-            // splitContainer1.Panel1
-            // 
-            this.splitContainer1.Panel1.Controls.Add(this.btn_Recommendedconfiguration);
-            this.splitContainer1.Panel1.Controls.Add(this.label5);
-            this.splitContainer1.Panel1.Controls.Add(this.cb_imageresolution);
-            this.splitContainer1.Panel1.Controls.Add(this.label4);
-            this.splitContainer1.Panel1.Controls.Add(this.label3);
-            this.splitContainer1.Panel1.Controls.Add(this.tB_scanFieldSize100);
-            this.splitContainer1.Panel1.Controls.Add(this.label1);
-            this.splitContainer1.Panel1.Controls.Add(this.btn_confirm);
-            this.splitContainer1.Panel1.Controls.Add(this.cb_Ydirection);
-            this.splitContainer1.Panel1.Controls.Add(this.label_y);
-            this.splitContainer1.Panel1.Controls.Add(this.cb_Xdirection);
-            this.splitContainer1.Panel1.Controls.Add(this.label_x);
-            this.splitContainer1.Panel1.Controls.Add(this.btn_continuousshot);
-            // 
-            // splitContainer1.Panel2
-            // 
-            this.splitContainer1.Panel2.Controls.Add(this.panel2);
-            this.splitContainer1.Size = new System.Drawing.Size(1029, 730);
-            this.splitContainer1.SplitterDistance = 85;
-            this.splitContainer1.TabIndex = 3;
-            // 
-            // btn_Recommendedconfiguration
-            // 
-            this.btn_Recommendedconfiguration.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-            this.btn_Recommendedconfiguration.Location = new System.Drawing.Point(259, 41);
-            this.btn_Recommendedconfiguration.Name = "btn_Recommendedconfiguration";
-            this.btn_Recommendedconfiguration.Size = new System.Drawing.Size(75, 23);
-            this.btn_Recommendedconfiguration.TabIndex = 16;
-            this.btn_Recommendedconfiguration.Text = "推荐配置";
-            this.btn_Recommendedconfiguration.UseVisualStyleBackColor = true;
-            this.btn_Recommendedconfiguration.Click += new System.EventHandler(this.btn_Recommendedconfiguration_Click);
-            // 
-            // label5
-            // 
-            this.label5.AutoSize = true;
-            this.label5.Location = new System.Drawing.Point(391, 53);
-            this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(131, 12);
-            this.label5.TabIndex = 15;
-            this.label5.Text = "请在 100 放大倍数调试";
-            // 
-            // cb_imageresolution
-            // 
-            this.cb_imageresolution.FormattingEnabled = true;
-            this.cb_imageresolution.Location = new System.Drawing.Point(66, 45);
-            this.cb_imageresolution.Name = "cb_imageresolution";
-            this.cb_imageresolution.Size = new System.Drawing.Size(121, 20);
-            this.cb_imageresolution.TabIndex = 14;
-            // 
-            // label4
-            // 
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(7, 48);
-            this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
-            this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(47, 12);
-            this.label4.TabIndex = 13;
-            this.label4.Text = "分辨率:";
-            // 
-            // label3
-            // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(597, 11);
-            this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(17, 12);
-            this.label3.TabIndex = 8;
-            this.label3.Text = "um";
-            // 
-            // tB_scanFieldSize100
-            // 
-            this.tB_scanFieldSize100.Location = new System.Drawing.Point(491, 7);
-            this.tB_scanFieldSize100.Name = "tB_scanFieldSize100";
-            this.tB_scanFieldSize100.Size = new System.Drawing.Size(100, 21);
-            this.tB_scanFieldSize100.TabIndex = 7;
-            this.tB_scanFieldSize100.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            // 
-            // label1
-            // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(391, 11);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(107, 12);
-            this.label1.TabIndex = 6;
-            this.label1.Text = "100倍下屏幕宽度:";
-            // 
-            // btn_confirm
-            // 
-            this.btn_confirm.Location = new System.Drawing.Point(827, 12);
-            this.btn_confirm.Name = "btn_confirm";
-            this.btn_confirm.Size = new System.Drawing.Size(75, 61);
-            this.btn_confirm.TabIndex = 5;
-            this.btn_confirm.Text = "保存";
-            this.btn_confirm.UseVisualStyleBackColor = true;
-            this.btn_confirm.Click += new System.EventHandler(this.btn_confirm_Click);
-            // 
-            // cb_Ydirection
-            // 
-            this.cb_Ydirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-            this.cb_Ydirection.FormattingEnabled = true;
-            this.cb_Ydirection.Location = new System.Drawing.Point(259, 7);
-            this.cb_Ydirection.Name = "cb_Ydirection";
-            this.cb_Ydirection.Size = new System.Drawing.Size(119, 20);
-            this.cb_Ydirection.TabIndex = 4;
-            // 
-            // label_y
-            // 
-            this.label_y.AutoSize = true;
-            this.label_y.Location = new System.Drawing.Point(193, 11);
-            this.label_y.Name = "label_y";
-            this.label_y.Size = new System.Drawing.Size(71, 12);
-            this.label_y.TabIndex = 3;
-            this.label_y.Text = "y轴正方向:";
-            // 
-            // cb_Xdirection
-            // 
-            this.cb_Xdirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-            this.cb_Xdirection.FormattingEnabled = true;
-            this.cb_Xdirection.Location = new System.Drawing.Point(68, 8);
-            this.cb_Xdirection.Name = "cb_Xdirection";
-            this.cb_Xdirection.Size = new System.Drawing.Size(119, 20);
-            this.cb_Xdirection.TabIndex = 2;
-            // 
-            // label_x
-            // 
-            this.label_x.AutoSize = true;
-            this.label_x.Location = new System.Drawing.Point(3, 11);
-            this.label_x.Name = "label_x";
-            this.label_x.Size = new System.Drawing.Size(71, 12);
-            this.label_x.TabIndex = 1;
-            this.label_x.Text = "x轴正方向:";
-            // 
-            // btn_continuousshot
-            // 
-            this.btn_continuousshot.Location = new System.Drawing.Point(649, 11);
-            this.btn_continuousshot.Name = "btn_continuousshot";
-            this.btn_continuousshot.Size = new System.Drawing.Size(163, 61);
-            this.btn_continuousshot.TabIndex = 0;
-            this.btn_continuousshot.Text = "轴方向验证";
-            this.btn_continuousshot.UseVisualStyleBackColor = true;
-            this.btn_continuousshot.Click += new System.EventHandler(this.btn_continuousshot_Click);
-            // 
-            // panel2
-            // 
-            this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.panel2.Location = new System.Drawing.Point(0, 0);
-            this.panel2.Name = "panel2";
-            this.panel2.Size = new System.Drawing.Size(1029, 641);
-            this.panel2.TabIndex = 2;
-            this.panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.panel2_Paint);
-            // 
             // ControllerSettingForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.BackColor = System.Drawing.Color.White;
-            this.ClientSize = new System.Drawing.Size(1050, 770);
+            this.ClientSize = new System.Drawing.Size(959, 770);
             this.Controls.Add(this.tabSetting);
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
             this.Margin = new System.Windows.Forms.Padding(2);
@@ -623,12 +427,6 @@
             this.tabXRay.PerformLayout();
             this.groupBox1.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.chartXRay)).EndInit();
-            this.tabImage2.ResumeLayout(false);
-            this.splitContainer1.Panel1.ResumeLayout(false);
-            this.splitContainer1.Panel1.PerformLayout();
-            this.splitContainer1.Panel2.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-            this.splitContainer1.ResumeLayout(false);
             this.ResumeLayout(false);
 
         }
@@ -660,21 +458,5 @@
         private System.Windows.Forms.Button btnPointXRay;
         private System.Windows.Forms.Button btnClearData;
         private System.Windows.Forms.Button btnEanalysis;
-        private System.Windows.Forms.TabPage tabImage2;
-        private System.Windows.Forms.SplitContainer splitContainer1;
-        private System.Windows.Forms.Label label5;
-        private System.Windows.Forms.ComboBox cb_imageresolution;
-        private System.Windows.Forms.Label label4;
-        private System.Windows.Forms.Label label3;
-        private System.Windows.Forms.TextBox tB_scanFieldSize100;
-        private System.Windows.Forms.Label label1;
-        private System.Windows.Forms.Button btn_confirm;
-        private System.Windows.Forms.ComboBox cb_Ydirection;
-        private System.Windows.Forms.Label label_y;
-        private System.Windows.Forms.ComboBox cb_Xdirection;
-        private System.Windows.Forms.Label label_x;
-        private System.Windows.Forms.Button btn_continuousshot;
-        private System.Windows.Forms.Button btn_Recommendedconfiguration;
-        private System.Windows.Forms.Panel panel2;
     }
 }

+ 3 - 278
OTSSysMgrApp/ControllerSettingForm.cs

@@ -146,39 +146,6 @@ namespace OTSSysMgrApp
             int width = Convert.ToInt32(tbRWidth.Text);
             int height = Convert.ToInt32(tbRHeight.Text);
             m_EDSHardwareMgr = EDSController.GetEDSController(width, height, 5000,true,"");
-
-            cb_Xdirection.Items.Add("LEFT_TOWARD");
-            cb_Xdirection.Items.Add("RIGHT_TOWARD");
-            cb_Ydirection.Items.Add("UP_TOWARD");
-            cb_Ydirection.Items.Add("DOWN_TOWARD");
-            tB_scanFieldSize100.Text = "1270";
-            cb_imageresolution.Items.Add("1024*768");
-            cb_imageresolution.Items.Add("1024*704");
-            cb_imageresolution.Items.Add("1536*1024");
-            string xmlpath = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf";
-            string xAxisDir = "";
-            string yAxisDir = "";
-            string scanFieldSize = "";
-            ReadConfigXml(xmlpath, ref xAxisDir, ref yAxisDir, ref scanFieldSize);
-            if (xAxisDir.Split(':')[1] == "LEFT_TOWARD")
-            {
-                cb_Xdirection.SelectedIndex = 0;
-            }
-            else
-            {
-                cb_Xdirection.SelectedIndex = 1;
-            }
-            if (yAxisDir.Split(':')[1] == "UP_TOWARD")
-            {
-                cb_Ydirection.SelectedIndex = 0;
-            }
-            else
-            {
-                cb_Ydirection.SelectedIndex = 1;
-            }
-            tB_scanFieldSize100.Text = scanFieldSize;
-            cb_imageresolution.SelectedIndex = 0;
-            InitEvent();
         }
 
         Thread ScanThread = null;
@@ -1086,6 +1053,8 @@ namespace OTSSysMgrApp
             }
         }
 
+
+
         #region 获取元素分析
         private void btnEanalysis_Click(object sender, EventArgs e)
         {
@@ -1186,156 +1155,8 @@ namespace OTSSysMgrApp
 
         #endregion
 
-        private void btn_continuousshot_Click(object sender, EventArgs e)
-        {
-            btn_continuousshot.Enabled = false;
-            btn_confirm.Enabled = false;
-            this.Refresh();
-
-            Graphics g = panel2.CreateGraphics();
-            //g.SmoothingMode = SmoothingMode.HighSpeed;
-            //g.CompositingQuality = CompositingQuality.HighSpeed;
-            g.PixelOffsetMode = PixelOffsetMode.HighQuality;//高质量低速度呈现
-
-            g.SmoothingMode = SmoothingMode.HighQuality;// 指定高质量、低速度呈现。
-            g.InterpolationMode = InterpolationMode.NearestNeighbor;
-
-            ISemController m_Sem = SemController.GetSEMController();
-            bool flag = m_Sem.Connect();
-            //电镜设置对象
-            var cfun = ScanController.GetScanController();
-
-            bool IsConnec = cfun.Init();
-
-            double Magnification = 0;
-            m_Sem.GetMagnification(ref Magnification);
-
-            //double a_dScanFieldSizeX = 0;
-            //double a_dScanFieldSizeY = 0;
-            //m_Sem.GetScanFieldSize(ref a_dScanFieldSizeX,ref a_dScanFieldSizeY);
-
-            double scanFieldSize100 = 0;
-            double.TryParse(tB_scanFieldSize100.Text, out scanFieldSize100);
-            double scanFieldSize = scanFieldSize100 * 100 / Magnification;
-
-            double PositionX = 0;
-            double PositionY = 0;
-            double PositionR = 0;
-            m_Sem.GetSemPositionXY(ref PositionX, ref PositionY, ref PositionR);
-
-            double PositionXO = PositionX;
-            double PositionYO = PositionY;
-            //double PositionR0 = PositionR;
-
-            int width = 1024;
-            int height = 768;
-            //设置图像分辨率
-            if (cb_imageresolution.Text.Trim() == "")
-            {
-                MessageBox.Show("imageresolution cannot be null!");
-                return;
-            }
-            else
-            {
-                width = Convert.ToInt32(cb_imageresolution.Text.Split('*')[0]);
-                height = Convert.ToInt32(cb_imageresolution.Text.Split('*')[1]);
-            }
-
-            this.Refresh();
-
-            double scanFieldSizeH = scanFieldSize * height / width;
-
-            m_Sem.SetScanExternal(true);
-
-            try
-            {
-                for (int i = 0; i < 4; i++)
-                {
-                    if (i == 0)
-                    {
-
-                    }
-                    else if (i == 1)
-                    {
-                        switch (cb_Xdirection.SelectedItem.ToString())
-                        {
-                            case "RIGHT_TOWARD": PositionX += scanFieldSize; break;
-                            default: PositionX -= scanFieldSize; break;
-                        }
-                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
-                    }
-                    else if (i == 2)
-                    {
-                        switch (cb_Ydirection.SelectedItem.ToString())
-                        {
-                            case "UP_TOWARD": PositionY -= scanFieldSizeH; break;
-                            default: PositionY += scanFieldSizeH; break;
-                        }
-                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
-                    }
-                    else
-                    {
-                        switch (cb_Xdirection.SelectedItem.ToString())
-                        {
-                            case "RIGHT_TOWARD": PositionX -= scanFieldSize; break;
-                            default: PositionX += scanFieldSize; break;
-                        }
-                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
-                    }
-                    //Thread.Sleep(50);
-                    byte[] ImageByte = new byte[width * height];
-                    bool resultValue = GetScanImage(width, height, "2", ref ImageByte);
-                    Size size = new Size(panel2.Width / 2, panel2.Height / 2);
-
-                    if (resultValue)
-                    {
-                        if (ImageByte != null)
-                        {
-                            var bitmap = CImageHandler.ToGrayBitmap(ImageByte, width, height);
-                            switch (i)
-                            {
-                                case 0:
-                                    Point point0 = new Point(0,0);
-                                    Rectangle rect0 = new Rectangle(point0,size);
-                                    g.DrawImage(bitmap,rect0);
-                                    break;
-                                case 1:
-                                    Point point1 = new Point(panel2.Width / 2, 0);
-                                    Rectangle rect1 = new Rectangle(point1, size);
-                                    g.DrawImage(bitmap, rect1);
-                                    break;
-                                case 2:
-                                    Point point2 = new Point(panel2.Width/2, panel2.Height / 2);
-                                    Rectangle rect2 = new Rectangle(point2, size);
-                                    g.DrawImage(bitmap, rect2);
-                                    break;
-                                case 3:
-                                    Point point3 = new Point(0, panel2.Height / 2);
-                                    Rectangle rect3 = new Rectangle(point3, size);
-                                    g.DrawImage(bitmap, rect3);
-                                    break;
-                            }
-                            //this.Refresh();
-                        }
-                    }
-                }
-                m_Sem.MoveSEMToPoint(PositionXO, PositionYO);
-            }
-            catch (Exception ex)
-            {
-                log.Error("continuousshot--错误信息:" + ex.ToString());
-            }
-            finally
-            {
-                m_Sem.SetScanExternal(false);
-              
-                btn_continuousshot.Enabled = true;
-                btn_confirm.Enabled = true;
-                btn_continuousshot.Refresh();
 
-                g.Dispose();
-            }
-        }
+        
 
         bool ReadConfigXml(string xmlpath,ref string xAxisDir,ref string yAxisDir,ref string scanFieldSize)
         {
@@ -1394,101 +1215,5 @@ namespace OTSSysMgrApp
             }
             return true;
         }
-
-        private void btn_confirm_Click(object sender, EventArgs e)
-        {
-            double dscanFieldSize100 = 0;
-            if (cb_Xdirection.Text.Trim() != null && cb_imageresolution.Text.Trim() != null && cb_Ydirection.Text.Trim() != null && double.TryParse(tB_scanFieldSize100.Text, out dscanFieldSize100))
-            {
-                string xmlpath = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf";
-                string xAxisDir = "";
-                string yAxisDir = "";
-                switch (cb_Xdirection.SelectedItem.ToString())
-                {
-                    case "LEFT_TOWARD":
-                        xAxisDir = "0:LEFT_TOWARD";
-                        break;
-                    default:
-                        xAxisDir = "1:RIGHT_TOWARD";
-                        break;
-                }
-                switch(cb_Ydirection.Text)
-                {
-                    case "UP_TOWARD":
-                        yAxisDir="0:" + cb_Ydirection.Text;
-                        break;
-                    default:
-                        yAxisDir = "1:DOWN_TOWARD";
-                        break;
-                }
-                SaveConfigXml(xmlpath, xAxisDir, yAxisDir, tB_scanFieldSize100.Text);
-            }
-            else
-            {
-                MessageBox.Show("Please check params!");
-            }
-        }
-
-        private void btn_Recommendedconfiguration_Click(object sender, EventArgs e)
-        {
-            if (recommendedConfiguration == null || recommendedConfiguration.IsDisposed)
-            {
-                recommendedConfiguration = new RecommendedConfiguration(Language.ReadDefaultLanguage());
-
-                recommendedConfiguration.Show();
-            }
-            else
-            {
-                recommendedConfiguration.Activate();
-            }
-        }
-
-        void DrawFrames()
-        {
-            Graphics g = panel2.CreateGraphics();
-            g.SmoothingMode = SmoothingMode.HighQuality;
-            Pen pen = new Pen(Color.Black);
-            g.DrawLine(pen,new Point(panel2.Width/2,0),new Point(panel2.Width / 2, panel2.Height));
-            g.DrawLine(pen, new Point(0, panel2.Height/2), new Point(panel2.Width, panel2.Height/2));
-
-            pen.Dispose();
-            g.Dispose();
-        }
-
-        private void panel2_Paint(object sender, PaintEventArgs e)
-        {
-            DrawFrames();
-        }
-
-        void InitEvent()
-        {
-            string edsType = FileHelper.GetXMLInformations("EDSName");
-            string SemType = FileHelper.GetXMLInformations("SemControllerName");
-
-            if (SemType == "FEI")
-            {
-                if (edsType == "FEI")
-                {
-                    cb_imageresolution.SelectedIndex = 2;
-
-                }
-                else if (edsType == "Oxford")
-                {
-                    cb_imageresolution.SelectedIndex = 0;
-
-                }
-                else if (edsType == "Bruker")
-                {
-                    cb_imageresolution.SelectedIndex = 1;
-
-                }
-                else if (edsType == "OffLine")
-                {
-                    cb_imageresolution.SelectedIndex = 1;
-                }
-                cb_Xdirection.SelectedIndex = 1;
-                cb_Ydirection.SelectedIndex = 0;
-            }
-        }
     }
 }

+ 13 - 5
OTSSysMgrApp/OTSSysMgrApp.csproj

@@ -209,6 +209,10 @@
       <HintPath>..\OpenDll\Nlog\NLog.dll</HintPath>
       <Private>False</Private>
     </Reference>
+    <Reference Include="OTSMeasureApp, Version=3.0.0.0, Culture=neutral, processorArchitecture=AMD64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Bin\x64\Debug\OTSMeasureApp.exe</HintPath>
+    </Reference>
     <Reference Include="OxfordExtenderWrapper, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\Bin\x64\Release_oxford61\OxfordExtender\OxfordExtenderWrapper.exe</HintPath>
@@ -276,6 +280,12 @@
     <Compile Include="ShowXRayElementResultForm.Designer.cs">
       <DependentUpon>ShowXRayElementResultForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="StageTest.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="StageTest.Designer.cs">
+      <DependentUpon>StageTest.cs</DependentUpon>
+    </Compile>
     <Compile Include="SwitchSystemValidation.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -306,6 +316,9 @@
     <EmbeddedResource Include="ShowXRayElementResultForm.resx">
       <DependentUpon>ShowXRayElementResultForm.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="StageTest.resx">
+      <DependentUpon>StageTest.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="SwitchSystemValidation.resx">
       <DependentUpon>SwitchSystemValidation.cs</DependentUpon>
     </EmbeddedResource>
@@ -352,11 +365,6 @@
       <Name>OTSClrInterface</Name>
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\OTSIncAMeasureApp\OTSIncAMeasureApp.csproj">
-      <Project>{474772DC-334A-4E87-BB46-3ABD913AA44A}</Project>
-      <Name>OTSIncAMeasureApp</Name>
-      <Private>False</Private>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 17 - 2
OTSSysMgrApp/OTSSystemManagerForms.Designer.cs

@@ -35,6 +35,7 @@
             this.rdb_ch = new System.Windows.Forms.RadioButton();
             this.tabControl1 = new System.Windows.Forms.TabControl();
             this.tabHardwareSet = new System.Windows.Forms.TabPage();
+            this.btn_stagetest = new System.Windows.Forms.Button();
             this.CmbEDSController = new System.Windows.Forms.ComboBox();
             this.btnEDSTest = new System.Windows.Forms.Button();
             this.btnSEMTest = new System.Windows.Forms.Button();
@@ -127,6 +128,7 @@
             // 
             // tabHardwareSet
             // 
+            this.tabHardwareSet.Controls.Add(this.btn_stagetest);
             this.tabHardwareSet.Controls.Add(this.CmbEDSController);
             this.tabHardwareSet.Controls.Add(this.btnEDSTest);
             this.tabHardwareSet.Controls.Add(this.btnSEMTest);
@@ -143,6 +145,18 @@
             this.tabHardwareSet.Text = "硬件";
             this.tabHardwareSet.UseVisualStyleBackColor = true;
             // 
+            // btn_stagetest
+            // 
+            this.btn_stagetest.AutoEllipsis = true;
+            this.btn_stagetest.Location = new System.Drawing.Point(334, 66);
+            this.btn_stagetest.Margin = new System.Windows.Forms.Padding(2);
+            this.btn_stagetest.Name = "btn_stagetest";
+            this.btn_stagetest.Size = new System.Drawing.Size(77, 24);
+            this.btn_stagetest.TabIndex = 15;
+            this.btn_stagetest.Text = "轴方向测试";
+            this.btn_stagetest.UseVisualStyleBackColor = true;
+            this.btn_stagetest.Click += new System.EventHandler(this.btn_stagetest_Click);
+            // 
             // CmbEDSController
             // 
             this.CmbEDSController.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -161,7 +175,7 @@
             // 
             // btnEDSTest
             // 
-            this.btnEDSTest.Location = new System.Drawing.Point(334, 71);
+            this.btnEDSTest.Location = new System.Drawing.Point(241, 66);
             this.btnEDSTest.Margin = new System.Windows.Forms.Padding(2);
             this.btnEDSTest.Name = "btnEDSTest";
             this.btnEDSTest.Size = new System.Drawing.Size(77, 24);
@@ -172,7 +186,7 @@
             // 
             // btnSEMTest
             // 
-            this.btnSEMTest.Location = new System.Drawing.Point(218, 71);
+            this.btnSEMTest.Location = new System.Drawing.Point(144, 66);
             this.btnSEMTest.Margin = new System.Windows.Forms.Padding(2);
             this.btnSEMTest.Name = "btnSEMTest";
             this.btnSEMTest.Size = new System.Drawing.Size(77, 24);
@@ -369,5 +383,6 @@
         private System.Windows.Forms.PictureBox pictureBox1;
         private System.Windows.Forms.Button btn_otherconfig;
         private System.Windows.Forms.PictureBox pictureBox4;
+        private System.Windows.Forms.Button btn_stagetest;
     }
 }

+ 13 - 0
OTSSysMgrApp/OTSSystemManagerForms.cs

@@ -697,5 +697,18 @@ namespace OTSSysMgrApp
                 MessageBox.Show("File is lost!");
             }
         }
+
+        private void btn_stagetest_Click(object sender, EventArgs e)
+        {
+            StageTest sTextForms = new StageTest();
+            try
+            {
+                sTextForms.Show();
+            }
+            catch (InvalidOperationException ex)
+            {
+                log.Error("OTSSystemManagerForms_btnEDSTest_Click-错误日志:" + ex.ToString());
+            }
+        }
     }
 }

+ 6 - 6
OTSSysMgrApp/OTSSystemManagerForms.resx

@@ -165,7 +165,7 @@
         RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP
         lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l
         f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK
-        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDgAACw4BQL7hQQAAGd5JREFUeF7tnIl3m9WZ
+        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDAAACwwBP0AiyAAAGd5JREFUeF7tnIl3m9WZ
         xilJHG+yJUu2JVn7vu+7bK3WbmuxtXlN7OwbZA9JICRAtgkhQHZCICQtCUlpyWK7MKcwQ4GWc+ZMKe3Q
         QgvJnzKP/EFKbw+BLLY6gznP+bjv910t3y/P+9732pIfeujGrTn9UJHxnO4gMp7THUTGc7qDyHhOdxAZ
         V1WMqZu8qS/bpr4izv+riIyrJMnUX+Pb98c27F6+ekNi9/PJp49qJ/9CzKm+yLhKipz/ldZgyfSVlRqT
@@ -279,7 +279,7 @@
         yHhO36Ubt/4X1wSr+KCdTCMAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="pictureBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
         DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
@@ -326,7 +326,7 @@
         RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP
         lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l
         f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK
-        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDgAACw4BQL7hQQAAGd5JREFUeF7tnIl3m9WZ
+        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDAAACwwBP0AiyAAAGd5JREFUeF7tnIl3m9WZ
         xilJHG+yJUu2JVn7vu+7bK3WbmuxtXlN7OwbZA9JICRAtgkhQHZCICQtCUlpyWK7MKcwQ4GWc+ZMKe3Q
         QgvJnzKP/EFKbw+BLLY6gznP+bjv910t3y/P+9732pIfeujGrTn9UJHxnO4gMp7THUTGc7qDyHhOdxAZ
         V1WMqZu8qS/bpr4izv+riIyrJMnUX+Pb98c27F6+ekNi9/PJp49qJ/9CzKm+yLhKipz/ldZgyfSVlRqT
@@ -440,7 +440,7 @@
         yHhO36Ubt/4X1wSr+KCdTCMAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="pictureBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
         DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
@@ -487,7 +487,7 @@
         RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP
         lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l
         f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK
-        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDgAACw4BQL7hQQAAGd5JREFUeF7tnIl3m9WZ
+        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDAAACwwBP0AiyAAAGd5JREFUeF7tnIl3m9WZ
         xilJHG+yJUu2JVn7vu+7bK3WbmuxtXlN7OwbZA9JICRAtgkhQHZCICQtCUlpyWK7MKcwQ4GWc+ZMKe3Q
         QgvJnzKP/EFKbw+BLLY6gznP+bjv910t3y/P+9732pIfeujGrTn9UJHxnO4gMp7THUTGc7qDyHhOdxAZ
         V1WMqZu8qS/bpr4izv+riIyrJMnUX+Pb98c27F6+ekNi9/PJp49qJ/9CzKm+yLhKipz/ldZgyfSVlRqT
@@ -648,7 +648,7 @@
         RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP
         lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l
         f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK
-        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDgAACw4BQL7hQQAAGd5JREFUeF7tnIl3m9WZ
+        j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDAAACwwBP0AiyAAAGd5JREFUeF7tnIl3m9WZ
         xilJHG+yJUu2JVn7vu+7bK3WbmuxtXlN7OwbZA9JICRAtgkhQHZCICQtCUlpyWK7MKcwQ4GWc+ZMKe3Q
         QgvJnzKP/EFKbw+BLLY6gznP+bjv910t3y/P+9732pIfeujGrTn9UJHxnO4gMp7THUTGc7qDyHhOdxAZ
         V1WMqZu8qS/bpr4izv+riIyrJMnUX+Pb98c27F6+ekNi9/PJp49qJ/9CzKm+yLhKipz/ldZgyfSVlRqT

+ 13 - 13
OTSSysMgrApp/SemTestForms.cs

@@ -524,26 +524,26 @@ namespace OTSSysMgrApp
                     this.Focus();
                     return;
                 }
-                //if (!IsNull(tbSPositionR))
-                //{
-                //    this.Focus();
-                //    return;
-                //}
-                //if (!IsType(tbSPositionR.Text, 2))
-                //{
-                //    this.Focus();
-                //    return;
-                //}
+                if (!IsNull(tbSPositionR))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsType(tbSPositionR.Text, 2))
+                {
+                    this.Focus();
+                    return;
+                }
                 //赋值
                 double PositionX = Convert.ToDouble(tbSPositionX.Text);
                 double PositionY = Convert.ToDouble(tbSPositionY.Text);
-                //double PositionR = Convert.ToDouble(tbSPositionR.Text);
-                bool result = m_SemHardwareMgr.MoveSEMToPoint(PositionX, PositionY);
+                double PositionR = Convert.ToDouble(tbSPositionR.Text);
+                bool result = m_SemHardwareMgr.MoveSEMToPoint(PositionX, PositionY, PositionR);
                 if (result)
                 {
                     //配置结果提示
                     ShowMessage(3);
-                    log.Info("Set successfully, current X and Y coordinates should be:(" + PositionX.ToString() + "," + PositionY.ToString() + ")");
+                    log.Info("Set successfully, current X and Y coordinates should be:(" + PositionX.ToString() + "," + PositionY.ToString() + "," + PositionR.ToString() + ")");
                 }
                 else
                 {

+ 534 - 0
OTSSysMgrApp/StageTest.Designer.cs

@@ -0,0 +1,534 @@
+namespace OTSSysMgrApp
+{
+    partial class StageTest
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+            this.btn_Recommendedconfiguration = new System.Windows.Forms.Button();
+            this.label5 = new System.Windows.Forms.Label();
+            this.cb_imageresolution = new System.Windows.Forms.ComboBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.tB_scanFieldSize100 = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.btn_confirm = new System.Windows.Forms.Button();
+            this.cb_Ydirection = new System.Windows.Forms.ComboBox();
+            this.label_y = new System.Windows.Forms.Label();
+            this.cb_Xdirection = new System.Windows.Forms.ComboBox();
+            this.label_x = new System.Windows.Forms.Label();
+            this.btn_continuousshot = new System.Windows.Forms.Button();
+            this.panel2 = new System.Windows.Forms.Panel();
+            this.panelblank = new System.Windows.Forms.Panel();
+            this.panel4 = new System.Windows.Forms.Panel();
+            this.label16 = new System.Windows.Forms.Label();
+            this.tbSPositionR = new System.Windows.Forms.TextBox();
+            this.tbSPositionY = new System.Windows.Forms.TextBox();
+            this.tbSPositionX = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.btn_setpositionxyr = new System.Windows.Forms.Button();
+            this.label10 = new System.Windows.Forms.Label();
+            this.panel3 = new System.Windows.Forms.Panel();
+            this.label17 = new System.Windows.Forms.Label();
+            this.label8 = new System.Windows.Forms.Label();
+            this.btnGPositionXYR = new System.Windows.Forms.Button();
+            this.tbPositionX = new System.Windows.Forms.TextBox();
+            this.tbPositionR = new System.Windows.Forms.TextBox();
+            this.lblGPositionX = new System.Windows.Forms.Label();
+            this.tbPositionY = new System.Windows.Forms.TextBox();
+            this.lblGPositionY = new System.Windows.Forms.Label();
+            this.label7 = new System.Windows.Forms.Label();
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+            this.splitContainer1.Panel1.SuspendLayout();
+            this.splitContainer1.Panel2.SuspendLayout();
+            this.splitContainer1.SuspendLayout();
+            this.panelblank.SuspendLayout();
+            this.panel4.SuspendLayout();
+            this.panel3.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // splitContainer1
+            // 
+            this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.splitContainer1.Location = new System.Drawing.Point(1, 1);
+            this.splitContainer1.Name = "splitContainer1";
+            this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+            // 
+            // splitContainer1.Panel1
+            // 
+            this.splitContainer1.Panel1.Controls.Add(this.btn_Recommendedconfiguration);
+            this.splitContainer1.Panel1.Controls.Add(this.label5);
+            this.splitContainer1.Panel1.Controls.Add(this.cb_imageresolution);
+            this.splitContainer1.Panel1.Controls.Add(this.label4);
+            this.splitContainer1.Panel1.Controls.Add(this.label3);
+            this.splitContainer1.Panel1.Controls.Add(this.tB_scanFieldSize100);
+            this.splitContainer1.Panel1.Controls.Add(this.label1);
+            this.splitContainer1.Panel1.Controls.Add(this.btn_confirm);
+            this.splitContainer1.Panel1.Controls.Add(this.cb_Ydirection);
+            this.splitContainer1.Panel1.Controls.Add(this.label_y);
+            this.splitContainer1.Panel1.Controls.Add(this.cb_Xdirection);
+            this.splitContainer1.Panel1.Controls.Add(this.label_x);
+            this.splitContainer1.Panel1.Controls.Add(this.btn_continuousshot);
+            // 
+            // splitContainer1.Panel2
+            // 
+            this.splitContainer1.Panel2.Controls.Add(this.panel2);
+            this.splitContainer1.Size = new System.Drawing.Size(1034, 753);
+            this.splitContainer1.SplitterDistance = 87;
+            this.splitContainer1.TabIndex = 3;
+            // 
+            // btn_Recommendedconfiguration
+            // 
+            this.btn_Recommendedconfiguration.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.btn_Recommendedconfiguration.Location = new System.Drawing.Point(267, 45);
+            this.btn_Recommendedconfiguration.Name = "btn_Recommendedconfiguration";
+            this.btn_Recommendedconfiguration.Size = new System.Drawing.Size(75, 23);
+            this.btn_Recommendedconfiguration.TabIndex = 29;
+            this.btn_Recommendedconfiguration.Text = "推荐配置";
+            this.btn_Recommendedconfiguration.UseVisualStyleBackColor = true;
+            this.btn_Recommendedconfiguration.Click += new System.EventHandler(this.btn_Recommendedconfiguration_Click);
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(399, 52);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(131, 12);
+            this.label5.TabIndex = 28;
+            this.label5.Text = "请在 100 放大倍数调试";
+            // 
+            // cb_imageresolution
+            // 
+            this.cb_imageresolution.FormattingEnabled = true;
+            this.cb_imageresolution.Location = new System.Drawing.Point(74, 49);
+            this.cb_imageresolution.Name = "cb_imageresolution";
+            this.cb_imageresolution.Size = new System.Drawing.Size(121, 20);
+            this.cb_imageresolution.TabIndex = 27;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(15, 52);
+            this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(47, 12);
+            this.label4.TabIndex = 26;
+            this.label4.Text = "分辨率:";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(605, 15);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(17, 12);
+            this.label3.TabIndex = 25;
+            this.label3.Text = "um";
+            // 
+            // tB_scanFieldSize100
+            // 
+            this.tB_scanFieldSize100.Location = new System.Drawing.Point(499, 11);
+            this.tB_scanFieldSize100.Name = "tB_scanFieldSize100";
+            this.tB_scanFieldSize100.Size = new System.Drawing.Size(100, 21);
+            this.tB_scanFieldSize100.TabIndex = 24;
+            this.tB_scanFieldSize100.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(399, 15);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(107, 12);
+            this.label1.TabIndex = 23;
+            this.label1.Text = "100倍下屏幕宽度:";
+            // 
+            // btn_confirm
+            // 
+            this.btn_confirm.Location = new System.Drawing.Point(835, 16);
+            this.btn_confirm.Name = "btn_confirm";
+            this.btn_confirm.Size = new System.Drawing.Size(75, 61);
+            this.btn_confirm.TabIndex = 22;
+            this.btn_confirm.Text = "保存";
+            this.btn_confirm.UseVisualStyleBackColor = true;
+            this.btn_confirm.Click += new System.EventHandler(this.btn_confirm_Click);
+            // 
+            // cb_Ydirection
+            // 
+            this.cb_Ydirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cb_Ydirection.FormattingEnabled = true;
+            this.cb_Ydirection.Location = new System.Drawing.Point(267, 11);
+            this.cb_Ydirection.Name = "cb_Ydirection";
+            this.cb_Ydirection.Size = new System.Drawing.Size(119, 20);
+            this.cb_Ydirection.TabIndex = 21;
+            // 
+            // label_y
+            // 
+            this.label_y.AutoSize = true;
+            this.label_y.Location = new System.Drawing.Point(201, 15);
+            this.label_y.Name = "label_y";
+            this.label_y.Size = new System.Drawing.Size(71, 12);
+            this.label_y.TabIndex = 20;
+            this.label_y.Text = "y轴正方向:";
+            // 
+            // cb_Xdirection
+            // 
+            this.cb_Xdirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cb_Xdirection.FormattingEnabled = true;
+            this.cb_Xdirection.Location = new System.Drawing.Point(76, 12);
+            this.cb_Xdirection.Name = "cb_Xdirection";
+            this.cb_Xdirection.Size = new System.Drawing.Size(119, 20);
+            this.cb_Xdirection.TabIndex = 19;
+            // 
+            // label_x
+            // 
+            this.label_x.AutoSize = true;
+            this.label_x.Location = new System.Drawing.Point(11, 15);
+            this.label_x.Name = "label_x";
+            this.label_x.Size = new System.Drawing.Size(71, 12);
+            this.label_x.TabIndex = 18;
+            this.label_x.Text = "x轴正方向:";
+            // 
+            // btn_continuousshot
+            // 
+            this.btn_continuousshot.Location = new System.Drawing.Point(657, 15);
+            this.btn_continuousshot.Name = "btn_continuousshot";
+            this.btn_continuousshot.Size = new System.Drawing.Size(163, 61);
+            this.btn_continuousshot.TabIndex = 17;
+            this.btn_continuousshot.Text = "轴方向验证";
+            this.btn_continuousshot.UseVisualStyleBackColor = true;
+            this.btn_continuousshot.Click += new System.EventHandler(this.btn_continuousshot_Click);
+            // 
+            // panel2
+            // 
+            this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.panel2.Location = new System.Drawing.Point(4, 3);
+            this.panel2.Name = "panel2";
+            this.panel2.Size = new System.Drawing.Size(1029, 656);
+            this.panel2.TabIndex = 3;
+            // 
+            // panelblank
+            // 
+            this.panelblank.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.panelblank.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.panelblank.Controls.Add(this.panel4);
+            this.panelblank.Controls.Add(this.panel3);
+            this.panelblank.Controls.Add(this.label7);
+            this.panelblank.Location = new System.Drawing.Point(1041, 1);
+            this.panelblank.Name = "panelblank";
+            this.panelblank.Size = new System.Drawing.Size(347, 753);
+            this.panelblank.TabIndex = 4;
+            // 
+            // panel4
+            // 
+            this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.panel4.Controls.Add(this.label16);
+            this.panel4.Controls.Add(this.tbSPositionR);
+            this.panel4.Controls.Add(this.tbSPositionY);
+            this.panel4.Controls.Add(this.tbSPositionX);
+            this.panel4.Controls.Add(this.label2);
+            this.panel4.Controls.Add(this.label6);
+            this.panel4.Controls.Add(this.btn_setpositionxyr);
+            this.panel4.Controls.Add(this.label10);
+            this.panel4.Location = new System.Drawing.Point(0, 251);
+            this.panel4.Name = "panel4";
+            this.panel4.Size = new System.Drawing.Size(344, 225);
+            this.panel4.TabIndex = 2;
+            // 
+            // label16
+            // 
+            this.label16.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label16.AutoSize = true;
+            this.label16.Location = new System.Drawing.Point(66, 135);
+            this.label16.Name = "label16";
+            this.label16.Size = new System.Drawing.Size(23, 12);
+            this.label16.TabIndex = 61;
+            this.label16.Text = "R轴";
+            // 
+            // tbSPositionR
+            // 
+            this.tbSPositionR.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbSPositionR.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbSPositionR.Location = new System.Drawing.Point(126, 130);
+            this.tbSPositionR.Margin = new System.Windows.Forms.Padding(2);
+            this.tbSPositionR.Name = "tbSPositionR";
+            this.tbSPositionR.Size = new System.Drawing.Size(131, 23);
+            this.tbSPositionR.TabIndex = 60;
+            // 
+            // tbSPositionY
+            // 
+            this.tbSPositionY.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbSPositionY.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbSPositionY.Location = new System.Drawing.Point(126, 88);
+            this.tbSPositionY.Margin = new System.Windows.Forms.Padding(2);
+            this.tbSPositionY.Name = "tbSPositionY";
+            this.tbSPositionY.Size = new System.Drawing.Size(131, 23);
+            this.tbSPositionY.TabIndex = 59;
+            // 
+            // tbSPositionX
+            // 
+            this.tbSPositionX.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbSPositionX.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbSPositionX.Location = new System.Drawing.Point(126, 43);
+            this.tbSPositionX.Margin = new System.Windows.Forms.Padding(2);
+            this.tbSPositionX.Name = "tbSPositionX";
+            this.tbSPositionX.Size = new System.Drawing.Size(131, 23);
+            this.tbSPositionX.TabIndex = 58;
+            // 
+            // label2
+            // 
+            this.label2.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(66, 52);
+            this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(23, 12);
+            this.label2.TabIndex = 56;
+            this.label2.Text = "X轴";
+            // 
+            // label6
+            // 
+            this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(66, 93);
+            this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(23, 12);
+            this.label6.TabIndex = 57;
+            this.label6.Text = "Y轴";
+            // 
+            // btn_setpositionxyr
+            // 
+            this.btn_setpositionxyr.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.btn_setpositionxyr.Location = new System.Drawing.Point(241, 181);
+            this.btn_setpositionxyr.Margin = new System.Windows.Forms.Padding(2);
+            this.btn_setpositionxyr.Name = "btn_setpositionxyr";
+            this.btn_setpositionxyr.Size = new System.Drawing.Size(99, 29);
+            this.btn_setpositionxyr.TabIndex = 55;
+            this.btn_setpositionxyr.Text = "设置";
+            this.btn_setpositionxyr.UseVisualStyleBackColor = true;
+            this.btn_setpositionxyr.Click += new System.EventHandler(this.btn_setpositionxyr_Click);
+            // 
+            // label10
+            // 
+            this.label10.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label10.AutoSize = true;
+            this.label10.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label10.Location = new System.Drawing.Point(3, 8);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(51, 20);
+            this.label10.TabIndex = 0;
+            this.label10.Text = "写入";
+            // 
+            // panel3
+            // 
+            this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.panel3.Controls.Add(this.label17);
+            this.panel3.Controls.Add(this.label8);
+            this.panel3.Controls.Add(this.btnGPositionXYR);
+            this.panel3.Controls.Add(this.tbPositionX);
+            this.panel3.Controls.Add(this.tbPositionR);
+            this.panel3.Controls.Add(this.lblGPositionX);
+            this.panel3.Controls.Add(this.tbPositionY);
+            this.panel3.Controls.Add(this.lblGPositionY);
+            this.panel3.Location = new System.Drawing.Point(0, 19);
+            this.panel3.Name = "panel3";
+            this.panel3.Size = new System.Drawing.Size(344, 226);
+            this.panel3.TabIndex = 1;
+            // 
+            // label17
+            // 
+            this.label17.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label17.AutoSize = true;
+            this.label17.Location = new System.Drawing.Point(66, 144);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(23, 12);
+            this.label17.TabIndex = 54;
+            this.label17.Text = "R轴";
+            // 
+            // label8
+            // 
+            this.label8.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.label8.AutoSize = true;
+            this.label8.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label8.Location = new System.Drawing.Point(3, 8);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(51, 20);
+            this.label8.TabIndex = 0;
+            this.label8.Text = "读取";
+            // 
+            // btnGPositionXYR
+            // 
+            this.btnGPositionXYR.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.btnGPositionXYR.Location = new System.Drawing.Point(241, 184);
+            this.btnGPositionXYR.Margin = new System.Windows.Forms.Padding(2);
+            this.btnGPositionXYR.Name = "btnGPositionXYR";
+            this.btnGPositionXYR.Size = new System.Drawing.Size(99, 29);
+            this.btnGPositionXYR.TabIndex = 53;
+            this.btnGPositionXYR.Text = "获取";
+            this.btnGPositionXYR.UseVisualStyleBackColor = true;
+            this.btnGPositionXYR.Click += new System.EventHandler(this.btnGPositionXYR_Click);
+            // 
+            // tbPositionX
+            // 
+            this.tbPositionX.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbPositionX.Enabled = false;
+            this.tbPositionX.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbPositionX.Location = new System.Drawing.Point(126, 47);
+            this.tbPositionX.Margin = new System.Windows.Forms.Padding(2);
+            this.tbPositionX.Name = "tbPositionX";
+            this.tbPositionX.ReadOnly = true;
+            this.tbPositionX.Size = new System.Drawing.Size(131, 23);
+            this.tbPositionX.TabIndex = 52;
+            // 
+            // tbPositionR
+            // 
+            this.tbPositionR.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbPositionR.Enabled = false;
+            this.tbPositionR.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbPositionR.Location = new System.Drawing.Point(126, 139);
+            this.tbPositionR.Margin = new System.Windows.Forms.Padding(2);
+            this.tbPositionR.Name = "tbPositionR";
+            this.tbPositionR.ReadOnly = true;
+            this.tbPositionR.Size = new System.Drawing.Size(131, 23);
+            this.tbPositionR.TabIndex = 50;
+            // 
+            // lblGPositionX
+            // 
+            this.lblGPositionX.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.lblGPositionX.AutoSize = true;
+            this.lblGPositionX.Location = new System.Drawing.Point(66, 52);
+            this.lblGPositionX.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.lblGPositionX.Name = "lblGPositionX";
+            this.lblGPositionX.Size = new System.Drawing.Size(23, 12);
+            this.lblGPositionX.TabIndex = 49;
+            this.lblGPositionX.Text = "X轴";
+            // 
+            // tbPositionY
+            // 
+            this.tbPositionY.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.tbPositionY.Enabled = false;
+            this.tbPositionY.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.tbPositionY.Location = new System.Drawing.Point(126, 93);
+            this.tbPositionY.Margin = new System.Windows.Forms.Padding(2);
+            this.tbPositionY.Name = "tbPositionY";
+            this.tbPositionY.ReadOnly = true;
+            this.tbPositionY.Size = new System.Drawing.Size(131, 23);
+            this.tbPositionY.TabIndex = 51;
+            // 
+            // lblGPositionY
+            // 
+            this.lblGPositionY.Anchor = System.Windows.Forms.AnchorStyles.Right;
+            this.lblGPositionY.AutoSize = true;
+            this.lblGPositionY.Location = new System.Drawing.Point(66, 98);
+            this.lblGPositionY.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.lblGPositionY.Name = "lblGPositionY";
+            this.lblGPositionY.Size = new System.Drawing.Size(23, 12);
+            this.lblGPositionY.TabIndex = 48;
+            this.lblGPositionY.Text = "Y轴";
+            // 
+            // label7
+            // 
+            this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.label7.AutoSize = true;
+            this.label7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label7.Location = new System.Drawing.Point(2, 4);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(161, 12);
+            this.label7.TabIndex = 0;
+            this.label7.Text = "样品台位置读取与测试测试";
+            // 
+            // StageTest
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1392, 755);
+            this.Controls.Add(this.panelblank);
+            this.Controls.Add(this.splitContainer1);
+            this.Name = "StageTest";
+            this.ShowIcon = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "样品台测试";
+            this.Load += new System.EventHandler(this.StageTest_Load);
+            this.splitContainer1.Panel1.ResumeLayout(false);
+            this.splitContainer1.Panel1.PerformLayout();
+            this.splitContainer1.Panel2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+            this.splitContainer1.ResumeLayout(false);
+            this.panelblank.ResumeLayout(false);
+            this.panelblank.PerformLayout();
+            this.panel4.ResumeLayout(false);
+            this.panel4.PerformLayout();
+            this.panel3.ResumeLayout(false);
+            this.panel3.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private System.Windows.Forms.SplitContainer splitContainer1;
+        private System.Windows.Forms.Panel panelblank;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Panel panel3;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.Button btnGPositionXYR;
+        private System.Windows.Forms.TextBox tbPositionX;
+        private System.Windows.Forms.TextBox tbPositionR;
+        private System.Windows.Forms.Label lblGPositionX;
+        private System.Windows.Forms.TextBox tbPositionY;
+        private System.Windows.Forms.Label lblGPositionY;
+        private System.Windows.Forms.Panel panel4;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.Button btn_setpositionxyr;
+        private System.Windows.Forms.Button btn_Recommendedconfiguration;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.ComboBox cb_imageresolution;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox tB_scanFieldSize100;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Button btn_confirm;
+        private System.Windows.Forms.ComboBox cb_Ydirection;
+        private System.Windows.Forms.Label label_y;
+        private System.Windows.Forms.ComboBox cb_Xdirection;
+        private System.Windows.Forms.Label label_x;
+        private System.Windows.Forms.Button btn_continuousshot;
+        private System.Windows.Forms.Panel panel2;
+        private System.Windows.Forms.Label label16;
+        private System.Windows.Forms.TextBox tbSPositionR;
+        private System.Windows.Forms.TextBox tbSPositionY;
+        private System.Windows.Forms.TextBox tbSPositionX;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label6;
+    }
+}

+ 691 - 0
OTSSysMgrApp/StageTest.cs

@@ -0,0 +1,691 @@
+using NLog.Fluent;
+using OTSCLRINTERFACE;
+using OTSModelSharp.ServiceCenter;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Xml;
+
+
+namespace OTSSysMgrApp
+{
+    public partial class StageTest : Form
+    {
+
+        #region 全部变量声明
+        RecommendedConfiguration recommendedConfiguration;
+        //连接状态
+        bool ConnectionState = false;
+
+        static string xmlFilePath = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFilePath"].ConnectionString;
+        static string LogPath = System.Configuration.ConfigurationManager.ConnectionStrings["LogPath"].ConnectionString;
+        static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
+        ISemController m_SemHardwareMgr = null;
+        IEDSController m_EDSHardwareMgr = null;
+        //图片
+        Bitmap bitmap = null;
+        //国际化
+        Language lan;
+        //国际化存储信息
+        Hashtable table;
+        public enum connectionEnumType
+        {
+            EDSOnlyPointXRay = 0,
+            EDSMultiPointXRay = 1,
+            EDSAreaXRay = 2,
+            ScanImage = 3
+        }
+
+        #endregion
+        public StageTest()
+        {
+            InitializeComponent();
+            m_EDSHardwareMgr = EDSController.GetEDSController(1024, 768, 5000, true, "");
+            m_SemHardwareMgr = SemController.GetSEMController();
+            lan = new Language(this);
+            table = lan.GetNameTable(this.Name);
+
+            if (!ConnectionState)
+            {
+                //和电镜建立通讯连接
+                ConnectionState = m_SemHardwareMgr.Connect();
+                ///获取当前电镜的ID号
+                //SemType = cfun.GetSemType();
+
+                if (!ConnectionState)
+                {
+                    log.Error(table["message3"].ToString());
+                }
+                else
+                {
+                    string str = table["str1"].ToString();
+                    log.Info("The energy spectrum is connected");
+                }
+            }
+            else
+            {
+                string str = table["str2"].ToString();
+                ConnectionState = false;
+            }
+        }
+
+        private void btnGPositionXYR_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                //赋值
+                double PositionX = 0;
+                double PositionY = 0;
+                double PositionR = 0;
+                //获取参数
+                bool result = m_SemHardwareMgr.GetSemPositionXY(ref PositionX, ref PositionY, ref PositionR);
+                if (result)
+                {
+                    //赋值 显示
+                    tbPositionX.Text = Convert.ToDouble(PositionX).ToString();
+                    tbPositionY.Text = Convert.ToDouble(PositionY).ToString();
+                    tbPositionR.Text = Convert.ToDouble(PositionR).ToString();
+                    log.Info("X,Y-axis coordinates:(" + tbPositionX.Text + "," + tbPositionY.Text + ")");
+                }
+                else
+                {
+                    //配置结果提示
+                    ShowMessage(6);
+                    log.Error("Failed to obtain the X and Y coordinates");
+                }
+            }
+            catch (Exception ex)
+            {
+                //记录日志信息(异常日志)
+                log.Error(ex.Message.ToString());
+            }
+        }
+        private void btn_setpositionxyr_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                if (!IsNull(tbSPositionX))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsType(tbSPositionX.Text, 2))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsNull(tbSPositionY))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsType(tbSPositionY.Text, 2))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsNull(tbSPositionR))
+                {
+                    this.Focus();
+                    return;
+                }
+                if (!IsType(tbSPositionR.Text, 2))
+                {
+                    this.Focus();
+                    return;
+                }
+                //赋值
+                double PositionX = Convert.ToDouble(tbSPositionX.Text);
+                double PositionY = Convert.ToDouble(tbSPositionY.Text);
+                double PositionR = Convert.ToDouble(tbSPositionR.Text);
+                bool result = m_SemHardwareMgr.MoveSEMToPoint(PositionX, PositionY, PositionR);
+                if (result)
+                {
+                    ShowMessage(3);
+                    log.Info("Set successfully, current X and Y coordinates should be:(" + PositionX.ToString() + "," + PositionY.ToString() + PositionR.ToString() + ")");
+                }
+                else
+                {
+                    ShowMessage(4);
+                    log.Error("Failed to set X and Y coordinates!");
+                }
+            }
+            catch (Exception ex)
+            {
+                //记录日志信息
+                log.Error(ex.Message.ToString());
+            }
+        }
+
+        private void btn_Recommendedconfiguration_Click(object sender, EventArgs e)
+        {
+            if (recommendedConfiguration == null || recommendedConfiguration.IsDisposed)
+            {
+                recommendedConfiguration = new RecommendedConfiguration(Language.ReadDefaultLanguage());
+
+                recommendedConfiguration.Show();
+            }
+            else
+            {
+                recommendedConfiguration.Activate();
+            }
+        }
+
+        private void btn_continuousshot_Click(object sender, EventArgs e)
+        {
+            btn_continuousshot.Enabled = false;
+            btn_confirm.Enabled = false;
+            this.Refresh();
+
+            Graphics g = panel2.CreateGraphics();
+            //g.SmoothingMode = SmoothingMode.HighSpeed;
+            //g.CompositingQuality = CompositingQuality.HighSpeed;
+            g.PixelOffsetMode = PixelOffsetMode.HighQuality;//高质量低速度呈现
+
+            g.SmoothingMode = SmoothingMode.HighQuality;// 指定高质量、低速度呈现。
+            g.InterpolationMode = InterpolationMode.NearestNeighbor;
+
+            ISemController m_Sem = SemController.GetSEMController();
+            bool flag = m_Sem.Connect();
+            //电镜设置对象
+            var cfun = ScanController.GetScanController();
+
+            bool IsConnec = cfun.Init();
+
+            double Magnification = 0;
+            m_Sem.GetMagnification(ref Magnification);
+
+            //double a_dScanFieldSizeX = 0;
+            //double a_dScanFieldSizeY = 0;
+            //m_Sem.GetScanFieldSize(ref a_dScanFieldSizeX,ref a_dScanFieldSizeY);
+
+            double scanFieldSize100 = 0;
+            double.TryParse(tB_scanFieldSize100.Text, out scanFieldSize100);
+            double scanFieldSize = scanFieldSize100 * 100 / Magnification;
+
+            double PositionX = 0;
+            double PositionY = 0;
+            double PositionR = 0;
+            m_Sem.GetSemPositionXY(ref PositionX, ref PositionY, ref PositionR);
+
+            double PositionXO = PositionX;
+            double PositionYO = PositionY;
+            //double PositionR0 = PositionR;
+
+            int width = 1024;
+            int height = 768;
+            //设置图像分辨率
+            if (cb_imageresolution.Text.Trim() == "")
+            {
+                MessageBox.Show("imageresolution cannot be null!");
+                return;
+            }
+            else
+            {
+                width = Convert.ToInt32(cb_imageresolution.Text.Split('*')[0]);
+                height = Convert.ToInt32(cb_imageresolution.Text.Split('*')[1]);
+            }
+
+            this.Refresh();
+
+            double scanFieldSizeH = scanFieldSize * height / width;
+
+            m_Sem.SetScanExternal(true);
+
+            try
+            {
+                for (int i = 0; i < 4; i++)
+                {
+                    if (i == 0)
+                    {
+
+                    }
+                    else if (i == 1)
+                    {
+                        switch (cb_Xdirection.SelectedItem.ToString())
+                        {
+                            case "RIGHT_TOWARD": PositionX += scanFieldSize; break;
+                            default: PositionX -= scanFieldSize; break;
+                        }
+                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
+                    }
+                    else if (i == 2)
+                    {
+                        switch (cb_Ydirection.SelectedItem.ToString())
+                        {
+                            case "UP_TOWARD": PositionY -= scanFieldSizeH; break;
+                            default: PositionY += scanFieldSizeH; break;
+                        }
+                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
+                    }
+                    else
+                    {
+                        switch (cb_Xdirection.SelectedItem.ToString())
+                        {
+                            case "RIGHT_TOWARD": PositionX -= scanFieldSize; break;
+                            default: PositionX += scanFieldSize; break;
+                        }
+                        m_Sem.MoveSEMToPoint(PositionX, PositionY);
+                    }
+                    //Thread.Sleep(50);
+                    byte[] ImageByte = new byte[width * height];
+                    bool resultValue = GetScanImage(width, height, "2", ref ImageByte);
+                    Size size = new Size(panel2.Width / 2, panel2.Height / 2);
+
+                    if (resultValue)
+                    {
+                        if (ImageByte != null)
+                        {
+                            var bitmap = CImageHandler.ToGrayBitmap(ImageByte, width, height);
+                            switch (i)
+                            {
+                                case 0:
+                                    Point point0 = new Point(0, 0);
+                                    Rectangle rect0 = new Rectangle(point0, size);
+                                    g.DrawImage(bitmap, rect0);
+                                    break;
+                                case 1:
+                                    Point point1 = new Point(panel2.Width / 2, 0);
+                                    Rectangle rect1 = new Rectangle(point1, size);
+                                    g.DrawImage(bitmap, rect1);
+                                    break;
+                                case 2:
+                                    Point point2 = new Point(panel2.Width / 2, panel2.Height / 2);
+                                    Rectangle rect2 = new Rectangle(point2, size);
+                                    g.DrawImage(bitmap, rect2);
+                                    break;
+                                case 3:
+                                    Point point3 = new Point(0, panel2.Height / 2);
+                                    Rectangle rect3 = new Rectangle(point3, size);
+                                    g.DrawImage(bitmap, rect3);
+                                    break;
+                            }
+                            //this.Refresh();
+                        }
+                    }
+                }
+                m_Sem.MoveSEMToPoint(PositionXO, PositionYO);
+            }
+            catch (Exception ex)
+            {
+                log.Error("continuousshot--错误信息:" + ex.ToString());
+            }
+            finally
+            {
+                m_Sem.SetScanExternal(false);
+
+                btn_continuousshot.Enabled = true;
+                btn_confirm.Enabled = true;
+                btn_continuousshot.Refresh();
+
+                g.Dispose();
+            }
+        }
+
+        private bool GetScanImage(int iWidth, int iHeigh, string DwellTime, ref byte[] bImageData)
+        {
+
+            //电镜设置对象
+            var scan = ScanController.GetScanController();
+            int GetImgCount = 0;
+            try
+            {
+                //连接电镜
+                bool IsConnec = scan.Init();
+                if (!IsConnec)
+                {
+                    return false;
+                }
+
+
+
+                #region 设置图像分辨率
+                //设置宽度
+                if (!scan.SetImageSize(iWidth, iHeigh))
+                {
+
+                    return false;
+                }
+                #endregion
+
+                #region 采集时间
+                //采集时间
+                DwellTimeLevel nDwellTime = DwellTimeLevel.Low;
+                switch (DwellTime)
+                {
+                    case "Low":
+                        nDwellTime = DwellTimeLevel.Low;
+                        break;
+                    case "Medium":
+                        nDwellTime = DwellTimeLevel.Medium;
+                        break;
+                    case "High":
+                        nDwellTime = DwellTimeLevel.High;
+                        break;
+
+                }
+
+                //设置采集时间
+                if (!scan.SetDwellTime(nDwellTime))
+                {
+
+                    return false;
+                }
+                #endregion
+
+
+                int resultCount = iWidth * iHeigh;
+                var img = scan.AcquireBSEImage();
+                bImageData = img.GetImageDataPtr();
+
+
+            }
+            catch (Exception ex)
+            {
+                NLog.LogManager.GetCurrentClassLogger().Error(ex.ToString());
+                return false;
+            }
+
+            return true;
+
+        }
+        private void btn_confirm_Click(object sender, EventArgs e)
+        {
+            double dscanFieldSize100 = 0;
+            if (cb_Xdirection.Text.Trim() != null && cb_imageresolution.Text.Trim() != null && cb_Ydirection.Text.Trim() != null && double.TryParse(tB_scanFieldSize100.Text, out dscanFieldSize100))
+            {
+                string xmlpath = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf";
+                string xAxisDir = "";
+                string yAxisDir = "";
+                switch (cb_Xdirection.SelectedItem.ToString())
+                {
+                    case "LEFT_TOWARD":
+                        xAxisDir = "0:LEFT_TOWARD";
+                        break;
+                    default:
+                        xAxisDir = "1:RIGHT_TOWARD";
+                        break;
+                }
+                switch (cb_Ydirection.Text)
+                {
+                    case "UP_TOWARD":
+                        yAxisDir = "0:" + cb_Ydirection.Text;
+                        break;
+                    default:
+                        yAxisDir = "1:DOWN_TOWARD";
+                        break;
+                }
+                SaveConfigXml(xmlpath, xAxisDir, yAxisDir, tB_scanFieldSize100.Text);
+            }
+            else
+            {
+                MessageBox.Show("Please check params!");
+            }
+        }
+        bool ReadConfigXml(string xmlpath, ref string xAxisDir, ref string yAxisDir, ref string scanFieldSize)
+        {
+            try
+            {
+                XmlDocument xmlDocument = new XmlDocument();
+                xmlDocument.Load(xmlpath);
+                XmlNodeList nodeList = xmlDocument.SelectSingleNode("XMLData").ChildNodes;
+
+                foreach (XmlNode xn in nodeList)
+                {
+                    XmlElement xe = (XmlElement)xn;
+                    if (xe.GetAttribute("RegName") == "StageData")
+                    {
+                        scanFieldSize = xe.GetAttribute("scanFieldSize");
+                        xAxisDir = xe.GetAttribute("xAxisDir");
+                        yAxisDir = xe.GetAttribute("yAxisDir");
+                        break;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.ToString());
+                return false;
+            }
+            return true;
+        }
+        bool SaveConfigXml(string xmlpath, string xAxisDir, string yAxisDir, string scanFieldSize)
+        {
+            try
+            {
+                XmlDocument xmlDocument = new XmlDocument();
+                xmlDocument.Load(xmlpath);
+                XmlNodeList nodeList = xmlDocument.SelectSingleNode("XMLData").ChildNodes;
+
+                foreach (XmlNode xn in nodeList)
+                {
+                    XmlElement xe = (XmlElement)xn;
+                    if (xe.GetAttribute("RegName") == "StageData")
+                    {
+                        xe.SetAttribute("scanFieldSize", scanFieldSize);
+                        xe.SetAttribute("xAxisDir", xAxisDir);
+                        xe.SetAttribute("yAxisDir", yAxisDir);
+                        break;
+                    }
+                }
+
+                xmlDocument.Save(xmlpath);
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.ToString());
+                return false;
+            }
+            return true;
+        }
+        public bool ConnectionSem(connectionEnumType connectionType)
+        {
+            //连接电镜标识
+            bool DisConnResult = false;
+            //判断连接状态
+            if (!ConnectionState)
+            {
+                //连接电镜设置
+                DisConnResult = m_EDSHardwareMgr.Connect();
+            }
+            if (DisConnResult)
+            {
+                ConnectionState = true;
+            }
+            else
+            {
+                ConnectionState = false;
+            }
+            return DisConnResult;
+        }
+        #region 用户信息提示
+        /// <summary>
+        /// 提示
+        /// </summary>
+        /// <param name="Message"></param>
+        private void ShowMessage(int MessageType)
+        {
+            string message1 = table["message1"].ToString();
+            string message2 = table["message2"].ToString();
+            string message3 = table["message3"].ToString();
+            string message4 = table["message4"].ToString();
+            string message5 = table["message5"].ToString();
+            string message6 = table["message6"].ToString();
+            string message7 = table["message7"].ToString();
+            string message8 = table["message8"].ToString();
+            string message9 = table["message9"].ToString();
+            string message10 = table["message10"].ToString();
+            string MessageInfo = string.Empty;
+            switch (MessageType)
+            {
+                case 0:
+                    MessageInfo = message1;
+                    break;
+                case 1:
+                    MessageInfo = message2;
+                    break;
+                case 2:
+                    MessageInfo = message3;
+                    break;
+                case 3:
+                    MessageInfo = message4;
+                    break;
+                case 4:
+                    MessageInfo = message5;
+                    break;
+                case 5:
+                    MessageInfo = message6;
+                    break;
+                case 6:
+                    MessageInfo = message7;
+                    break;
+                case 7:
+                    MessageInfo = message8;
+                    break;
+                case 8:
+                    MessageInfo = message9;
+                    break;
+                case 9:
+                    MessageInfo = message10;
+                    break;
+            }
+            MessageBox.Show(MessageInfo, "Tip");
+        }
+        #endregion
+        #region 判断控制内容是否为空 与 判断输入的格式是否正确
+        /// <summary>
+        /// 判断控制内容是否为空
+        /// </summary>
+        /// <param name="tbContent"></param>
+        /// <returns></returns>
+        public bool IsNull(TextBox tbContent)
+        {
+            if (tbContent.Text.Trim().Equals(""))
+            {
+                //为空提示
+                ShowMessage(0);
+                //获取焦点
+                tbContent.Focus();
+                return false;
+            }
+            return true;
+        }
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="objValue"></param>
+        /// <param name="objType"></param>
+        /// <returns></returns>
+        public bool IsType(object ObjValue, int ObjType)
+        {
+            try
+            {
+                switch (ObjType)
+                {
+                    case 1:
+                        int intValue = Convert.ToInt32(ObjValue);
+                        break;
+                    case 2:
+                        double douValue = Convert.ToDouble(ObjValue);
+                        break;
+                    case 3:
+                        float floValue = Convert.ToSingle(ObjValue);
+                        break;
+                }
+                return true;
+            }
+            catch (Exception)
+            {
+                //为空提示
+                ShowMessage(7);
+                return false;
+            }
+        }
+
+
+
+
+
+
+        #endregion
+
+        void InitEvent()
+        {
+            string edsType = FileHelper.GetXMLInformations("EDSName");
+            string SemType = FileHelper.GetXMLInformations("SemControllerName");
+
+            if (SemType == "FEI")
+            {
+                if (edsType == "FEI")
+                {
+                    cb_imageresolution.SelectedIndex = 2;
+
+                }
+                else if (edsType == "Oxford")
+                {
+                    cb_imageresolution.SelectedIndex = 0;
+
+                }
+                else if (edsType == "Bruker")
+                {
+                    cb_imageresolution.SelectedIndex = 1;
+
+                }
+                else if (edsType == "OffLine")
+                {
+                    cb_imageresolution.SelectedIndex = 1;
+                }
+                cb_Xdirection.SelectedIndex = 1;
+                cb_Ydirection.SelectedIndex = 0;
+            }
+        }
+
+        private void StageTest_Load(object sender, EventArgs e)
+        {
+            Control.CheckForIllegalCrossThreadCalls = false;
+
+            //m_EDSHardwareMgr = EDSController.GetEDSController(width, height, 5000, true, "");
+
+            cb_Xdirection.Items.Add("LEFT_TOWARD");
+            cb_Xdirection.Items.Add("RIGHT_TOWARD");
+            cb_Ydirection.Items.Add("UP_TOWARD");
+            cb_Ydirection.Items.Add("DOWN_TOWARD");
+            tB_scanFieldSize100.Text = "1270";
+            cb_imageresolution.Items.Add("1024*768");
+            cb_imageresolution.Items.Add("1024*704");
+            cb_imageresolution.Items.Add("1536*1024");
+            string xmlpath = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf";
+            string xAxisDir = "";
+            string yAxisDir = "";
+            string scanFieldSize = "";
+            ReadConfigXml(xmlpath, ref xAxisDir, ref yAxisDir, ref scanFieldSize);
+            if (xAxisDir.Split(':')[1] == "LEFT_TOWARD")
+            {
+                cb_Xdirection.SelectedIndex = 0;
+            }
+            else
+            {
+                cb_Xdirection.SelectedIndex = 1;
+            }
+            if (yAxisDir.Split(':')[1] == "UP_TOWARD")
+            {
+                cb_Ydirection.SelectedIndex = 0;
+            }
+            else
+            {
+                cb_Ydirection.SelectedIndex = 1;
+            }
+            tB_scanFieldSize100.Text = scanFieldSize;
+            cb_imageresolution.SelectedIndex = 0;
+            InitEvent();
+        }
+    }
+}

+ 120 - 0
OTSSysMgrApp/StageTest.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>