From 4d0e6429436835ab65ffe70c73afe47dc1a531f7 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期一, 19 一月 2026 08:39:47 +0800
Subject: [PATCH] 在运动控制界面添加可配置的PLC相关参数修复工具图像输入bug添加项目文件。在运动控制界面添加可配置的PLC相关参数。

---
 LB_SmartVision/VisionForm.cs                                                     |    9 
 LB_VisionProcesses/Communicators/BaseCommunicator.cs                             |   14 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs                |    2 
 LB_VisionProcesses/Communicators/TCom/TCPClient.cs                               |    4 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs       |  653 ++++++++++++++++++++++++++++++++++++++++------
 LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs         |   25 -
 LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs                  |   23 -
 LB_SmartVisionCommon/ConfigManager.cs                                            |   10 
 LB_VisionProcesses/Communicators/TCom/UARTPort.cs                                |    4 
 LB_VisionProcesses/Communicators/TCom/TCPServer.cs                               |    4 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx              |    2 
 LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs |    2 
 LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs                            |    4 
 LB_SmartVision/VisionForm.Designer.cs                                            |   73 +++--
 14 files changed, 657 insertions(+), 172 deletions(-)

diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
index a4c2066..41d26a1 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
@@ -36,12 +36,10 @@
             txtSendMsg = new TextBox();
             grpSetting = new GroupBox();
             txtAddress = new TextBox();
-            cmbVarType = new ComboBox();
             cmbType = new ComboBox();
             txtIP = new TextBox();
             txtPort = new TextBox();
             lblPort = new Label();
-            lbVarType = new Label();
             cmbIP = new ComboBox();
             lblType = new Label();
             lblAddress = new Label();
@@ -136,12 +134,10 @@
             // 
             grpSetting.BackColor = Color.FromArgb(32, 41, 50);
             grpSetting.Controls.Add(txtAddress);
-            grpSetting.Controls.Add(cmbVarType);
             grpSetting.Controls.Add(cmbType);
             grpSetting.Controls.Add(txtIP);
             grpSetting.Controls.Add(txtPort);
             grpSetting.Controls.Add(lblPort);
-            grpSetting.Controls.Add(lbVarType);
             grpSetting.Controls.Add(cmbIP);
             grpSetting.Controls.Add(lblType);
             grpSetting.Controls.Add(lblAddress);
@@ -168,17 +164,6 @@
             txtAddress.Size = new Size(124, 24);
             txtAddress.TabIndex = 9;
             txtAddress.TextChanged += txtAddress_TextChanged;
-            // 
-            // cmbVarType
-            // 
-            cmbVarType.DropDownStyle = ComboBoxStyle.DropDownList;
-            cmbVarType.FormattingEnabled = true;
-            cmbVarType.Location = new Point(533, 32);
-            cmbVarType.Margin = new Padding(4);
-            cmbVarType.Name = "cmbVarType";
-            cmbVarType.Size = new Size(124, 26);
-            cmbVarType.TabIndex = 8;
-            cmbVarType.SelectedIndexChanged += cmbVarType_SelectedIndexChanged;
             // 
             // cmbType
             // 
@@ -215,16 +200,6 @@
             lblPort.Size = new Size(38, 18);
             lblPort.TabIndex = 4;
             lblPort.Text = "绔彛";
-            // 
-            // lbVarType
-            // 
-            lbVarType.AutoSize = true;
-            lbVarType.Location = new Point(463, 35);
-            lbVarType.Margin = new Padding(4, 0, 4, 0);
-            lbVarType.Name = "lbVarType";
-            lbVarType.Size = new Size(68, 18);
-            lbVarType.TabIndex = 0;
-            lbVarType.Text = "鍙橀噺绫诲瀷";
             // 
             // cmbIP
             // 
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
index ac1936d..516d367 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
@@ -32,11 +32,6 @@
             {
                 cmbType.Items.Add(communicator.CommunicatorConnections["鍨嬪彿"]?.ToString());
             }
-            cmbVarType.Items.Clear();
-            if (!string.IsNullOrEmpty(communicator.CommunicatorConnections["鍙橀噺绫诲瀷"]?.ToString()))
-            {
-                cmbVarType.Items.Add(communicator.CommunicatorConnections["鍙橀噺绫诲瀷"]?.ToString());
-            }
         }
 
         public CommunicatorForm(BaseCommunicator communicator, string name)
@@ -313,15 +308,15 @@
 
         private void cmbVarType_SelectedIndexChanged(object sender, EventArgs e)
         {
-            if (communicator != null && !communicator.CommunicatorConnections.Contains("鍙橀噺绫诲瀷"))
-            {
-                communicator.CommunicatorConnections.Add("鍙橀噺绫诲瀷", cmbVarType.Text);
-            }
-            else if (communicator != null)
-            {
-                communicator.CommunicatorConnections["鍙橀噺绫诲瀷"] = cmbVarType.Text;
-                communicatorChanged(communicator);
-            }
+            //if (communicator != null && !communicator.CommunicatorConnections.Contains("鍙橀噺绫诲瀷"))
+            //{
+            //    communicator.CommunicatorConnections.Add("鍙橀噺绫诲瀷", cmbVarType.Text);
+            //}
+            //else if (communicator != null)
+            //{
+            //    communicator.CommunicatorConnections["鍙橀噺绫诲瀷"] = cmbVarType.Text;
+            //    communicatorChanged(communicator);
+            //}
         }
     }
 }
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs
index 1df002a..7ec2df7 100644
--- a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs
@@ -63,15 +63,44 @@
             groupBoxXPosition = new GroupBox();
             textBoxXPosition = new TextBox();
             tableLayoutPanel1 = new TableLayoutPanel();
-            textBox1 = new TextBox();
+            textBoxSN = new TextBox();
             uiMarkLabelSN = new Label();
             tableLayoutPanel7 = new TableLayoutPanel();
-            textBox2 = new TextBox();
+            textBoxName = new TextBox();
             uiMarkLabelName = new Label();
             uiGroupBoxImage = new GroupBox();
             uiSplitContainer1 = new SplitContainer();
             themeForm1 = new ReaLTaiizor.Forms.ThemeForm();
             controlBox1 = new ReaLTaiizor.Controls.ControlBox();
+            panel1 = new Panel();
+            groupBoxXVarAddress = new GroupBox();
+            textBoxXVarAddress = new TextBox();
+            groupBoxYVarAddress = new GroupBox();
+            textBoxYVarAddress = new TextBox();
+            groupBoxZVarAddress = new GroupBox();
+            textBoxZVarAddress = new TextBox();
+            groupBoxWVarAddress = new GroupBox();
+            textBoxWVarAddress = new TextBox();
+            groupBoxXDetectLocation = new GroupBox();
+            textBoxXDetectLocation = new TextBox();
+            groupBoxYDetectLocation = new GroupBox();
+            textBoxYDetectLocation = new TextBox();
+            groupBoxZDetectLocation = new GroupBox();
+            textBoxZDetectLocation = new TextBox();
+            groupBoxWDetectLocation = new GroupBox();
+            textBoxWDetectLocation = new TextBox();
+            groupBoxXOriginalLocation = new GroupBox();
+            textBoxXOriginalLocation = new TextBox();
+            groupBoxYOriginalLocation = new GroupBox();
+            textBoxYOriginalLocation = new TextBox();
+            groupBoxZOriginalLocation = new GroupBox();
+            textBoxZOriginalLocation = new TextBox();
+            groupBoxWOriginalLocation = new GroupBox();
+            textBoxWOriginalLocation = new TextBox();
+            groupBoxPulseMotionSpeedAddress = new GroupBox();
+            textBoxPulseMotionSpeedAddress = new TextBox();
+            groupBoxAngularVelocityAddress = new GroupBox();
+            textBoxAngularVelocityAddress = new TextBox();
             uiGroupBoxMotionControl.SuspendLayout();
             tableLayoutPanel3.SuspendLayout();
             tableLayoutPanel6.SuspendLayout();
@@ -89,19 +118,35 @@
             uiSplitContainer1.Panel2.SuspendLayout();
             uiSplitContainer1.SuspendLayout();
             themeForm1.SuspendLayout();
+            panel1.SuspendLayout();
+            groupBoxXVarAddress.SuspendLayout();
+            groupBoxYVarAddress.SuspendLayout();
+            groupBoxZVarAddress.SuspendLayout();
+            groupBoxWVarAddress.SuspendLayout();
+            groupBoxXDetectLocation.SuspendLayout();
+            groupBoxYDetectLocation.SuspendLayout();
+            groupBoxZDetectLocation.SuspendLayout();
+            groupBoxWDetectLocation.SuspendLayout();
+            groupBoxXOriginalLocation.SuspendLayout();
+            groupBoxYOriginalLocation.SuspendLayout();
+            groupBoxZOriginalLocation.SuspendLayout();
+            groupBoxWOriginalLocation.SuspendLayout();
+            groupBoxPulseMotionSpeedAddress.SuspendLayout();
+            groupBoxAngularVelocityAddress.SuspendLayout();
             SuspendLayout();
             // 
             // uiGroupBoxMotionControl
             // 
-            uiGroupBoxMotionControl.Controls.Add(tableLayoutPanel3);
+            uiGroupBoxMotionControl.Controls.Add(panel1);
+            uiGroupBoxMotionControl.Dock = DockStyle.Fill;
             uiGroupBoxMotionControl.Font = new Font("瀹嬩綋", 12F);
             uiGroupBoxMotionControl.ForeColor = SystemColors.Control;
             uiGroupBoxMotionControl.Location = new Point(0, 0);
             uiGroupBoxMotionControl.Margin = new Padding(4, 5, 4, 5);
             uiGroupBoxMotionControl.MinimumSize = new Size(1, 1);
             uiGroupBoxMotionControl.Name = "uiGroupBoxMotionControl";
-            uiGroupBoxMotionControl.Padding = new Padding(0, 32, 0, 0);
-            uiGroupBoxMotionControl.Size = new Size(374, 624);
+            uiGroupBoxMotionControl.Padding = new Padding(0);
+            uiGroupBoxMotionControl.Size = new Size(580, 684);
             uiGroupBoxMotionControl.TabIndex = 18;
             uiGroupBoxMotionControl.TabStop = false;
             uiGroupBoxMotionControl.Text = "杩愬姩鎺у埗鍙傛暟";
@@ -116,16 +161,17 @@
             tableLayoutPanel3.Controls.Add(tableLayoutPanel2, 0, 4);
             tableLayoutPanel3.Controls.Add(tableLayoutPanel1, 0, 0);
             tableLayoutPanel3.Controls.Add(tableLayoutPanel7, 0, 1);
