在运动控制界面添加可配置的PLC相关参数修复工具图像输入bug添加项目文件。在运动控制界面添加可配置的PLC相关参数。
已修改14个文件
827 ■■■■ 文件已修改
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs 653 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/VisionForm.Designer.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/VisionForm.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVisionCommon/ConfigManager.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/BaseCommunicator.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/TCom/TCPClient.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/TCom/TCPServer.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/TCom/UARTPort.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
            // 
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);
            //}
        }
    }
}
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;
    }
}
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();
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/
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;
LB_SmartVision/VisionForm.cs
@@ -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; }
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);
        }
LB_VisionProcesses/Communicators/BaseCommunicator.cs
@@ -1,7 +1,14 @@
namespace LB_VisionProcesses.Communicators
using 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)
LB_VisionProcesses/Communicators/TCom/LocalMonitor.cs
@@ -1,4 +1,5 @@
using System;
using 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 来实时监听文件夹变化
LB_VisionProcesses/Communicators/TCom/TCPClient.cs
@@ -1,4 +1,5 @@
using System;
using 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();
LB_VisionProcesses/Communicators/TCom/TCPServer.cs
@@ -1,4 +1,5 @@
using System;
using 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;
LB_VisionProcesses/Communicators/TCom/UARTPort.cs
@@ -1,4 +1,5 @@
using RJCP.IO.Ports;
using 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();
LB_VisionProcesses/Communicators/UserCommunicator/T306Command/T306CommandTool.cs
@@ -1,4 +1,5 @@
using 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";