-            tableLayoutPanel3.Location = new Point(0, 55);
+            tableLayoutPanel3.Dock = DockStyle.Fill;
+            tableLayoutPanel3.Location = new Point(0, 3);
             tableLayoutPanel3.Name = "tableLayoutPanel3";
             tableLayoutPanel3.RowCount = 6;
             tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
-            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
-            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
-            tableLayoutPanel3.Size = new Size(374, 560);
+            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 188F));
+            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel3.Size = new Size(580, 658);
             tableLayoutPanel3.TabIndex = 0;
             tableLayoutPanel3.Paint += tableLayoutPanel3_Paint;
             // 
@@ -141,14 +187,14 @@
             tableLayoutPanel6.Name = "tableLayoutPanel6";
             tableLayoutPanel6.RowCount = 1;
             tableLayoutPanel6.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel6.Size = new Size(368, 39);
+            tableLayoutPanel6.Size = new Size(574, 39);
             tableLayoutPanel6.TabIndex = 6;
             // 
             // uiButtonCloseSoftGrab
             // 
             uiButtonCloseSoftGrab.Anchor = AnchorStyles.None;
             uiButtonCloseSoftGrab.BackColor = Color.Black;
-            uiButtonCloseSoftGrab.Location = new Point(225, 5);
+            uiButtonCloseSoftGrab.Location = new Point(379, 5);
             uiButtonCloseSoftGrab.Name = "uiButtonCloseSoftGrab";
             uiButtonCloseSoftGrab.Size = new Size(102, 29);
             uiButtonCloseSoftGrab.TabIndex = 2;
@@ -159,9 +205,9 @@
             // 
             uiButtonHardGrabWithPLC.Anchor = AnchorStyles.None;
             uiButtonHardGrabWithPLC.BackColor = Color.Black;
-            uiButtonHardGrabWithPLC.Location = new Point(41, 5);
+            uiButtonHardGrabWithPLC.Location = new Point(92, 3);
             uiButtonHardGrabWithPLC.Name = "uiButtonHardGrabWithPLC";
-            uiButtonHardGrabWithPLC.Size = new Size(102, 29);
+            uiButtonHardGrabWithPLC.Size = new Size(102, 33);
             uiButtonHardGrabWithPLC.TabIndex = 1;
             uiButtonHardGrabWithPLC.Text = "妯℃嫙閲囬泦";
             uiButtonHardGrabWithPLC.UseVisualStyleBackColor = false;
@@ -177,7 +223,7 @@
             tableLayoutPanel5.Name = "tableLayoutPanel5";
             tableLayoutPanel5.RowCount = 1;
             tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
-            tableLayoutPanel5.Size = new Size(368, 39);
+            tableLayoutPanel5.Size = new Size(574, 39);
             tableLayoutPanel5.TabIndex = 5;
             // 
             // uiButtonGrabOnce
@@ -186,7 +232,7 @@
             uiButtonGrabOnce.Dock = DockStyle.Fill;
             uiButtonGrabOnce.Location = new Point(3, 3);
             uiButtonGrabOnce.Name = "uiButtonGrabOnce";
-            uiButtonGrabOnce.Size = new Size(362, 33);
+            uiButtonGrabOnce.Size = new Size(568, 33);
             uiButtonGrabOnce.TabIndex = 0;
             uiButtonGrabOnce.Text = "鍗曞紶閲囬泦";
             uiButtonGrabOnce.UseVisualStyleBackColor = false;
@@ -194,9 +240,12 @@
             // 
             // tableLayoutPanel4
             // 
-            tableLayoutPanel4.ColumnCount = 2;
-            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 42.81768F));
-            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 57.18232F));
+            tableLayoutPanel4.ColumnCount = 4;
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 160F));
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 160F));
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 120F));
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 120F));
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
             tableLayoutPanel4.Controls.Add(labelPointSpeed, 0, 0);
             tableLayoutPanel4.Controls.Add(textBoxAngleNow, 1, 3);
             tableLayoutPanel4.Controls.Add(labelAngleNow, 0, 3);
@@ -205,15 +254,18 @@
             tableLayoutPanel4.Controls.Add(textBoxAngSpeed, 1, 1);
             tableLayoutPanel4.Controls.Add(labelAngSpeed, 0, 1);
             tableLayoutPanel4.Controls.Add(textBoxPointSpeed, 1, 0);
+            tableLayoutPanel4.Controls.Add(groupBoxPulseMotionSpeedAddress, 2, 0);
+            tableLayoutPanel4.Controls.Add(groupBoxAngularVelocityAddress, 2, 1);
             tableLayoutPanel4.Dock = DockStyle.Fill;
-            tableLayoutPanel4.Location = new Point(3, 373);
+            tableLayoutPanel4.Location = new Point(3, 371);
             tableLayoutPanel4.Name = "tableLayoutPanel4";
-            tableLayoutPanel4.RowCount = 4;
+            tableLayoutPanel4.RowCount = 5;
             tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
-            tableLayoutPanel4.Size = new Size(368, 184);
+            tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel4.Size = new Size(574, 284);
             tableLayoutPanel4.TabIndex = 2;
             // 
             // labelPointSpeed
@@ -223,7 +275,7 @@
             labelPointSpeed.Location = new Point(3, 5);
             labelPointSpeed.Margin = new Padding(3, 5, 3, 5);
             labelPointSpeed.Name = "labelPointSpeed";
-            labelPointSpeed.Size = new Size(151, 35);
+            labelPointSpeed.Size = new Size(154, 35);
             labelPointSpeed.TabIndex = 18;
             labelPointSpeed.Text = "鐐瑰姩閫熷害(mm/s)";
             labelPointSpeed.TextAlign = ContentAlignment.MiddleLeft;
@@ -232,9 +284,9 @@
             // 
             textBoxAngleNow.Anchor = AnchorStyles.Left | AnchorStyles.Right;
             textBoxAngleNow.Enabled = false;
-            textBoxAngleNow.Location = new Point(160, 144);
+            textBoxAngleNow.Location = new Point(163, 142);
             textBoxAngleNow.Name = "textBoxAngleNow";
-            textBoxAngleNow.Size = new Size(205, 30);
+            textBoxAngleNow.Size = new Size(154, 30);
             textBoxAngleNow.TabIndex = 17;
             textBoxAngleNow.Text = "0";
             textBoxAngleNow.TextChanged += textBoxAngleNow_TextChanged;
@@ -246,7 +298,7 @@
             labelAngleNow.Location = new Point(3, 140);
             labelAngleNow.Margin = new Padding(3, 5, 3, 5);
             labelAngleNow.Name = "labelAngleNow";
-            labelAngleNow.Size = new Size(151, 39);
+            labelAngleNow.Size = new Size(154, 35);
             labelAngleNow.TabIndex = 16;
             labelAngleNow.Text = "褰撳墠瑙掑害(掳)";
             labelAngleNow.TextAlign = ContentAlignment.MiddleLeft;
@@ -255,9 +307,9 @@
             // 
             textBoxPositionNow.Anchor = AnchorStyles.Left | AnchorStyles.Right;
             textBoxPositionNow.Enabled = false;
-            textBoxPositionNow.Location = new Point(160, 97);
+            textBoxPositionNow.Location = new Point(163, 97);
             textBoxPositionNow.Name = "textBoxPositionNow";
-            textBoxPositionNow.Size = new Size(205, 30);
+            textBoxPositionNow.Size = new Size(154, 30);
             textBoxPositionNow.TabIndex = 15;
             textBoxPositionNow.Text = "(0,0,0)";
             textBoxPositionNow.TextChanged += textBoxPositionNow_TextChanged;
@@ -269,7 +321,7 @@
             labelPositionNow.Location = new Point(3, 95);
             labelPositionNow.Margin = new Padding(3, 5, 3, 5);
             labelPositionNow.Name = "labelPositionNow";
-            labelPositionNow.Size = new Size(151, 35);
+            labelPositionNow.Size = new Size(154, 35);
             labelPositionNow.TabIndex = 14;
             labelPositionNow.Text = "褰撳墠鐐逛綅(mm)";
             labelPositionNow.TextAlign = ContentAlignment.MiddleLeft;
@@ -277,9 +329,9 @@
             // textBoxAngSpeed
             // 
             textBoxAngSpeed.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-            textBoxAngSpeed.Location = new Point(160, 52);
+            textBoxAngSpeed.Location = new Point(163, 52);
             textBoxAngSpeed.Name = "textBoxAngSpeed";
-            textBoxAngSpeed.Size = new Size(205, 30);
+            textBoxAngSpeed.Size = new Size(154, 30);
             textBoxAngSpeed.TabIndex = 13;
             textBoxAngSpeed.Text = "0";
             textBoxAngSpeed.TextChanged += textBoxAngSpeed_TextChanged;
@@ -293,7 +345,7 @@
             labelAngSpeed.Location = new Point(3, 50);
             labelAngSpeed.Margin = new Padding(3, 5, 3, 5);
             labelAngSpeed.Name = "labelAngSpeed";
-            labelAngSpeed.Size = new Size(151, 35);
+            labelAngSpeed.Size = new Size(154, 35);
             labelAngSpeed.TabIndex = 12;
             labelAngSpeed.Text = "瑙掗�熷害(rad/s)";
             labelAngSpeed.TextAlign = ContentAlignment.MiddleLeft;
@@ -301,9 +353,9 @@
             // textBoxPointSpeed
             // 
             textBoxPointSpeed.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-            textBoxPointSpeed.Location = new Point(160, 7);
+            textBoxPointSpeed.Location = new Point(163, 7);
             textBoxPointSpeed.Name = "textBoxPointSpeed";
-            textBoxPointSpeed.Size = new Size(205, 30);
+            textBoxPointSpeed.Size = new Size(154, 30);
             textBoxPointSpeed.TabIndex = 11;
             textBoxPointSpeed.Text = "0";
             textBoxPointSpeed.TextChanged += textBoxPointSpeed_TextChanged;
@@ -312,10 +364,13 @@
             // 
             // tableLayoutPanel2
             // 
-            tableLayoutPanel2.ColumnCount = 3;
-            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
-            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F));
-            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
+            tableLayoutPanel2.ColumnCount = 6;
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 45F));
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100F));
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 45F));
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
+            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
             tableLayoutPanel2.Controls.Add(uiButtonIncreasePitchAngle, 2, 3);
             tableLayoutPanel2.Controls.Add(groupBoxPitchAnglePosition, 1, 3);
             tableLayoutPanel2.Controls.Add(uiButtonDecreasePitchAngle, 0, 3);
@@ -328,6 +383,18 @@
             tableLayoutPanel2.Controls.Add(uiButtonIncreaseX, 2, 0);
             tableLayoutPanel2.Controls.Add(uiButtonDecreaseX, 0, 0);
             tableLayoutPanel2.Controls.Add(groupBoxXPosition, 1, 0);
+            tableLayoutPanel2.Controls.Add(groupBoxYVarAddress, 3, 1);
+            tableLayoutPanel2.Controls.Add(groupBoxXVarAddress, 3, 0);
+            tableLayoutPanel2.Controls.Add(groupBoxZVarAddress, 3, 2);
+            tableLayoutPanel2.Controls.Add(groupBoxWVarAddress, 3, 3);
+            tableLayoutPanel2.Controls.Add(groupBoxYDetectLocation, 4, 1);
+            tableLayoutPanel2.Controls.Add(groupBoxZDetectLocation, 4, 2);
+            tableLayoutPanel2.Controls.Add(groupBoxWDetectLocation, 4, 3);
+            tableLayoutPanel2.Controls.Add(groupBoxXDetectLocation, 4, 0);
+            tableLayoutPanel2.Controls.Add(groupBoxXOriginalLocation, 5, 0);
+            tableLayoutPanel2.Controls.Add(groupBoxYOriginalLocation, 5, 1);
+            tableLayoutPanel2.Controls.Add(groupBoxZOriginalLocation, 5, 2);
+            tableLayoutPanel2.Controls.Add(groupBoxWOriginalLocation, 5, 3);
             tableLayoutPanel2.Dock = DockStyle.Fill;
             tableLayoutPanel2.Location = new Point(3, 183);
             tableLayoutPanel2.Name = "tableLayoutPanel2";
@@ -336,17 +403,17 @@
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
-            tableLayoutPanel2.Size = new Size(368, 184);
+            tableLayoutPanel2.Size = new Size(574, 182);
             tableLayoutPanel2.TabIndex = 3;
             // 
             // uiButtonIncreasePitchAngle
             // 
             uiButtonIncreasePitchAngle.BackColor = Color.Black;
             uiButtonIncreasePitchAngle.Dock = DockStyle.Left;
-            uiButtonIncreasePitchAngle.Location = new Point(298, 140);
+            uiButtonIncreasePitchAngle.Location = new Point(150, 140);
             uiButtonIncreasePitchAngle.Margin = new Padding(5);
             uiButtonIncreasePitchAngle.Name = "uiButtonIncreasePitchAngle";
-            uiButtonIncreasePitchAngle.Size = new Size(32, 39);
+            uiButtonIncreasePitchAngle.Size = new Size(32, 37);
             uiButtonIncreasePitchAngle.TabIndex = 27;
             uiButtonIncreasePitchAngle.Text = "+";
             uiButtonIncreasePitchAngle.UseVisualStyleBackColor = false;
@@ -355,12 +422,12 @@
             // groupBoxPitchAnglePosition
             // 
             groupBoxPitchAnglePosition.Controls.Add(textBoxPitchAnglePosition);
+            groupBoxPitchAnglePosition.Dock = DockStyle.Fill;
             groupBoxPitchAnglePosition.Font = new Font("瀹嬩綋", 8F);
             groupBoxPitchAnglePosition.ForeColor = Color.White;
-            groupBoxPitchAnglePosition.Location = new Point(123, 138);
-            groupBoxPitchAnglePosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxPitchAnglePosition.Location = new Point(48, 138);
             groupBoxPitchAnglePosition.Name = "groupBoxPitchAnglePosition";
-            groupBoxPitchAnglePosition.Size = new Size(115, 39);
+            groupBoxPitchAnglePosition.Size = new Size(94, 41);
             groupBoxPitchAnglePosition.TabIndex = 26;
             groupBoxPitchAnglePosition.TabStop = false;
             groupBoxPitchAnglePosition.Text = "淇话瑙�(掳)";
@@ -369,10 +436,10 @@
             // 
             textBoxPitchAnglePosition.Dock = DockStyle.Bottom;
             textBoxPitchAnglePosition.Font = new Font("瀹嬩綋", 10F);
-            textBoxPitchAnglePosition.Location = new Point(3, 16);
+            textBoxPitchAnglePosition.Location = new Point(3, 18);
             textBoxPitchAnglePosition.Multiline = true;
             textBoxPitchAnglePosition.Name = "textBoxPitchAnglePosition";
-            textBoxPitchAnglePosition.Size = new Size(109, 20);
+            textBoxPitchAnglePosition.Size = new Size(88, 20);
             textBoxPitchAnglePosition.TabIndex = 13;
             textBoxPitchAnglePosition.Text = "1";
             textBoxPitchAnglePosition.KeyDown += textBoxXPosition_KeyDown;
@@ -382,10 +449,10 @@
             // 
             uiButtonDecreasePitchAngle.BackColor = Color.Black;
             uiButtonDecreasePitchAngle.Dock = DockStyle.Right;
-            uiButtonDecreasePitchAngle.Location = new Point(37, 140);
+            uiButtonDecreasePitchAngle.Location = new Point(9, 140);
             uiButtonDecreasePitchAngle.Margin = new Padding(5);
             uiButtonDecreasePitchAngle.Name = "uiButtonDecreasePitchAngle";
-            uiButtonDecreasePitchAngle.Size = new Size(31, 39);
+            uiButtonDecreasePitchAngle.Size = new Size(31, 37);
             uiButtonDecreasePitchAngle.TabIndex = 25;
             uiButtonDecreasePitchAngle.Text = "-";
             uiButtonDecreasePitchAngle.UseVisualStyleBackColor = false;
@@ -394,12 +461,12 @@
             // groupBoxZPosition
             // 
             groupBoxZPosition.Controls.Add(textBoxZPosition);
+            groupBoxZPosition.Dock = DockStyle.Fill;
             groupBoxZPosition.Font = new Font("瀹嬩綋", 8F);
             groupBoxZPosition.ForeColor = Color.White;
-            groupBoxZPosition.Location = new Point(123, 93);
-            groupBoxZPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxZPosition.Location = new Point(48, 93);
             groupBoxZPosition.Name = "groupBoxZPosition";
-            groupBoxZPosition.Size = new Size(115, 39);
+            groupBoxZPosition.Size = new Size(94, 39);
             groupBoxZPosition.TabIndex = 24;
             groupBoxZPosition.TabStop = false;
             groupBoxZPosition.Text = "Z(mm)";
@@ -411,7 +478,7 @@
             textBoxZPosition.Location = new Point(3, 16);
             textBoxZPosition.Multiline = true;
             textBoxZPosition.Name = "textBoxZPosition";
-            textBoxZPosition.Size = new Size(109, 20);
+            textBoxZPosition.Size = new Size(88, 20);
             textBoxZPosition.TabIndex = 13;
             textBoxZPosition.Text = "1";
             textBoxZPosition.KeyDown += textBoxXPosition_KeyDown;
@@ -420,12 +487,12 @@
             // groupBoxYPosition
             // 
             groupBoxYPosition.Controls.Add(textBoxYPosition);
+            groupBoxYPosition.Dock = DockStyle.Fill;
             groupBoxYPosition.Font = new Font("瀹嬩綋", 8F);
             groupBoxYPosition.ForeColor = Color.White;
-            groupBoxYPosition.Location = new Point(123, 48);
-            groupBoxYPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxYPosition.Location = new Point(48, 48);
             groupBoxYPosition.Name = "groupBoxYPosition";
-            groupBoxYPosition.Size = new Size(115, 39);
+            groupBoxYPosition.Size = new Size(94, 39);
             groupBoxYPosition.TabIndex = 23;
             groupBoxYPosition.TabStop = false;
             groupBoxYPosition.Text = "Y(mm)";
@@ -437,7 +504,7 @@
             textBoxYPosition.Location = new Point(3, 16);
             textBoxYPosition.Multiline = true;
             textBoxYPosition.Name = "textBoxYPosition";
-            textBoxYPosition.Size = new Size(109, 20);
+            textBoxYPosition.Size = new Size(88, 20);
             textBoxYPosition.TabIndex = 13;
             textBoxYPosition.Text = "1";
             textBoxYPosition.KeyDown += textBoxXPosition_KeyDown;
@@ -447,7 +514,7 @@
             // 
             uiButtonIncreaseZ.BackColor = Color.Black;
             uiButtonIncreaseZ.Dock = DockStyle.Left;
-            uiButtonIncreaseZ.Location = new Point(298, 95);
+            uiButtonIncreaseZ.Location = new Point(150, 95);
             uiButtonIncreaseZ.Margin = new Padding(5);
             uiButtonIncreaseZ.Name = "uiButtonIncreaseZ";
             uiButtonIncreaseZ.Size = new Size(32, 35);
@@ -460,7 +527,7 @@
             // 
             uiButtonDecreaseZ.BackColor = Color.Black;
             uiButtonDecreaseZ.Dock = DockStyle.Right;
-            uiButtonDecreaseZ.Location = new Point(37, 95);
+            uiButtonDecreaseZ.Location = new Point(9, 95);
             uiButtonDecreaseZ.Margin = new Padding(5);
             uiButtonDecreaseZ.Name = "uiButtonDecreaseZ";
             uiButtonDecreaseZ.Size = new Size(31, 35);
@@ -473,7 +540,7 @@
             // 
             uiButtonIncreaseY.BackColor = Color.Black;
             uiButtonIncreaseY.Dock = DockStyle.Left;
-            uiButtonIncreaseY.Location = new Point(298, 50);
+            uiButtonIncreaseY.Location = new Point(150, 50);
             uiButtonIncreaseY.Margin = new Padding(5);
             uiButtonIncreaseY.Name = "uiButtonIncreaseY";
             uiButtonIncreaseY.Size = new Size(32, 35);
@@ -486,7 +553,7 @@
             // 
             uiButtonDecreaseY.BackColor = Color.Black;
             uiButtonDecreaseY.Dock = DockStyle.Right;
-            uiButtonDecreaseY.Location = new Point(37, 50);
+            uiButtonDecreaseY.Location = new Point(9, 50);
             uiButtonDecreaseY.Margin = new Padding(5);
             uiButtonDecreaseY.Name = "uiButtonDecreaseY";
             uiButtonDecreaseY.Size = new Size(31, 35);
@@ -499,7 +566,7 @@
             // 
             uiButtonIncreaseX.BackColor = Color.Black;
             uiButtonIncreaseX.Dock = DockStyle.Left;
-            uiButtonIncreaseX.Location = new Point(298, 5);
+            uiButtonIncreaseX.Location = new Point(150, 5);
             uiButtonIncreaseX.Margin = new Padding(5);
             uiButtonIncreaseX.Name = "uiButtonIncreaseX";
             uiButtonIncreaseX.Size = new Size(32, 35);
@@ -512,7 +579,7 @@
             // 
             uiButtonDecreaseX.BackColor = Color.Black;
             uiButtonDecreaseX.Dock = DockStyle.Right;
-            uiButtonDecreaseX.Location = new Point(37, 5);
+            uiButtonDecreaseX.Location = new Point(9, 5);
             uiButtonDecreaseX.Margin = new Padding(5);
             uiButtonDecreaseX.Name = "uiButtonDecreaseX";
             uiButtonDecreaseX.Size = new Size(31, 35);
@@ -524,12 +591,12 @@
             // groupBoxXPosition
             // 
             groupBoxXPosition.Controls.Add(textBoxXPosition);
+            groupBoxXPosition.Dock = DockStyle.Fill;
             groupBoxXPosition.Font = new Font("瀹嬩綋", 8F);
             groupBoxXPosition.ForeColor = Color.White;
-            groupBoxXPosition.Location = new Point(123, 3);
-            groupBoxXPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxXPosition.Location = new Point(48, 3);
             groupBoxXPosition.Name = "groupBoxXPosition";
-            groupBoxXPosition.Size = new Size(115, 39);
+            groupBoxXPosition.Size = new Size(94, 39);
             groupBoxXPosition.TabIndex = 21;
             groupBoxXPosition.TabStop = false;
             groupBoxXPosition.Text = "X(mm)";
@@ -541,7 +608,7 @@
             textBoxXPosition.Location = new Point(3, 16);
             textBoxXPosition.Multiline = true;
             textBoxXPosition.Name = "textBoxXPosition";
-            textBoxXPosition.Size = new Size(109, 20);
+            textBoxXPosition.Size = new Size(88, 20);
             textBoxXPosition.TabIndex = 12;
             textBoxXPosition.Text = "1";
             textBoxXPosition.KeyDown += textBoxXPosition_KeyDown;
@@ -552,25 +619,25 @@
             tableLayoutPanel1.ColumnCount = 2;
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 75F));
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
-            tableLayoutPanel1.Controls.Add(textBox1, 1, 0);
+            tableLayoutPanel1.Controls.Add(textBoxSN, 1, 0);
             tableLayoutPanel1.Controls.Add(uiMarkLabelSN, 0, 0);
             tableLayoutPanel1.Dock = DockStyle.Fill;
             tableLayoutPanel1.Location = new Point(3, 3);
             tableLayoutPanel1.Name = "tableLayoutPanel1";
             tableLayoutPanel1.RowCount = 1;
             tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel1.Size = new Size(368, 39);
+            tableLayoutPanel1.Size = new Size(574, 39);
             tableLayoutPanel1.TabIndex = 4;
             tableLayoutPanel1.Paint += tableLayoutPanel1_Paint;
             // 
-            // textBox1
+            // textBoxSN
             // 
-            textBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-            textBox1.Enabled = false;
-            textBox1.Location = new Point(78, 4);
-            textBox1.Name = "textBox1";
-            textBox1.Size = new Size(287, 30);
-            textBox1.TabIndex = 20;
+            textBoxSN.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxSN.Enabled = false;
+            textBoxSN.Location = new Point(78, 4);
+            textBoxSN.Name = "textBoxSN";
+            textBoxSN.Size = new Size(493, 30);
+            textBoxSN.TabIndex = 20;
             // 
             // uiMarkLabelSN
             // 
@@ -589,24 +656,24 @@
             tableLayoutPanel7.ColumnCount = 2;
             tableLayoutPanel7.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 75F));
             tableLayoutPanel7.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
-            tableLayoutPanel7.Controls.Add(textBox2, 1, 0);
+            tableLayoutPanel7.Controls.Add(textBoxName, 1, 0);
             tableLayoutPanel7.Controls.Add(uiMarkLabelName, 0, 0);
             tableLayoutPanel7.Dock = DockStyle.Fill;
             tableLayoutPanel7.Location = new Point(3, 48);
             tableLayoutPanel7.Name = "tableLayoutPanel7";
             tableLayoutPanel7.RowCount = 1;
             tableLayoutPanel7.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel7.Size = new Size(368, 39);
+            tableLayoutPanel7.Size = new Size(574, 39);
             tableLayoutPanel7.TabIndex = 7;
             // 
-            // textBox2
+            // textBoxName
             // 
-            textBox2.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-            textBox2.Enabled = false;
-            textBox2.Location = new Point(78, 4);
-            textBox2.Name = "textBox2";
-            textBox2.Size = new Size(287, 30);
-            textBox2.TabIndex = 21;
+            textBoxName.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxName.Enabled = false;
+            textBoxName.Location = new Point(78, 4);
+            textBoxName.Name = "textBoxName";
+            textBoxName.Size = new Size(493, 30);
+            textBoxName.TabIndex = 21;
             // 
             // uiMarkLabelName
             // 
@@ -630,7 +697,7 @@
             uiGroupBoxImage.MinimumSize = new Size(1, 1);
             uiGroupBoxImage.Name = "uiGroupBoxImage";
             uiGroupBoxImage.Padding = new Padding(0, 32, 0, 0);
-            uiGroupBoxImage.Size = new Size(495, 684);
+            uiGroupBoxImage.Size = new Size(589, 684);
             uiGroupBoxImage.TabIndex = 17;
             uiGroupBoxImage.TabStop = false;
             uiGroupBoxImage.Text = "瀹炴椂閲囬泦";
@@ -651,8 +718,8 @@
             // uiSplitContainer1.Panel2
             // 
             uiSplitContainer1.Panel2.Controls.Add(uiGroupBoxImage);
-            uiSplitContainer1.Size = new Size(880, 684);
-            uiSplitContainer1.SplitterDistance = 374;
+            uiSplitContainer1.Size = new Size(1180, 684);
+            uiSplitContainer1.SplitterDistance = 580;
             uiSplitContainer1.SplitterWidth = 11;
             uiSplitContainer1.TabIndex = 20;
             // 
@@ -669,7 +736,7 @@
             themeForm1.Padding = new Padding(10, 70, 10, 9);
             themeForm1.RoundCorners = true;
             themeForm1.Sizable = true;
-            themeForm1.Size = new Size(900, 763);
+            themeForm1.Size = new Size(1200, 763);
             themeForm1.SmartBounds = true;
             themeForm1.StartPosition = FormStartPosition.WindowsDefaultLocation;
             themeForm1.TabIndex = 21;
@@ -685,7 +752,7 @@
             controlBox1.EnableMaximizeButton = true;
             controlBox1.EnableMinimizeButton = true;
             controlBox1.ForeColor = Color.FromArgb(155, 155, 155);
-            controlBox1.Location = new Point(800, 18);
+            controlBox1.Location = new Point(1100, 18);
             controlBox1.MaximizeHoverColor = Color.FromArgb(74, 74, 74);
             controlBox1.MinimizeHoverColor = Color.FromArgb(63, 63, 65);
             controlBox1.Name = "controlBox1";
@@ -693,12 +760,358 @@
             controlBox1.TabIndex = 21;
             controlBox1.Text = "controlBox1";
             // 
+            // panel1
+            // 
+            panel1.Controls.Add(tableLayoutPanel3);
+            panel1.Dock = DockStyle.Fill;
+            panel1.Location = new Point(0, 23);
+            panel1.Name = "panel1";
+            panel1.Padding = new Padding(0, 3, 0, 0);
+            panel1.Size = new Size(580, 661);
+            panel1.TabIndex = 1;
+            // 
+            // groupBoxXVarAddress
+            // 
+            groupBoxXVarAddress.Controls.Add(textBoxXVarAddress);
+            groupBoxXVarAddress.Dock = DockStyle.Fill;
+            groupBoxXVarAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxXVarAddress.ForeColor = Color.White;
+            groupBoxXVarAddress.Location = new Point(193, 3);
+            groupBoxXVarAddress.Name = "groupBoxXVarAddress";
+            groupBoxXVarAddress.Size = new Size(122, 39);
+            groupBoxXVarAddress.TabIndex = 28;
+            groupBoxXVarAddress.TabStop = false;
+            groupBoxXVarAddress.Text = "X杞村彉閲忓湴鍧�";
+            // 
+            // textBoxXVarAddress
+            // 
+            textBoxXVarAddress.Dock = DockStyle.Bottom;
+            textBoxXVarAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxXVarAddress.Location = new Point(3, 16);
+            textBoxXVarAddress.Multiline = true;
+            textBoxXVarAddress.Name = "textBoxXVarAddress";
+            textBoxXVarAddress.Size = new Size(116, 20);
+            textBoxXVarAddress.TabIndex = 12;
+            textBoxXVarAddress.Text = "1";
+            // 
+            // groupBoxYVarAddress
+            // 
+            groupBoxYVarAddress.Controls.Add(textBoxYVarAddress);
+            groupBoxYVarAddress.Dock = DockStyle.Fill;
+            groupBoxYVarAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxYVarAddress.ForeColor = Color.White;
+            groupBoxYVarAddress.Location = new Point(193, 48);
+            groupBoxYVarAddress.Name = "groupBoxYVarAddress";
+            groupBoxYVarAddress.Size = new Size(122, 39);
+            groupBoxYVarAddress.TabIndex = 29;
+            groupBoxYVarAddress.TabStop = false;
+            groupBoxYVarAddress.Text = "Y杞村彉閲忓湴鍧�";
+            // 
+            // textBoxYVarAddress
+            // 
+            textBoxYVarAddress.Dock = DockStyle.Bottom;
+            textBoxYVarAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxYVarAddress.Location = new Point(3, 16);
+            textBoxYVarAddress.Multiline = true;
+            textBoxYVarAddress.Name = "textBoxYVarAddress";
+            textBoxYVarAddress.Size = new Size(116, 20);
+            textBoxYVarAddress.TabIndex = 12;
+            textBoxYVarAddress.Text = "1";
+            // 
+            // groupBoxZVarAddress
+            // 
+            groupBoxZVarAddress.Controls.Add(textBoxZVarAddress);
+            groupBoxZVarAddress.Dock = DockStyle.Fill;
+            groupBoxZVarAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxZVarAddress.ForeColor = Color.White;
+            groupBoxZVarAddress.Location = new Point(193, 93);
+            groupBoxZVarAddress.Name = "groupBoxZVarAddress";
+            groupBoxZVarAddress.Size = new Size(122, 39);
+            groupBoxZVarAddress.TabIndex = 29;
+            groupBoxZVarAddress.TabStop = false;
+            groupBoxZVarAddress.Text = "Z杞村彉閲忓湴鍧�";
+            // 
+            // textBoxZVarAddress
+            // 
+            textBoxZVarAddress.Dock = DockStyle.Bottom;
+            textBoxZVarAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxZVarAddress.Location = new Point(3, 16);
+            textBoxZVarAddress.Multiline = true;
+            textBoxZVarAddress.Name = "textBoxZVarAddress";
+            textBoxZVarAddress.Size = new Size(116, 20);
+            textBoxZVarAddress.TabIndex = 12;
+            textBoxZVarAddress.Text = "1";
+            // 
+            // groupBoxWVarAddress
+            // 
+            groupBoxWVarAddress.Controls.Add(textBoxWVarAddress);
+            groupBoxWVarAddress.Dock = DockStyle.Fill;
+            groupBoxWVarAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxWVarAddress.ForeColor = Color.White;
+            groupBoxWVarAddress.Location = new Point(193, 138);
+            groupBoxWVarAddress.Name = "groupBoxWVarAddress";
+            groupBoxWVarAddress.Size = new Size(122, 41);
+            groupBoxWVarAddress.TabIndex = 29;
+            groupBoxWVarAddress.TabStop = false;
+            groupBoxWVarAddress.Text = "W杞村彉閲忓湴鍧�";
+            // 
+            // textBoxWVarAddress
+            // 
+            textBoxWVarAddress.Dock = DockStyle.Bottom;
+            textBoxWVarAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxWVarAddress.Location = new Point(3, 18);
+            textBoxWVarAddress.Multiline = true;
+            textBoxWVarAddress.Name = "textBoxWVarAddress";
+            textBoxWVarAddress.Size = new Size(116, 20);
+            textBoxWVarAddress.TabIndex = 12;
+            textBoxWVarAddress.Text = "1";
+            // 
+            // groupBoxXDetectLocation
+            // 
+            groupBoxXDetectLocation.Controls.Add(textBoxXDetectLocation);
+            groupBoxXDetectLocation.Dock = DockStyle.Fill;
+            groupBoxXDetectLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxXDetectLocation.ForeColor = Color.White;
+            groupBoxXDetectLocation.Location = new Point(321, 3);
+            groupBoxXDetectLocation.Name = "groupBoxXDetectLocation";
+            groupBoxXDetectLocation.Size = new Size(122, 39);
+            groupBoxXDetectLocation.TabIndex = 30;
+            groupBoxXDetectLocation.TabStop = false;
+            groupBoxXDetectLocation.Text = "X杞存娴嬩綅缃�";
+            // 
+            // textBoxXDetectLocation
+            // 
+            textBoxXDetectLocation.Dock = DockStyle.Bottom;
+            textBoxXDetectLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxXDetectLocation.Location = new Point(3, 16);
+            textBoxXDetectLocation.Multiline = true;
+            textBoxXDetectLocation.Name = "textBoxXDetectLocation";
+            textBoxXDetectLocation.Size = new Size(116, 20);
+            textBoxXDetectLocation.TabIndex = 12;
+            textBoxXDetectLocation.Text = "1";
+            // 
+            // groupBoxYDetectLocation
+            // 
+            groupBoxYDetectLocation.Controls.Add(textBoxYDetectLocation);
+            groupBoxYDetectLocation.Dock = DockStyle.Fill;
+            groupBoxYDetectLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxYDetectLocation.ForeColor = Color.White;
+            groupBoxYDetectLocation.Location = new Point(321, 48);
+            groupBoxYDetectLocation.Name = "groupBoxYDetectLocation";
+            groupBoxYDetectLocation.Size = new Size(122, 39);
+            groupBoxYDetectLocation.TabIndex = 30;
+            groupBoxYDetectLocation.TabStop = false;
+            groupBoxYDetectLocation.Text = "Y杞存娴嬩綅缃�";
+            // 
+            // textBoxYDetectLocation
+            // 
+            textBoxYDetectLocation.Dock = DockStyle.Bottom;
+            textBoxYDetectLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxYDetectLocation.Location = new Point(3, 16);
+            textBoxYDetectLocation.Multiline = true;
+            textBoxYDetectLocation.Name = "textBoxYDetectLocation";
+            textBoxYDetectLocation.Size = new Size(116, 20);
+            textBoxYDetectLocation.TabIndex = 12;
+            textBoxYDetectLocation.Text = "1";
+            // 
+            // groupBoxZDetectLocation
+            // 
+            groupBoxZDetectLocation.Controls.Add(textBoxZDetectLocation);
+            groupBoxZDetectLocation.Dock = DockStyle.Fill;
+            groupBoxZDetectLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxZDetectLocation.ForeColor = Color.White;
+            groupBoxZDetectLocation.Location = new Point(321, 93);
+            groupBoxZDetectLocation.Name = "groupBoxZDetectLocation";
+            groupBoxZDetectLocation.Size = new Size(122, 39);
+            groupBoxZDetectLocation.TabIndex = 30;
+            groupBoxZDetectLocation.TabStop = false;
+            groupBoxZDetectLocation.Text = "Z杞存娴嬩綅缃�";
+            // 
+            // textBoxZDetectLocation
+            // 
+            textBoxZDetectLocation.Dock = DockStyle.Bottom;
+            textBoxZDetectLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxZDetectLocation.Location = new Point(3, 16);
+            textBoxZDetectLocation.Multiline = true;
+            textBoxZDetectLocation.Name = "textBoxZDetectLocation";
+            textBoxZDetectLocation.Size = new Size(116, 20);
+            textBoxZDetectLocation.TabIndex = 12;
+            textBoxZDetectLocation.Text = "1";
+            // 
+            // groupBoxWDetectLocation
+            // 
+            groupBoxWDetectLocation.Controls.Add(textBoxWDetectLocation);
+            groupBoxWDetectLocation.Dock = DockStyle.Fill;
+            groupBoxWDetectLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxWDetectLocation.ForeColor = Color.White;
+            groupBoxWDetectLocation.Location = new Point(321, 138);
+            groupBoxWDetectLocation.Name = "groupBoxWDetectLocation";
+            groupBoxWDetectLocation.Size = new Size(122, 41);
+            groupBoxWDetectLocation.TabIndex = 30;
+            groupBoxWDetectLocation.TabStop = false;
+            groupBoxWDetectLocation.Text = "W杞存娴嬩綅缃�";
+            // 
+            // textBoxWDetectLocation
+            // 
+            textBoxWDetectLocation.Dock = DockStyle.Bottom;
+            textBoxWDetectLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxWDetectLocation.Location = new Point(3, 18);
+            textBoxWDetectLocation.Multiline = true;
+            textBoxWDetectLocation.Name = "textBoxWDetectLocation";
+            textBoxWDetectLocation.Size = new Size(116, 20);
+            textBoxWDetectLocation.TabIndex = 12;
+            textBoxWDetectLocation.Text = "1";
+            // 
+            // groupBoxXOriginalLocation
+            // 
+            groupBoxXOriginalLocation.Controls.Add(textBoxXOriginalLocation);
+            groupBoxXOriginalLocation.Dock = DockStyle.Fill;
+            groupBoxXOriginalLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxXOriginalLocation.ForeColor = Color.White;
+            groupBoxXOriginalLocation.Location = new Point(449, 3);
+            groupBoxXOriginalLocation.Name = "groupBoxXOriginalLocation";
+            groupBoxXOriginalLocation.Size = new Size(122, 39);
+            groupBoxXOriginalLocation.TabIndex = 30;
+            groupBoxXOriginalLocation.TabStop = false;
+            groupBoxXOriginalLocation.Text = "X杞村師鐐逛綅缃�";
+            // 
+            // textBoxXOriginalLocation
+            // 
+            textBoxXOriginalLocation.Dock = DockStyle.Bottom;
+            textBoxXOriginalLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxXOriginalLocation.Location = new Point(3, 16);
+            textBoxXOriginalLocation.Multiline = true;
+            textBoxXOriginalLocation.Name = "textBoxXOriginalLocation";
+            textBoxXOriginalLocation.Size = new Size(116, 20);
+            textBoxXOriginalLocation.TabIndex = 12;
+            textBoxXOriginalLocation.Text = "1";
+            // 
+            // groupBoxYOriginalLocation
+            // 
+            groupBoxYOriginalLocation.Controls.Add(textBoxYOriginalLocation);
+            groupBoxYOriginalLocation.Dock = DockStyle.Fill;
+            groupBoxYOriginalLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxYOriginalLocation.ForeColor = Color.White;
+            groupBoxYOriginalLocation.Location = new Point(449, 48);
+            groupBoxYOriginalLocation.Name = "groupBoxYOriginalLocation";
+            groupBoxYOriginalLocation.Size = new Size(122, 39);
+            groupBoxYOriginalLocation.TabIndex = 30;
+            groupBoxYOriginalLocation.TabStop = false;
+            groupBoxYOriginalLocation.Text = "Y杞村師鐐逛綅缃�";
+            // 
+            // textBoxYOriginalLocation
+            // 
+            textBoxYOriginalLocation.Dock = DockStyle.Bottom;
+            textBoxYOriginalLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxYOriginalLocation.Location = new Point(3, 16);
+            textBoxYOriginalLocation.Multiline = true;
+            textBoxYOriginalLocation.Name = "textBoxYOriginalLocation";
+            textBoxYOriginalLocation.Size = new Size(116, 20);
+            textBoxYOriginalLocation.TabIndex = 12;
+            textBoxYOriginalLocation.Text = "1";
+            // 
+            // groupBoxZOriginalLocation
+            // 
+            groupBoxZOriginalLocation.Controls.Add(textBoxZOriginalLocation);
+            groupBoxZOriginalLocation.Dock = DockStyle.Fill;
+            groupBoxZOriginalLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxZOriginalLocation.ForeColor = Color.White;
+            groupBoxZOriginalLocation.Location = new Point(449, 93);
+            groupBoxZOriginalLocation.Name = "groupBoxZOriginalLocation";
+            groupBoxZOriginalLocation.Size = new Size(122, 39);
+            groupBoxZOriginalLocation.TabIndex = 30;
+            groupBoxZOriginalLocation.TabStop = false;
+            groupBoxZOriginalLocation.Text = "Z杞村師鐐逛綅缃�";
+            // 
+            // textBoxZOriginalLocation
+            // 
+            textBoxZOriginalLocation.Dock = DockStyle.Bottom;
+            textBoxZOriginalLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxZOriginalLocation.Location = new Point(3, 16);
+            textBoxZOriginalLocation.Multiline = true;
+            textBoxZOriginalLocation.Name = "textBoxZOriginalLocation";
+            textBoxZOriginalLocation.Size = new Size(116, 20);
+            textBoxZOriginalLocation.TabIndex = 12;
+            textBoxZOriginalLocation.Text = "1";
+            // 
+            // groupBoxWOriginalLocation
+            // 
+            groupBoxWOriginalLocation.Controls.Add(textBoxWOriginalLocation);
+            groupBoxWOriginalLocation.Dock = DockStyle.Fill;
+            groupBoxWOriginalLocation.Font = new Font("瀹嬩綋", 8F);
+            groupBoxWOriginalLocation.ForeColor = Color.White;
+            groupBoxWOriginalLocation.Location = new Point(449, 138);
+            groupBoxWOriginalLocation.Name = "groupBoxWOriginalLocation";
+            groupBoxWOriginalLocation.Size = new Size(122, 41);
+            groupBoxWOriginalLocation.TabIndex = 30;
+            groupBoxWOriginalLocation.TabStop = false;
+            groupBoxWOriginalLocation.Text = "W杞村師鐐逛綅缃�";
+            // 
+            // textBoxWOriginalLocation
+            // 
+            textBoxWOriginalLocation.Dock = DockStyle.Bottom;
+            textBoxWOriginalLocation.Font = new Font("瀹嬩綋", 10F);
+            textBoxWOriginalLocation.Location = new Point(3, 18);
+            textBoxWOriginalLocation.Multiline = true;
+            textBoxWOriginalLocation.Name = "textBoxWOriginalLocation";
+            textBoxWOriginalLocation.Size = new Size(116, 20);
+            textBoxWOriginalLocation.TabIndex = 12;
+            textBoxWOriginalLocation.Text = "1";
+            // 
+            // groupBoxPulseMotionSpeedAddress
+            // 
+            groupBoxPulseMotionSpeedAddress.Controls.Add(textBoxPulseMotionSpeedAddress);
+            groupBoxPulseMotionSpeedAddress.Dock = DockStyle.Fill;
+            groupBoxPulseMotionSpeedAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxPulseMotionSpeedAddress.ForeColor = Color.White;
+            groupBoxPulseMotionSpeedAddress.Location = new Point(323, 3);
+            groupBoxPulseMotionSpeedAddress.Name = "groupBoxPulseMotionSpeedAddress";
+            groupBoxPulseMotionSpeedAddress.Size = new Size(114, 39);
+            groupBoxPulseMotionSpeedAddress.TabIndex = 30;
+            groupBoxPulseMotionSpeedAddress.TabStop = false;
+            groupBoxPulseMotionSpeedAddress.Text = "鐐归�熷害鍦板潃";
+            // 
+            // textBoxPulseMotionSpeedAddress
+            // 
+            textBoxPulseMotionSpeedAddress.Dock = DockStyle.Bottom;
+            textBoxPulseMotionSpeedAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxPulseMotionSpeedAddress.Location = new Point(3, 16);
+            textBoxPulseMotionSpeedAddress.Multiline = true;
+            textBoxPulseMotionSpeedAddress.Name = "textBoxPulseMotionSpeedAddress";
+            textBoxPulseMotionSpeedAddress.Size = new Size(108, 20);
+            textBoxPulseMotionSpeedAddress.TabIndex = 12;
+            textBoxPulseMotionSpeedAddress.Text = "1";
+            // 
+            // groupBoxAngularVelocityAddress
+            // 
+            groupBoxAngularVelocityAddress.Controls.Add(textBoxAngularVelocityAddress);
+            groupBoxAngularVelocityAddress.Dock = DockStyle.Fill;
+            groupBoxAngularVelocityAddress.Font = new Font("瀹嬩綋", 8F);
+            groupBoxAngularVelocityAddress.ForeColor = Color.White;
+            groupBoxAngularVelocityAddress.Location = new Point(323, 48);
+            groupBoxAngularVelocityAddress.Name = "groupBoxAngularVelocityAddress";
+            groupBoxAngularVelocityAddress.Size = new Size(114, 39);
+            groupBoxAngularVelocityAddress.TabIndex = 30;
+            groupBoxAngularVelocityAddress.TabStop = false;
+            groupBoxAngularVelocityAddress.Text = "瑙掗�熷害鍦板潃";
+            // 
+            // textBoxAngularVelocityAddress
+            // 
+            textBoxAngularVelocityAddress.Dock = DockStyle.Bottom;
+            textBoxAngularVelocityAddress.Font = new Font("瀹嬩綋", 10F);
+            textBoxAngularVelocityAddress.Location = new Point(3, 16);
+            textBoxAngularVelocityAddress.Multiline = true;
+            textBoxAngularVelocityAddress.Name = "textBoxAngularVelocityAddress";
+            textBoxAngularVelocityAddress.Size = new Size(108, 20);
+            textBoxAngularVelocityAddress.TabIndex = 12;
+            textBoxAngularVelocityAddress.Text = "1";
+            // 
             // MotionControlForm
             // 
             AutoScaleDimensions = new SizeF(120F, 120F);
             AutoScaleMode = AutoScaleMode.Dpi;
             AutoSize = true;
-            ClientSize = new Size(900, 763);
+            ClientSize = new Size(1200, 763);
             Controls.Add(themeForm1);
             FormBorderStyle = FormBorderStyle.None;
             MinimumSize = new Size(261, 61);
@@ -729,6 +1142,35 @@
             ((System.ComponentModel.ISupportInitialize)uiSplitContainer1).EndInit();
             uiSplitContainer1.ResumeLayout(false);
             themeForm1.ResumeLayout(false);
+            panel1.ResumeLayout(false);
+            groupBoxXVarAddress.ResumeLayout(false);
+            groupBoxXVarAddress.PerformLayout();
+            groupBoxYVarAddress.ResumeLayout(false);
+            groupBoxYVarAddress.PerformLayout();
+            groupBoxZVarAddress.ResumeLayout(false);
+            groupBoxZVarAddress.PerformLayout();
+            groupBoxWVarAddress.ResumeLayout(false);
+            groupBoxWVarAddress.PerformLayout();
+            groupBoxXDetectLocation.ResumeLayout(false);
+            groupBoxXDetectLocation.PerformLayout();
+            groupBoxYDetectLocation.ResumeLayout(false);
+            groupBoxYDetectLocation.PerformLayout();
+            groupBoxZDetectLocation.ResumeLayout(false);
+            groupBoxZDetectLocation.PerformLayout();
+            groupBoxWDetectLocation.ResumeLayout(false);
+            groupBoxWDetectLocation.PerformLayout();
+            groupBoxXOriginalLocation.ResumeLayout(false);
+            groupBoxXOriginalLocation.PerformLayout();
+            groupBoxYOriginalLocation.ResumeLayout(false);
+            groupBoxYOriginalLocation.PerformLayout();
+            groupBoxZOriginalLocation.ResumeLayout(false);
+            groupBoxZOriginalLocation.PerformLayout();
+            groupBoxWOriginalLocation.ResumeLayout(false);
+            groupBoxWOriginalLocation.PerformLayout();
+            groupBoxPulseMotionSpeedAddress.ResumeLayout(false);
+            groupBoxPulseMotionSpeedAddress.PerformLayout();
+            groupBoxAngularVelocityAddress.ResumeLayout(false);
+            groupBoxAngularVelocityAddress.PerformLayout();
             ResumeLayout(false);
         }
 
@@ -774,10 +1216,39 @@
         private TableLayoutPanel tableLayoutPanel5;
         private Button uiButtonGrabOnce;
         private TableLayoutPanel tableLayoutPanel1;
-        private TextBox textBox1;
+        private TextBox textBoxSN;
         private Label uiMarkLabelSN;
         private Button uiButtonCloseSoftGrab;
         private Label uiMarkLabelName;
-        private TextBox textBox2;
+        private TextBox textBoxName;
+        private Panel panel1;
+        private GroupBox groupBoxYVarAddress;
+        private TextBox textBoxYVarAddress;
+        private GroupBox groupBoxXVarAddress;
+        private TextBox textBoxXVarAddress;
+        private GroupBox groupBoxZVarAddress;
+        private TextBox textBoxZVarAddress;
+        private GroupBox groupBoxWVarAddress;
+        private TextBox textBoxWVarAddress;
+        private GroupBox groupBoxYDetectLocation;
+        private TextBox textBoxYDetectLocation;
+        private GroupBox groupBoxZDetectLocation;
+        private TextBox textBoxZDetectLocation;
+        private GroupBox groupBoxWDetectLocation;
+        private TextBox textBoxWDetectLocation;
+        private GroupBox groupBoxXDetectLocation;
+        private TextBox textBoxXDetectLocation;
+        private GroupBox groupBoxXOriginalLocation;
+        private TextBox textBoxXOriginalLocation;
+        private GroupBox groupBoxYOriginalLocation;
+        private TextBox textBoxYOriginalLocation;
+        private GroupBox groupBoxZOriginalLocation;
+        private TextBox textBoxZOriginalLocation;
+        private GroupBox groupBoxWOriginalLocation;
+        private TextBox textBoxWOriginalLocation;
+        private GroupBox groupBoxPulseMotionSpeedAddress;
+        private TextBox textBoxPulseMotionSpeedAddress;
+        private GroupBox groupBoxAngularVelocityAddress;
+        private TextBox textBoxAngularVelocityAddress;
     }
 }
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs
index a30f452..e48690f 100644
--- a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs
@@ -34,7 +34,7 @@
 
             this.camera = camera;
             this.Text = camera.SN;
-            textBox1.Text = camera.SN;
+            textBoxSN.Text = camera.SN;
 
             onlinePictureBox = new UserPictureBox(uiGroupBoxImage);
             this.uiGroupBoxImage.Controls.Clear();
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx
index 9ca1331..83adc1a 100644
--- a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx
@@ -121,7 +121,7 @@
   <data name="themeForm1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
-        wgAADsIBFShKgAAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou
+        wQAADsEBuJFr7QAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou
         BkVBUPCBCEG8BXNQ48GLeImCehIJxMsqhsSZruod46K4HtSIGjU+4iOr0c1I9fSsM3/PLNtCPO0H36m/
         evz/X11VnreKVRTAHPOZumkY6lFwqURws3BwZ8ywTQnuiCP/+iTCzY1qaUPzdm/Atf3PaHre6XPsjyQM
         2xLGV4XwIyX4QRj+UMK/lPFvJTyhBMeV8IgQvmRJuH4Ko+l5p9UjGBbCJ5RxTgj+VMZmXxKcSAjekHE/
diff --git a/LB_SmartVision/VisionForm.Designer.cs b/LB_SmartVision/VisionForm.Designer.cs
index a1feb7d..3cbbadf 100644
--- a/LB_SmartVision/VisionForm.Designer.cs
+++ b/LB_SmartVision/VisionForm.Designer.cs
@@ -61,11 +61,12 @@
             theme_VisionForm.Font = new Font("Microsoft YaHei UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 0);
             theme_VisionForm.Image = (Image)resources.GetObject("theme_VisionForm.Image");
             theme_VisionForm.Location = new Point(0, 0);
+            theme_VisionForm.Margin = new Padding(4, 4, 4, 4);
             theme_VisionForm.Name = "theme_VisionForm";
-            theme_VisionForm.Padding = new Padding(10, 70, 10, 9);
+            theme_VisionForm.Padding = new Padding(12, 88, 12, 11);
             theme_VisionForm.RoundCorners = true;
             theme_VisionForm.Sizable = true;
-            theme_VisionForm.Size = new Size(1152, 704);
+            theme_VisionForm.Size = new Size(1440, 880);
             theme_VisionForm.SmartBounds = true;
             theme_VisionForm.StartPosition = FormStartPosition.WindowsDefaultLocation;
             theme_VisionForm.TabIndex = 0;
@@ -75,7 +76,8 @@
             // 
             sc_VisionForm.Dock = DockStyle.Fill;
             sc_VisionForm.FixedPanel = FixedPanel.Panel2;
-            sc_VisionForm.Location = new Point(10, 70);
+            sc_VisionForm.Location = new Point(12, 88);
+            sc_VisionForm.Margin = new Padding(4, 4, 4, 4);
             sc_VisionForm.Name = "sc_VisionForm";
             sc_VisionForm.Orientation = Orientation.Horizontal;
             // 
@@ -86,8 +88,9 @@
             // sc_VisionForm.Panel2
             // 
             sc_VisionForm.Panel2.Controls.Add(grb_Info);
-            sc_VisionForm.Size = new Size(1132, 625);
-            sc_VisionForm.SplitterDistance = 476;
+            sc_VisionForm.Size = new Size(1416, 781);
+            sc_VisionForm.SplitterDistance = 595;
+            sc_VisionForm.SplitterWidth = 5;
             sc_VisionForm.TabIndex = 1;
             // 
             // tlp_MainView
@@ -102,10 +105,10 @@
             tlp_MainView.Margin = new Padding(2);
             tlp_MainView.Name = "tlp_MainView";
             tlp_MainView.RowCount = 3;
-            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 48F));
-            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 31F));
+            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
+            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 39F));
             tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tlp_MainView.Size = new Size(1132, 476);
+            tlp_MainView.Size = new Size(1416, 595);
             tlp_MainView.TabIndex = 1;
             tlp_MainView.TagString = null;
             // 
@@ -114,12 +117,12 @@
             materialTabControl.AccessibleRole = AccessibleRole.Sound;
             materialTabControl.Depth = 0;
             materialTabControl.Dock = DockStyle.Fill;
-            materialTabControl.Location = new Point(2, 81);
+            materialTabControl.Location = new Point(2, 101);
             materialTabControl.Margin = new Padding(2);
             materialTabControl.MouseState = MaterialSkin.MouseState.HOVER;
             materialTabControl.Name = "materialTabControl";
             materialTabControl.SelectedIndex = 0;
-            materialTabControl.Size = new Size(1128, 393);
+            materialTabControl.Size = new Size(1412, 492);
             materialTabControl.TabIndex = 0;
             // 
             // tlp_VisionMainOperator
@@ -140,11 +143,12 @@
             tlp_VisionMainOperator.Controls.Add(btn_GlobalVar, 7, 0);
             tlp_VisionMainOperator.Controls.Add(com_ProductName, 8, 0);
             tlp_VisionMainOperator.Dock = DockStyle.Fill;
-            tlp_VisionMainOperator.Location = new Point(3, 51);
+            tlp_VisionMainOperator.Location = new Point(4, 64);
+            tlp_VisionMainOperator.Margin = new Padding(4, 4, 4, 4);
             tlp_VisionMainOperator.Name = "tlp_VisionMainOperator";
             tlp_VisionMainOperator.RowCount = 1;
             tlp_VisionMainOperator.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tlp_VisionMainOperator.Size = new Size(1126, 25);
+            tlp_VisionMainOperator.Size = new Size(1408, 31);
             tlp_VisionMainOperator.TabIndex = 0;
             tlp_VisionMainOperator.TagString = null;
             // 
@@ -153,10 +157,11 @@
             ckb_AllowRun.Dock = DockStyle.Fill;
             ckb_AllowRun.Font = new Font("瀹嬩綋", 10.5F, FontStyle.Regular, GraphicsUnit.Point, 134);
             ckb_AllowRun.ForeColor = SystemColors.Control;
-            ckb_AllowRun.Location = new Point(3, 3);
+            ckb_AllowRun.Location = new Point(4, 4);
+            ckb_AllowRun.Margin = new Padding(4, 4, 4, 4);
             ckb_AllowRun.MinimumSize = new Size(1, 1);
             ckb_AllowRun.Name = "ckb_AllowRun";
-            ckb_AllowRun.Size = new Size(119, 19);
+            ckb_AllowRun.Size = new Size(148, 23);
             ckb_AllowRun.TabIndex = 2;
             ckb_AllowRun.Text = "杩愯妯″紡";
             // 
@@ -171,11 +176,12 @@
             btn_Login.Image = null;
             btn_Login.ImageAlign = ContentAlignment.MiddleLeft;
             btn_Login.InactiveColor = Color.FromArgb(32, 34, 37);
-            btn_Login.Location = new Point(128, 3);
+            btn_Login.Location = new Point(160, 4);
+            btn_Login.Margin = new Padding(4, 4, 4, 4);
             btn_Login.Name = "btn_Login";
             btn_Login.PressedBorderColor = Color.FromArgb(165, 37, 37);
             btn_Login.PressedColor = Color.FromArgb(165, 37, 37);
-            btn_Login.Size = new Size(119, 19);
+            btn_Login.Size = new Size(148, 23);
             btn_Login.TabIndex = 3;
             btn_Login.Text = "鐢ㄦ埛鐧诲綍";
             btn_Login.TextAlignment = StringAlignment.Center;
@@ -192,11 +198,12 @@
             btn_GlobalVar.Image = null;
             btn_GlobalVar.ImageAlign = ContentAlignment.MiddleLeft;
             btn_GlobalVar.InactiveColor = Color.FromArgb(32, 34, 37);
-            btn_GlobalVar.Location = new Point(878, 3);
+            btn_GlobalVar.Location = new Point(1096, 4);
+            btn_GlobalVar.Margin = new Padding(4, 4, 4, 4);
             btn_GlobalVar.Name = "btn_GlobalVar";
             btn_GlobalVar.PressedBorderColor = Color.FromArgb(165, 37, 37);
             btn_GlobalVar.PressedColor = Color.FromArgb(165, 37, 37);
-            btn_GlobalVar.Size = new Size(119, 19);
+            btn_GlobalVar.Size = new Size(148, 23);
             btn_GlobalVar.TabIndex = 4;
             btn_GlobalVar.Text = "鍏ㄥ眬鍙橀噺";
             btn_GlobalVar.TextAlignment = StringAlignment.Center;
@@ -211,9 +218,10 @@
             com_ProductName.Font = new Font("瀹嬩綋", 10.5F, FontStyle.Regular, GraphicsUnit.Point, 134);
             com_ProductName.FormattingEnabled = true;
             com_ProductName.ItemHeight = 20;
-            com_ProductName.Location = new Point(1003, 3);
+            com_ProductName.Location = new Point(1252, 4);
+            com_ProductName.Margin = new Padding(4, 4, 4, 4);
             com_ProductName.Name = "com_ProductName";
-            com_ProductName.Size = new Size(120, 26);
+            com_ProductName.Size = new Size(152, 26);
             com_ProductName.TabIndex = 5;
             com_ProductName.SelectedValueChanged += com_ProductName_SelectedValueChanged;
             // 
@@ -222,10 +230,11 @@
             materialTabSelector.BaseTabControl = null;
             materialTabSelector.Depth = 0;
             materialTabSelector.Dock = DockStyle.Fill;
-            materialTabSelector.Location = new Point(3, 3);
+            materialTabSelector.Location = new Point(4, 4);
+            materialTabSelector.Margin = new Padding(4, 4, 4, 4);
             materialTabSelector.MouseState = MaterialSkin.MouseState.HOVER;
             materialTabSelector.Name = "materialTabSelector";
-            materialTabSelector.Size = new Size(1126, 42);
+            materialTabSelector.Size = new Size(1408, 52);
             materialTabSelector.TabIndex = 1;
             // 
             // grb_Info
@@ -236,11 +245,11 @@
             grb_Info.Font = new Font("瀹嬩綋", 12F, FontStyle.Regular, GraphicsUnit.Point, 134);
             grb_Info.ForeColor = SystemColors.Control;
             grb_Info.Location = new Point(0, 0);
-            grb_Info.Margin = new Padding(4, 5, 4, 5);
+            grb_Info.Margin = new Padding(5, 6, 5, 6);
             grb_Info.MinimumSize = new Size(1, 1);
             grb_Info.Name = "grb_Info";
-            grb_Info.Padding = new Padding(0, 32, 0, 0);
-            grb_Info.Size = new Size(1132, 145);
+            grb_Info.Padding = new Padding(0, 40, 0, 0);
+            grb_Info.Size = new Size(1416, 181);
             grb_Info.TabIndex = 1;
             grb_Info.Text = "鏃ュ織鏄剧ず鍖猴細";
             grb_Info.TextAlignment = ContentAlignment.MiddleLeft;
@@ -250,13 +259,13 @@
             rich_Info.Dock = DockStyle.Fill;
             rich_Info.FillColor = Color.FromArgb(32, 41, 50);
             rich_Info.Font = new Font("瀹嬩綋", 12F, FontStyle.Regular, GraphicsUnit.Point, 134);
-            rich_Info.Location = new Point(0, 32);
+            rich_Info.Location = new Point(0, 40);
             rich_Info.Margin = new Padding(4, 5, 4, 5);
             rich_Info.MinimumSize = new Size(1, 1);
             rich_Info.Name = "rich_Info";
             rich_Info.Padding = new Padding(2);
             rich_Info.ShowText = false;
-            rich_Info.Size = new Size(1132, 113);
+            rich_Info.Size = new Size(1416, 141);
             rich_Info.TabIndex = 0;
             rich_Info.TextAlignment = ContentAlignment.MiddleLeft;
             // 
@@ -270,7 +279,8 @@
             cb_VisionForm.EnableMaximizeButton = true;
             cb_VisionForm.EnableMinimizeButton = true;
             cb_VisionForm.ForeColor = Color.FromArgb(155, 155, 155);
-            cb_VisionForm.Location = new Point(1072, 14);
+            cb_VisionForm.Location = new Point(1330, 13);
+            cb_VisionForm.Margin = new Padding(4, 4, 4, 4);
             cb_VisionForm.MaximizeHoverColor = Color.FromArgb(74, 74, 74);
             cb_VisionForm.MinimizeHoverColor = Color.FromArgb(63, 63, 65);
             cb_VisionForm.Name = "cb_VisionForm";
@@ -280,13 +290,14 @@
             // 
             // VisionForm
             // 
-            AutoScaleDimensions = new SizeF(96F, 96F);
+            AutoScaleDimensions = new SizeF(120F, 120F);
             AutoScaleMode = AutoScaleMode.Dpi;
-            ClientSize = new Size(1152, 704);
+            ClientSize = new Size(1440, 880);
             Controls.Add(theme_VisionForm);
             FormBorderStyle = FormBorderStyle.None;
             Icon = (Icon)resources.GetObject("$this.Icon");
-            MinimumSize = new Size(261, 61);
+            Margin = new Padding(4, 4, 4, 4);
+            MinimumSize = new Size(326, 76);
             Name = "VisionForm";
             Text = "杞儙澶栬瑙嗚妫�娴嬬郴缁�";
             TransparencyKey = Color.Fuchsia;
diff --git a/LB_SmartVision/VisionForm.cs b/LB_SmartVision/VisionForm.cs
index f4ed8c8..31f11a8 100644
--- a/LB_SmartVision/VisionForm.cs
+++ b/LB_SmartVision/VisionForm.cs
@@ -850,7 +850,7 @@
                             string ClassName = match.Groups["ClassName"].Value;   // "TCP"
                             string IP = match.Groups["IP"].Value;          // "127.0.0.1"
                             string Slot = match.Groups["Slot"].Value;        // "1111"
-                            string CpuType= match.Groups["CpuType"].Value;
+                            string CpuType = match.Groups["CpuType"].Value;
                             string PlcAddress = match.Groups["PlcAddress"].Value;
                             string DataType = match.Groups["DataType"].Success ? match.Groups["DataType"].Value : "String";
 
@@ -1027,7 +1027,6 @@
             {
                 string strJson = string.Empty;
                 GlobalVar.allCommunicatorsConnectionString = new ConcurrentDictionary<string, string>();
-
                 foreach (var item in GlobalVar.dicCommunicators)
                 {
                     string ClassName = item.Value.GetType().FullName;// "TCP"
@@ -1056,6 +1055,7 @@
                         string CommunicatorConnectionString = $"({ClassName})[{IP}][{PORT}]";
                         GlobalVar.allCommunicatorsConnectionString.TryAdd(item.Key, CommunicatorConnectionString);
                     }
+                    GlobalVar.dicCommunicators[item.Key].ClassName = ClassName;
                 }
                 var settings = new JsonSerializerSettings
                 {
@@ -1080,6 +1080,11 @@
                     { }
                 }
                 File.WriteAllText(GlobalVar.allCommunicatorsConnectionStringPath, strJson, Encoding.UTF8);
+                foreach (var item in GlobalVar.dicCommunicators)
+                {
+                    string ClassName = item.Value.GetType().FullName;// "TCP"
+                }
+                ConfigManager<ObservableConcurrentDictionary<string, BaseCommunicator>>.SaveConfig<ObservableConcurrentDictionary<string, BaseCommunicator>>(GlobalVar.dicCommunicators, GlobalVar.strApplicationPath + "\\鎵�鏈変骇鍝乗\" + GlobalVar.strProductName + "\\dicCommunicators.json");
                 return true;
             }
             catch { return false; }
diff --git a/LB_SmartVisionCommon/ConfigManager.cs b/LB_SmartVisionCommon/ConfigManager.cs
index 9815212..84d88e0 100644
--- a/LB_SmartVisionCommon/ConfigManager.cs
+++ b/LB_SmartVisionCommon/ConfigManager.cs
@@ -21,6 +21,16 @@
         /// <param name="filePath">鏂囦欢瀛樺偍璺緞浠ュ強鍚嶇О</param>
         public static void SaveConfig<T>(T config, string filePath)
         {
+            if (config == null)
+            {
+                AsyncLogHelper.Error(nameof(config));
+                throw new ArgumentNullException(nameof(config));
+            }
+            if (filePath == null)
+            {
+                AsyncLogHelper.Error(nameof(filePath));
+                AsyncLogHelper.Error(nameof(filePath));
+            }
             var json = JsonConvert.SerializeObject(config, Newtonsoft.Json.Formatting.Indented);
             File.WriteAllText(filePath, json);
         }
diff --git a/LB_VisionProcesses/Communicators/BaseCommunicator.cs b/LB_VisionProcesses/Communicators/BaseCommunicator.cs
index c0bcef3..04b1b6f 100644
--- a/LB_VisionProcesses/Communicators/BaseCommunicator.cs
+++ b/LB_VisionProcesses/Communicators/BaseCommunicator.cs
@@ -1,7 +1,14 @@
-锘縩amespace LB_VisionProcesses.Communicators
+锘縰sing Newtonsoft.Json;
+
+namespace LB_VisionProcesses.Communicators
 {
+    [JsonObject(MemberSerialization.OptOut)]
     public abstract class BaseCommunicator : ICommunicator
     {
+        /// <summary>
+        /// 瀛愮被鍚嶇О
+        /// </summary>
+        public string ClassName { get; set; } = string.Empty;
         /// <summary>
         /// 閫氳鍚嶇О
         /// </summary>
@@ -45,11 +52,12 @@
         /// <summary>
         /// 鑾峰彇娑堟伅鍥炶皟
         /// </summary>
+        [JsonIgnore]
         public Action<string> MessageReceived;
-
         /// <summary>
         /// 鑾峰彇娑堟伅鍥炶皟
         /// </summary>
+        [JsonIgnore]
         public Action<string, string> TriggerRunMessageReceived;
 
         /// <summary>
@@ -65,13 +73,13 @@
         /// <summary>
         /// 蹇冭烦鍙戦�佺嚎绋�
         /// </summary>
+        [JsonIgnore]
         public Thread heartbeatThread;
 
         public BaseCommunicator(string name = "")
         {
             CommunicatorName = name;
         }
-
         public virtual void SendHeartbeat()
         {
             while (true)
diff --git a/LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs b/LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs
index cd2bc7e..473ef54 100644
--- a/LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs
+++ b/LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -6,6 +7,7 @@
 
 namespace LB_VisionProcesses.Communicators.TCom
 {
+    [JsonObject(MemberSerialization.OptOut)]
     public class LocalMonitor : BaseCommunicator
     {
         // 浣跨敤 FileSystemWatcher 鏉ュ疄鏃剁洃鍚枃浠跺す鍙樺寲
diff --git a/LB_VisionProcesses/Communicators/TCom/TCPClient.cs b/LB_VisionProcesses/Communicators/TCom/TCPClient.cs
index 6eb0199..395ade4 100644
--- a/LB_VisionProcesses/Communicators/TCom/TCPClient.cs
+++ b/LB_VisionProcesses/Communicators/TCom/TCPClient.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
@@ -9,6 +10,7 @@
 
 namespace LB_VisionProcesses.Communicators.TCom
 {
+    [JsonObject(MemberSerialization.OptOut)]
     public class TCPClient : BaseCommunicator
     {
         private TcpClient _tcpClient = new TcpClient();
diff --git a/LB_VisionProcesses/Communicators/TCom/TCPServer.cs b/LB_VisionProcesses/Communicators/TCom/TCPServer.cs
index c33de94..a678e17 100644
--- a/LB_VisionProcesses/Communicators/TCom/TCPServer.cs
+++ b/LB_VisionProcesses/Communicators/TCom/TCPServer.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
@@ -9,6 +10,7 @@
 
 namespace LB_VisionProcesses.Communicators.TCom
 {
+    [JsonObject(MemberSerialization.OptOut)]
     public class TCPServer : BaseCommunicator
     {
         private TcpListener _tcpListener;
diff --git a/LB_VisionProcesses/Communicators/TCom/UARTPort.cs b/LB_VisionProcesses/Communicators/TCom/UARTPort.cs
index c40ad45..31a4028 100644
--- a/LB_VisionProcesses/Communicators/TCom/UARTPort.cs
+++ b/LB_VisionProcesses/Communicators/TCom/UARTPort.cs
@@ -1,4 +1,5 @@
-锘縰sing RJCP.IO.Ports;
+锘縰sing Newtonsoft.Json;
+using RJCP.IO.Ports;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -7,6 +8,7 @@
 
 namespace LB_VisionProcesses.Communicators.TCom
 {
+    [JsonObject(MemberSerialization.OptOut)]
     public class UARTPort : BaseCommunicator
     {
         private RJCP.IO.Ports.SerialPortStream SerialPort = new RJCP.IO.Ports.SerialPortStream();
diff --git a/LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs b/LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs
index a8a1b21..17debfb 100644
--- a/LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs
+++ b/LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs
@@ -1,4 +1,5 @@
 锘縰sing LB_VisionProcesses.Communicators.TCom;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
@@ -9,6 +10,7 @@
 
 namespace LB_VisionProcesses.Communicators.UserCommunicator.T306Command
 {
+    [JsonObject(MemberSerialization.OptOut)]
     internal class T306CommandTool : CommunicatorConfig
     {
         string HDCP14CHECK = "0422CCF2";

--
Gitblit v1.9.3