From 3ff51e43eece65ec41adc08bb678b304ca1601a1 Mon Sep 17 00:00:00 2001
From: C3031 <shitiangui@lanpucloud.cn>
Date: 星期三, 24 十二月 2025 13:34:45 +0800
Subject: [PATCH] 新增了运动控制界面

---
 LB_SmartVision/Forms/Pages/CameraPage/CameraForm.resx                          |   36 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs              |  369 ++++++++++++
 LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.cs                       |   11 
 LB_SmartVision/Forms/Pages/CameraPage/CameraForm.Designer.cs                   |   56 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs     |  781 ++++++++++++++++++++++++++
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.cs          |  155 +++++
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx            |  286 +++++++++
 LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.Designer.cs              |    2 
 LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.Designer.cs |   33 
 9 files changed, 1,655 insertions(+), 74 deletions(-)

diff --git a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.Designer.cs b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.Designer.cs
index 0cd3475..87e242a 100644
--- a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.Designer.cs
@@ -78,7 +78,7 @@
             uiComboBoxBrand.Margin = new Padding(4, 5, 4, 5);
             uiComboBoxBrand.MinimumSize = new Size(63, 0);
             uiComboBoxBrand.Name = "uiComboBoxBrand";
-            uiComboBoxBrand.Size = new Size(260, 24);
+            uiComboBoxBrand.Size = new Size(260, 28);
             uiComboBoxBrand.TabIndex = 24;
             uiComboBoxBrand.SelectedIndexChanged += cob_Brand_SelectedIndexChanged;
             // 
@@ -86,10 +86,10 @@
             // 
             uiRadioButtonSoftTrigger.Dock = DockStyle.Fill;
             uiRadioButtonSoftTrigger.Font = new Font("瀹嬩綋", 12F);
-            uiRadioButtonSoftTrigger.Location = new Point(3, 55);
+            uiRadioButtonSoftTrigger.Location = new Point(3, 54);
             uiRadioButtonSoftTrigger.MinimumSize = new Size(1, 1);
             uiRadioButtonSoftTrigger.Name = "uiRadioButtonSoftTrigger";
-            uiRadioButtonSoftTrigger.Size = new Size(368, 46);
+            uiRadioButtonSoftTrigger.Size = new Size(368, 45);
             uiRadioButtonSoftTrigger.TabIndex = 25;
             uiRadioButtonSoftTrigger.Text = "杞Е鍙�";
             uiRadioButtonSoftTrigger.CheckedChanged += uiRadioButtonSoftTrigger_CheckedChanged;
@@ -98,10 +98,10 @@
             // 
             uiRadioButtonHardTrigger.Dock = DockStyle.Fill;
             uiRadioButtonHardTrigger.Font = new Font("瀹嬩綋", 12F);
-            uiRadioButtonHardTrigger.Location = new Point(3, 159);
+            uiRadioButtonHardTrigger.Location = new Point(3, 156);
             uiRadioButtonHardTrigger.MinimumSize = new Size(1, 1);
             uiRadioButtonHardTrigger.Name = "uiRadioButtonHardTrigger";
-            uiRadioButtonHardTrigger.Size = new Size(368, 46);
+            uiRadioButtonHardTrigger.Size = new Size(368, 45);
             uiRadioButtonHardTrigger.TabIndex = 26;
             uiRadioButtonHardTrigger.Text = "纭Е鍙�";
             // 
@@ -162,7 +162,7 @@
             tableLayoutPanel2.Controls.Add(tableLayoutPanel5, 0, 6);
             tableLayoutPanel2.Controls.Add(tableLayoutPanel6, 0, 7);
             tableLayoutPanel2.Dock = DockStyle.Fill;
-            tableLayoutPanel2.Location = new Point(0, 51);
+            tableLayoutPanel2.Location = new Point(0, 55);
             tableLayoutPanel2.Name = "tableLayoutPanel2";
             tableLayoutPanel2.RowCount = 9;
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -174,7 +174,7 @@
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutPanel2.Size = new Size(374, 470);
+            tableLayoutPanel2.Size = new Size(374, 466);
             tableLayoutPanel2.TabIndex = 17;
             // 
             // tableLayoutPanel3
@@ -189,7 +189,7 @@
             tableLayoutPanel3.Name = "tableLayoutPanel3";
             tableLayoutPanel3.RowCount = 1;
             tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel3.Size = new Size(368, 46);
+            tableLayoutPanel3.Size = new Size(368, 45);
             tableLayoutPanel3.TabIndex = 0;
             // 
             // uiMarkLabel1
@@ -200,7 +200,7 @@
             uiMarkLabel1.Location = new Point(3, 0);
             uiMarkLabel1.Name = "uiMarkLabel1";
             uiMarkLabel1.Padding = new Padding(5, 0, 0, 0);
-            uiMarkLabel1.Size = new Size(94, 46);
+            uiMarkLabel1.Size = new Size(94, 45);
             uiMarkLabel1.TabIndex = 25;
             uiMarkLabel1.Text = "鍝佺墝";
             uiMarkLabel1.TextAlign = ContentAlignment.MiddleLeft;
@@ -215,11 +215,11 @@
             tableLayoutPanel1.Controls.Add(uiButtonStartSoftGrab, 1, 0);
             tableLayoutPanel1.Controls.Add(uiButtonCloseSoftGrab, 2, 0);
             tableLayoutPanel1.Dock = DockStyle.Fill;
-            tableLayoutPanel1.Location = new Point(3, 107);
+            tableLayoutPanel1.Location = new Point(3, 105);
             tableLayoutPanel1.Name = "tableLayoutPanel1";
             tableLayoutPanel1.RowCount = 1;
             tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel1.Size = new Size(368, 46);
+            tableLayoutPanel1.Size = new Size(368, 45);
             tableLayoutPanel1.TabIndex = 30;
             // 
             // uiButtonGrabOnce
@@ -229,7 +229,7 @@
             uiButtonGrabOnce.Location = new Point(3, 3);
             uiButtonGrabOnce.MinimumSize = new Size(1, 1);
             uiButtonGrabOnce.Name = "uiButtonGrabOnce";
-            uiButtonGrabOnce.Size = new Size(116, 40);
+            uiButtonGrabOnce.Size = new Size(116, 39);
             uiButtonGrabOnce.TabIndex = 31;
             uiButtonGrabOnce.Text = "鍗曞紶閲囬泦";
             uiButtonGrabOnce.Click += uiButtonGrabOnce_Click;
@@ -241,7 +241,7 @@
             uiButtonStartSoftGrab.Location = new Point(125, 3);
             uiButtonStartSoftGrab.MinimumSize = new Size(1, 1);
             uiButtonStartSoftGrab.Name = "uiButtonStartSoftGrab";
-            uiButtonStartSoftGrab.Size = new Size(116, 40);
+            uiButtonStartSoftGrab.Size = new Size(116, 39);
             uiButtonStartSoftGrab.TabIndex = 31;
             uiButtonStartSoftGrab.Text = "杩炵画閲囬泦";
             uiButtonStartSoftGrab.Click += uiButtonStartSoftGrab_Click;
@@ -253,7 +253,7 @@
             uiButtonCloseSoftGrab.Location = new Point(247, 3);
             uiButtonCloseSoftGrab.MinimumSize = new Size(1, 1);
             uiButtonCloseSoftGrab.Name = "uiButtonCloseSoftGrab";
-            uiButtonCloseSoftGrab.Size = new Size(118, 40);
+            uiButtonCloseSoftGrab.Size = new Size(118, 39);
             uiButtonCloseSoftGrab.TabIndex = 31;
             uiButtonCloseSoftGrab.Text = "鍏抽棴閲囬泦";
             uiButtonCloseSoftGrab.Click += uiButtonCloseSoftGrab_Click;
@@ -262,10 +262,10 @@
             // 
             uiButtonStartHardGrab.Dock = DockStyle.Fill;
             uiButtonStartHardGrab.Font = new Font("瀹嬩綋", 12F);
-            uiButtonStartHardGrab.Location = new Point(3, 211);
+            uiButtonStartHardGrab.Location = new Point(3, 207);
             uiButtonStartHardGrab.MinimumSize = new Size(1, 1);
             uiButtonStartHardGrab.Name = "uiButtonStartHardGrab";
-            uiButtonStartHardGrab.Size = new Size(368, 46);
+            uiButtonStartHardGrab.Size = new Size(368, 45);
             uiButtonStartHardGrab.TabIndex = 27;
             uiButtonStartHardGrab.Text = "绛夊緟纭欢瑙﹀彂";
             uiButtonStartHardGrab.Click += uiButtonStartHardGrab_Click;
@@ -278,11 +278,11 @@
             tableLayoutPanel4.Controls.Add(uiMarkLabel2, 0, 0);
             tableLayoutPanel4.Controls.Add(uiTextBoxExp, 1, 0);
             tableLayoutPanel4.Dock = DockStyle.Fill;
-            tableLayoutPanel4.Location = new Point(3, 263);
+            tableLayoutPanel4.Location = new Point(3, 258);
             tableLayoutPanel4.Name = "tableLayoutPanel4";
             tableLayoutPanel4.RowCount = 1;
             tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel4.Size = new Size(368, 46);
+            tableLayoutPanel4.Size = new Size(368, 45);
             tableLayoutPanel4.TabIndex = 28;
             // 
             // uiMarkLabel2
@@ -293,7 +293,7 @@
             uiMarkLabel2.Location = new Point(3, 0);
             uiMarkLabel2.Name = "uiMarkLabel2";
             uiMarkLabel2.Padding = new Padding(5, 0, 0, 0);
-            uiMarkLabel2.Size = new Size(94, 46);
+            uiMarkLabel2.Size = new Size(94, 45);
             uiMarkLabel2.TabIndex = 31;
             uiMarkLabel2.Text = "鏇濆厜(us)";
             uiMarkLabel2.TextAlign = ContentAlignment.MiddleLeft;
@@ -306,7 +306,7 @@
             uiTextBoxExp.Margin = new Padding(4, 5, 4, 5);
             uiTextBoxExp.MinimumSize = new Size(1, 16);
             uiTextBoxExp.Name = "uiTextBoxExp";
-            uiTextBoxExp.Size = new Size(260, 26);
+            uiTextBoxExp.Size = new Size(260, 30);
             uiTextBoxExp.TabIndex = 31;
             uiTextBoxExp.Text = "1000";
             uiTextBoxExp.TextChanged += uiTextBoxExp_TextChanged;
@@ -319,11 +319,11 @@
             tableLayoutPanel5.Controls.Add(uiMarkLabel3, 0, 0);
             tableLayoutPanel5.Controls.Add(uiTextBoxGain, 1, 0);
             tableLayoutPanel5.Dock = DockStyle.Fill;
-            tableLayoutPanel5.Location = new Point(3, 315);
+            tableLayoutPanel5.Location = new Point(3, 309);
             tableLayoutPanel5.Name = "tableLayoutPanel5";
             tableLayoutPanel5.RowCount = 1;
             tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel5.Size = new Size(368, 46);
+            tableLayoutPanel5.Size = new Size(368, 45);
             tableLayoutPanel5.TabIndex = 29;
             // 
             // uiMarkLabel3
@@ -334,7 +334,7 @@
             uiMarkLabel3.Location = new Point(3, 0);
             uiMarkLabel3.Name = "uiMarkLabel3";
             uiMarkLabel3.Padding = new Padding(5, 0, 0, 0);
-            uiMarkLabel3.Size = new Size(94, 46);
+            uiMarkLabel3.Size = new Size(94, 45);
             uiMarkLabel3.TabIndex = 31;
             uiMarkLabel3.Text = "澧炵泭";
             uiMarkLabel3.TextAlign = ContentAlignment.MiddleLeft;
@@ -347,7 +347,7 @@
             uiTextBoxGain.Margin = new Padding(4, 5, 4, 5);
             uiTextBoxGain.MinimumSize = new Size(1, 16);
             uiTextBoxGain.Name = "uiTextBoxGain";
-            uiTextBoxGain.Size = new Size(260, 26);
+            uiTextBoxGain.Size = new Size(260, 30);
             uiTextBoxGain.TabIndex = 32;
             uiTextBoxGain.Text = "1";
             uiTextBoxGain.TextChanged += uiTextBoxGain_TextChanged;
@@ -360,11 +360,11 @@
             tableLayoutPanel6.Controls.Add(uiMarkLabel4, 0, 0);
             tableLayoutPanel6.Controls.Add(uiTextBoxGrabTime, 1, 0);
             tableLayoutPanel6.Dock = DockStyle.Fill;
-            tableLayoutPanel6.Location = new Point(3, 367);
+            tableLayoutPanel6.Location = new Point(3, 360);
             tableLayoutPanel6.Name = "tableLayoutPanel6";
             tableLayoutPanel6.RowCount = 1;
             tableLayoutPanel6.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tableLayoutPanel6.Size = new Size(368, 46);
+            tableLayoutPanel6.Size = new Size(368, 45);
             tableLayoutPanel6.TabIndex = 31;
             // 
             // uiMarkLabel4
@@ -375,7 +375,7 @@
             uiMarkLabel4.Location = new Point(3, 0);
             uiMarkLabel4.Name = "uiMarkLabel4";
             uiMarkLabel4.Padding = new Padding(5, 0, 0, 0);
-            uiMarkLabel4.Size = new Size(94, 46);
+            uiMarkLabel4.Size = new Size(94, 45);
             uiMarkLabel4.TabIndex = 31;
             uiMarkLabel4.Text = "鑰楁椂(ms)";
             uiMarkLabel4.TextAlign = ContentAlignment.MiddleLeft;
@@ -389,7 +389,7 @@
             uiTextBoxGrabTime.Margin = new Padding(4, 5, 4, 5);
             uiTextBoxGrabTime.MinimumSize = new Size(1, 16);
             uiTextBoxGrabTime.Name = "uiTextBoxGrabTime";
-            uiTextBoxGrabTime.Size = new Size(260, 26);
+            uiTextBoxGrabTime.Size = new Size(260, 30);
             uiTextBoxGrabTime.TabIndex = 31;
             // 
             // uiSplitContainer1
diff --git a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.resx b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.resx
index 922b5eb..547fe4f 100644
--- a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.resx
+++ b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.resx
@@ -121,24 +121,24 @@
   <data name="themeForm1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
-        vgAADr4B6kKxwAAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou
-        BkVBUPCBCEG8BXNQ48GLeImCehIJxMsqhsSZruod46K4HtSIGjU+4iOr0c1I9fSsM3/PLNtCPO0H36m/
-        evz/X11VnreKVRTAHPOZumkY6lFwqURws3BwZ8ywTQnuiCP/+iTCzY1qaUPzdm/Atf3PaHre6XPsjyQM
-        2xLGV4XwIyX4QRj+UMK/lPFvJTyhBMeV8IgQvmRJuH4Ko+l5p9UjGBbCJ5RxTgj+VMZmXxKcSAjekHE/
-        NNs5DgaTKLinEQYVO4Trf1mkV81wixLUslPmA3bzF2XcKeP+hWY/u3n0fCXcrQwLyjAvjNsb1dI6N05P
-        mFAIHlHG73sEypPgGwnhfpn0zzH7jzddcK4Q7kqfKNMI4a9K+MwBDgbdeF04MBWsFYYdQvhbLlBvfhKT
-        f+vMtLfG7C0JJXxKGY67WnvCmPAFGRs7z42boul5AzHBfdK6TjdQtzPGk8oos5F/5Y7sfVvPhg+lp+1h
-        0yIsxARPmtaN78WEl8eEX+SNclxUhne0glUrNrN9zfMGlPAuZTzaQ99FYfwuDv3ruoLvq5bWaQSvZCfL
-        GXUYLwrj240Qxtu2lkSN4FpdWfKZH9jb9RQ1Cq62f9sVOlxUxn3KQXnJ0PO8QxU/jBm1h74v7ZniEG9K
-        Hdg/quzvXO709k0Y3u08ucGqWgheX862H4XgxbR47SqU8D1X0EXC2VmGizqDz0xPr0kYH9eO360gNe0b
-        jWppozB+1kOQEb5MCLa0C64NoeGrhOGrvH6lhK81GiIvnggmrDLzgvTkvwvDA+5wsU4nhG/m9AUoBD/F
-        HFzWN4H0XQn2vF8eXN8Z3FAPYasl59oUYjuB+sTImDB+nhfgYQ39STf4fmu1DHtz+oIUgiM1KkWtwcFw
-        sOujVT3hrnaL7UQc+hcL5W+sKIXhw0OVjaW0iwnBc47gqIQ45QY32PKRzv8eTguRYM9SS5YouEEZjv37
-        EffbzbjBDdZyxZYQ12EB2qS0bWrJqRVazPDWkojwZbuZrsgZtDJ0iY1g12khEtTicMTvclwn2CKE32YJ
-        7G5PORfZ1HtMCH7MOV4BrQ3XCe92+4onk5Nn2PolDAvWXnuOzAwzo6Nnx4Q3SrojwqfKeMxWMpsXWVs+
-        2WrfKRdbW1W6Hf0shM/33Y7my4PrleFZIfhAaWjU/e5ivlw+y3S2FySMtynjvcrwsFiLJv/RhPBB2ws1
-        hK2WcBLBFf1qawlplwvxaQlxe786OOU4PBWsjSO85mBlQ8n99r/BisSdAas4FfgHpdEUZpwUX7sAAAAA
-        SUVORK5CYII=
+        vAAADrwBlbxySQAAA+xJREFUWEftV0loFUkYbvcNFzJi0lWdBEPQruqXKEYdcRgz4AYqeplBwYiXEUVB
+        UHAhCEG8iR509OBlmIsOjJ5EBvQSRVHzuvslxjAy8eCG+75GozF+f716L6873fqe2ykffDR59e9/1V8V
+        ow99KARtUg72J5aypGNN8xy2yJPWcleylb5gS13HnJdy+KSW6uJx3b8ZA7TKl6PbMPq3SbMsBUcpyf/2
+        BP8PDh96kr32BX/rS/4O30789grfO1j/k4LQ6p8POO6XdFgpDNbDSZsn2Bt8u2MpWGdKsCPeBNMm3TZp
+        FaUc6/cW20pQEtpsflCllmwxjDbpLKOd9vAZuBPOx5J+86TyMdDbBxsdYLsn+SpUZYQy/imQILLdBIP3
+        cxzEU7Dbns3WejXmcNK/NPGHkajabtUiLYO/nyOgXWdRFeUkDmdnWMOg2ACFFwEn8fzfFeaSxlpjIOlT
+        EHC0HVm/CstSC13B93sVFaOVszDQpwGuYGtQLipnQDlMyLzH12t2zJ8adH/TbeMbVLYROmmyDvjYRrLK
+        aS4Q3Y/gtWjFALtg6KSf4NW02Uj3HwSPzOuw9iAk24sI/p5rm3OV0wyOo+++ww7pzCIViVjvAk+02GyC
+        VlWnpUmw2Qggn+AV0eZ/A61oEtYsOttRwjlE5vy4L61KrabQmjBtV3I/JPtRUptcmy9UBuiM+tLc+bHs
+        aQ1Rn8rNnEC7Gpvr8KcqF0XoHVCbl0qB8p2OEspS8OZmySZrvwqNtbUDMRm3Yj9kj1uB9NXcwLkfjwyu
+        RAhoshuYcHMyGy4DT5T+jKrcjNbJh+yW75QIw62yqhDAvUghwV/Cybrw5UKTDn08GqmTJ9GCx660pscG
+        oPoq2MHzlUWjtN8skjZbRsGFdQpiJoBkVVkFnF3tLcCv+7ZZo31mcYZGLY5RL/kCiQrcaRLFTvrikOxc
+        YJF2PeZ5ZsTmAkNkCtaiW1YAkcTF1sT4YjXFEM3ekMADz+YztM8AULqlqE5nSL5wor3Zkew51nxU4WnP
+        Ij9DlVGLIWCtDhV6FzBWIJH9a3pNaZOGQRsNT6tjWSHB/6LK6OUA/ETJVER/O9dgwcQ7w7XLTG0yjSTO
+        Onp7Ny3A92VuuTD0rbcFbXsUMJonaQwnBV8Rniu4y2sGYbEe5emA8cORV6ZGY3n5UNycC9AKvBHZZRh+
+        iqxoX9BlRWMZozvLLiSEV5V6HT2Bjz9iX0ftaAWE9sDoBV+UlOufY9FeWTmE5OhdgLH8Kxyvhv5GON3q
+        C3NzSvD19C70MTco4JTDZsbtrSzUlLP5DnBV3D745riOp5nr8F/OJcYV65++P2iTfNV/MPoQCcP4AKXR
+        FGYxo/VGAAAAAElFTkSuQmCC
 </value>
   </data>
 </root>
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.Designer.cs b/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.Designer.cs
index cfbcc7f..efcc15a 100644
--- a/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.Designer.cs
@@ -100,8 +100,8 @@
             tableLayoutPanel1.ColumnCount = 1;
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
-            tableLayoutPanel1.Controls.Add(uiFlowLayoutPanel1, 0, 0);
             tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 1);
+            tableLayoutPanel1.Controls.Add(uiFlowLayoutPanel1, 0, 0);
             tableLayoutPanel1.Dock = DockStyle.Fill;
             tableLayoutPanel1.Location = new Point(0, 0);
             tableLayoutPanel1.Name = "tableLayoutPanel1";
diff --git a/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.cs b/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.cs
index 1d9acea..275f5a4 100644
--- a/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.cs
+++ b/LB_SmartVision/Forms/Pages/CameraPage/CamerasEditPage.cs
@@ -137,16 +137,11 @@
                 if (name != Name)
                     continue;
 
-                RemoveFlowEvent(flow);
-                uiFlowLayoutPanel1.Controls.Remove(uiFlowLayoutPanel1.Controls[i]);
-                if (GlobalVar.dicCameras.TryRemove(name, out BaseCamera BaseCamera))
+                if (GlobalVar.dicCameras.ContainsKey(name))
                 {
-                    BaseCamera.Dispose();
-                    LogInfo?.Invoke(string.Format("绉婚櫎鐩告満[{0}]", name), LogInfoType.INFO);
+                    MotionControlPage.MotionControlForm cameraForm = new MotionControlPage.MotionControlForm(GlobalVar.dicCameras[name]);
+                    cameraForm.Show();
                 }
-                else
-                    LogInfo?.Invoke(string.Format("绉婚櫎鐩告満[{0}]澶辫触", name), LogInfoType.ERROR);
-
             }
         }
 
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.Designer.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.Designer.cs
index b13a7da..477b065 100644
--- a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.Designer.cs
@@ -33,7 +33,7 @@
         {
             uiButton1 = new HopeButton();
             uiButton2 = new LostButton();
-            uiFlowLayoutPanel1 = new FlowLayoutPanel();
+            uiMCLayoutPanel1 = new FlowLayoutPanel();
             tableLayoutPanel1 = new TableLayoutPanel();
             tableLayoutPanel2 = new TableLayoutPanel();
             tableLayoutPanel1.SuspendLayout();
@@ -61,6 +61,7 @@
             uiButton1.Text = "澧炲姞";
             uiButton1.TextColor = Color.White;
             uiButton1.WarningColor = Color.FromArgb(230, 162, 60);
+            uiButton1.Click += uiButton1_Click;
             // 
             // uiButton2
             // 
@@ -78,27 +79,27 @@
             uiButton2.TabIndex = 12;
             uiButton2.Text = "娓呴櫎";
             // 
-            // uiFlowLayoutPanel1
+            // uiMCLayoutPanel1
             // 
-            uiFlowLayoutPanel1.BackColor = Color.FromArgb(32, 41, 50);
-            uiFlowLayoutPanel1.Dock = DockStyle.Fill;
-            uiFlowLayoutPanel1.Font = new Font("瀹嬩綋", 12F);
-            uiFlowLayoutPanel1.ForeColor = SystemColors.Control;
-            uiFlowLayoutPanel1.Location = new Point(4, 5);
-            uiFlowLayoutPanel1.Margin = new Padding(4, 5, 4, 5);
-            uiFlowLayoutPanel1.MinimumSize = new Size(1, 1);
-            uiFlowLayoutPanel1.Name = "uiFlowLayoutPanel1";
-            uiFlowLayoutPanel1.Padding = new Padding(2);
-            uiFlowLayoutPanel1.Size = new Size(599, 293);
-            uiFlowLayoutPanel1.TabIndex = 10;
-            uiFlowLayoutPanel1.Text = "`";
+            uiMCLayoutPanel1.BackColor = Color.FromArgb(32, 41, 50);
+            uiMCLayoutPanel1.Dock = DockStyle.Fill;
+            uiMCLayoutPanel1.Font = new Font("瀹嬩綋", 12F);
+            uiMCLayoutPanel1.ForeColor = SystemColors.Control;
+            uiMCLayoutPanel1.Location = new Point(4, 5);
+            uiMCLayoutPanel1.Margin = new Padding(4, 5, 4, 5);
+            uiMCLayoutPanel1.MinimumSize = new Size(1, 1);
+            uiMCLayoutPanel1.Name = "uiMCLayoutPanel1";
+            uiMCLayoutPanel1.Padding = new Padding(2);
+            uiMCLayoutPanel1.Size = new Size(599, 293);
+            uiMCLayoutPanel1.TabIndex = 10;
+            uiMCLayoutPanel1.Text = "`";
             // 
             // tableLayoutPanel1
             // 
             tableLayoutPanel1.ColumnCount = 1;
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
             tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
-            tableLayoutPanel1.Controls.Add(uiFlowLayoutPanel1, 0, 0);
+            tableLayoutPanel1.Controls.Add(uiMCLayoutPanel1, 0, 0);
             tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 1);
             tableLayoutPanel1.Dock = DockStyle.Fill;
             tableLayoutPanel1.Location = new Point(0, 0);
@@ -145,7 +146,7 @@
 
         private ReaLTaiizor.Controls.HopeButton uiButton1;
         private ReaLTaiizor.Controls.LostButton uiButton2;
-        private FlowLayoutPanel uiFlowLayoutPanel1;
+        private FlowLayoutPanel uiMCLayoutPanel1;
         private TableLayoutPanel tableLayoutPanel1;
         private TableLayoutPanel tableLayoutPanel2;
     }
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.cs
index 6ef3551..2048868 100644
--- a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.cs
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlEditPage.cs
@@ -1,4 +1,7 @@
-锘縰sing LB_VisionControl;
+锘縰sing LB_SmartVision.Forms.Pages.CameraPage;
+using LB_SmartVision.Forms.Pages.MotionControlPage;
+using LB_VisionControl;
+using LB_VisionProcesses.Cameras;
 using OpenCvSharp.Flann;
 using System;
 using System.Collections.Concurrent;
@@ -11,7 +14,6 @@
     {
         public Action<string, LogInfoType> LogInfo;
 
-
         public MotionControlEditPage()
         {
             InitializeComponent();
@@ -22,9 +24,156 @@
 
         private void MESEditPage_Paint(object sender, PaintEventArgs e)
         {
-            uiFlowLayoutPanel1.Controls.Clear();
+            uiMCLayoutPanel1.Controls.Clear();
+
+            if (GlobalVar.dicCameras.Count <= 0)
+                return;
+
+            foreach (var item in GlobalVar.dicCameras)
+            {
+                string CameraSN = item.Key;
+                string CameraBrand = item.Value.Brand.ToString();
+
+                if (string.IsNullOrEmpty(CameraSN) || string.IsNullOrEmpty(CameraBrand))
+                    return;
+
+                UserItem flow = new UserItem(new string[] { "杩愬姩鎺у埗", "鍒锋柊", "绉婚櫎" });
+                flow.Name = CameraSN;
+                flow.Text = $"[{CameraBrand}]";
+                if (item.Value.isGrabbing)
+                    flow.state = State.Pass;
+                else
+                    flow.state |= State.Error;
+                LoadFlowEvent(flow);
+
+                uiMCLayoutPanel1.Controls.Add(flow);
+            }
         }
 
+        private void uiButton1_Click(object sender, System.EventArgs e)
+        {
+            CreateCameraForm createCameraForm = new CreateCameraForm();
+            createCameraForm.ShowDialog();
 
+            if (createCameraForm.bCreate)
+            {
+                BaseCamera camera = createCameraForm.camera;
+                if (GlobalVar.dicCameras.ContainsKey(camera.SN))
+                {
+                    MessageBox.Show($"鐩告満[{camera.SN}]宸插瓨鍦�!", "寮傚父");
+                    return;
+                }
+
+                string CameraSN = camera.SN;//"127.0.0.1"
+                string CameraBrand = camera.Brand.ToString();//"1111"
+
+                if (string.IsNullOrEmpty(CameraSN) || string.IsNullOrEmpty(CameraBrand))
+                    return;
+
+                GlobalVar.dicCameras.TryAdd(CameraSN, camera);
+                LogInfo?.Invoke(string.Format("娣诲姞鐩告満[{0}][{1}]鎴愬姛", CameraBrand, CameraSN), LogInfoType.PASS);
+            }
+            this.Invalidate();
+        }
+
+        private void uiButton2_Click(object sender, System.EventArgs e)
+        {
+            //娓呴櫎鐢–lear鏂规硶
+            uiMCLayoutPanel1.Controls.Clear();
+            foreach (var camera in GlobalVar.dicCameras.Values)
+            {
+                camera.CloseDevice();
+            }
+            GlobalVar.dicCameras.Clear();
+        }
+
+        private void LoadFlowEvent(UserItem flow)
+        {
+            //鎸夐敭1涓烘祴璇�
+            flow.MenuItem1ClickedEvent += MCEvent;
+            //鎸夐敭2涓哄埛鏂�
+            flow.MenuItem2ClickedEvent += ReconnectEvent;
+            //鎸夐敭3涓虹Щ闄�
+            flow.MenuItem3ClickedEvent += DeleteEvent;
+
+        }
+
+        private void RemoveFlowEvent(UserItem flow)
+        {
+            //鎸夐敭1涓烘祴璇�
+            flow.MenuItem1ClickedEvent -= MCEvent;
+            //鎸夐敭2涓哄埛鏂�
+            flow.MenuItem2ClickedEvent -= ReconnectEvent;
+            //鎸夐敭3涓虹Щ闄�
+            flow.MenuItem3ClickedEvent -= DeleteEvent;
+        }
+
+        // 杩愬姩鎺у埗
+        private void MCEvent(string Name, string Text)
+        {
+            for (int i = 0; i < uiMCLayoutPanel1.Controls.Count; i++)
+            {
+                UserItem flow = (UserItem)uiMCLayoutPanel1.Controls[i];
+                string name = flow.Name;
+                if (name != Name)
+                    continue;
+
+                if (GlobalVar.dicCameras.ContainsKey(name))
+                {
+                    MotionControlPage.MotionControlForm cameraForm = new MotionControlPage.MotionControlForm(GlobalVar.dicCameras[name]);
+                    cameraForm.Show();
+                }
+            }
+        }
+
+        // 绉婚櫎鐩告満
+        private void DeleteEvent(string Name, string Text)
+        {
+            for (int i = 0; i < uiMCLayoutPanel1.Controls.Count; i++)
+            {
+                UserItem flow = (UserItem)uiMCLayoutPanel1.Controls[i];
+                string name = flow.Name;
+                if (name != Name)
+                    continue;
+
+                RemoveFlowEvent(flow);
+                uiMCLayoutPanel1.Controls.Remove(uiMCLayoutPanel1.Controls[i]);
+                if (GlobalVar.dicCameras.TryRemove(name, out BaseCamera BaseCamera))
+                {
+                    BaseCamera.Dispose();
+                    LogInfo?.Invoke(string.Format("绉婚櫎鐩告満[{0}]", name), LogInfoType.INFO);
+                }
+                else
+                    LogInfo?.Invoke(string.Format("绉婚櫎鐩告満[{0}]澶辫触", name), LogInfoType.ERROR);
+
+            }
+        }
+
+        // 閲嶈繛鐩告満
+        private void ReconnectEvent(string Name, string Text)
+        {
+            for (int i = 0; i < uiMCLayoutPanel1.Controls.Count; i++)
+            {
+                UserItem flow = (UserItem)uiMCLayoutPanel1.Controls[i];
+                string name = flow.Name;
+                if (name != Name)
+                    continue;
+
+                GlobalVar.dicCameras[name].CloseDevice();
+                Thread.Sleep(50);
+                GlobalVar.dicCameras[name].InitDevice(name, this.Handle);
+                if (GlobalVar.dicCameras[name].isGrabbing)
+                {
+                    flow.state = State.Pass;
+                    LogInfo?.Invoke(string.Format("閲嶈繛鐩告満[{0}]鎴愬姛", name), LogInfoType.PASS);
+                }
+                else
+                {
+                    flow.state = State.Error;
+                    LogInfo?.Invoke(string.Format("閲嶈繛鐩告満[{0}]澶辫触", name), LogInfoType.ERROR);
+                }
+                flow.Refresh();
+            }
+        }
     }
 }
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs
new file mode 100644
index 0000000..10997aa
--- /dev/null
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.Designer.cs
@@ -0,0 +1,781 @@
+锘縩amespace LB_SmartVision.Forms.Pages.MotionControlPage
+{
+    partial class MotionControlForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MotionControlForm));
+            uiGroupBoxMotionControl = new GroupBox();
+            tableLayoutPanel3 = new TableLayoutPanel();
+            tableLayoutPanel6 = new TableLayoutPanel();
+            uiButtonCloseSoftGrab = new Button();
+            uiButtonHardGrabWithPLC = new Button();
+            tableLayoutPanel5 = new TableLayoutPanel();
+            uiButtonGrabOnce = new Button();
+            tableLayoutPanel4 = new TableLayoutPanel();
+            labelPointSpeed = new Label();
+            textBoxAngleNow = new TextBox();
+            labelAngleNow = new Label();
+            textBoxPositionNow = new TextBox();
+            labelPositionNow = new Label();
+            textBoxAngSpeed = new TextBox();
+            labelAngSpeed = new Label();
+            textBoxPointSpeed = new TextBox();
+            tableLayoutPanel2 = new TableLayoutPanel();
+            uiButtonIncreasePitchAngle = new Button();
+            groupBoxPitchAnglePosition = new GroupBox();
+            textBoxPitchAnglePosition = new TextBox();
+            uiButtonDecreasePitchAngle = new Button();
+            groupBoxZPosition = new GroupBox();
+            textBoxZPosition = new TextBox();
+            groupBoxYPosition = new GroupBox();
+            textBoxYPosition = new TextBox();
+            uiButtonIncreaseZ = new Button();
+            uiButtonDecreaseZ = new Button();
+            uiButtonIncreaseY = new Button();
+            uiButtonDecreaseY = new Button();
+            uiButtonIncreaseX = new Button();
+            uiButtonDecreaseX = new Button();
+            groupBoxXPosition = new GroupBox();
+            textBoxXPosition = new TextBox();
+            tableLayoutPanel1 = new TableLayoutPanel();
+            textBox1 = new TextBox();
+            uiMarkLabelSN = new Label();
+            tableLayoutPanel7 = new TableLayoutPanel();
+            textBox2 = new TextBox();
+            uiMarkLabelName = new Label();
+            uiGroupBoxImage = new GroupBox();
+            uiSplitContainer1 = new SplitContainer();
+            themeForm1 = new ReaLTaiizor.Forms.ThemeForm();
+            controlBox1 = new ReaLTaiizor.Controls.ControlBox();
+            uiGroupBoxMotionControl.SuspendLayout();
+            tableLayoutPanel3.SuspendLayout();
+            tableLayoutPanel6.SuspendLayout();
+            tableLayoutPanel5.SuspendLayout();
+            tableLayoutPanel4.SuspendLayout();
+            tableLayoutPanel2.SuspendLayout();
+            groupBoxPitchAnglePosition.SuspendLayout();
+            groupBoxZPosition.SuspendLayout();
+            groupBoxYPosition.SuspendLayout();
+            groupBoxXPosition.SuspendLayout();
+            tableLayoutPanel1.SuspendLayout();
+            tableLayoutPanel7.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)uiSplitContainer1).BeginInit();
+            uiSplitContainer1.Panel1.SuspendLayout();
+            uiSplitContainer1.Panel2.SuspendLayout();
+            uiSplitContainer1.SuspendLayout();
+            themeForm1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // uiGroupBoxMotionControl
+            // 
+            uiGroupBoxMotionControl.Controls.Add(tableLayoutPanel3);
+            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.TabIndex = 18;
+            uiGroupBoxMotionControl.TabStop = false;
+            uiGroupBoxMotionControl.Text = "杩愬姩鎺у埗鍙傛暟";
+            // 
+            // tableLayoutPanel3
+            // 
+            tableLayoutPanel3.ColumnCount = 1;
+            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
+            tableLayoutPanel3.Controls.Add(tableLayoutPanel6, 0, 3);
+            tableLayoutPanel3.Controls.Add(tableLayoutPanel5, 0, 2);
+            tableLayoutPanel3.Controls.Add(tableLayoutPanel4, 0, 5);
+            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.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.TabIndex = 0;
+            tableLayoutPanel3.Paint += tableLayoutPanel3_Paint;
+            // 
+            // tableLayoutPanel6
+            // 
+            tableLayoutPanel6.ColumnCount = 2;
+            tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
+            tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
+            tableLayoutPanel6.Controls.Add(uiButtonCloseSoftGrab, 1, 0);
+            tableLayoutPanel6.Controls.Add(uiButtonHardGrabWithPLC, 0, 0);
+            tableLayoutPanel6.Dock = DockStyle.Fill;
+            tableLayoutPanel6.Location = new Point(3, 138);
+            tableLayoutPanel6.Name = "tableLayoutPanel6";
+            tableLayoutPanel6.RowCount = 1;
+            tableLayoutPanel6.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel6.Size = new Size(368, 39);
+            tableLayoutPanel6.TabIndex = 6;
+            // 
+            // uiButtonCloseSoftGrab
+            // 
+            uiButtonCloseSoftGrab.Anchor = AnchorStyles.None;
+            uiButtonCloseSoftGrab.BackColor = Color.Black;
+            uiButtonCloseSoftGrab.Location = new Point(225, 5);
+            uiButtonCloseSoftGrab.Name = "uiButtonCloseSoftGrab";
+            uiButtonCloseSoftGrab.Size = new Size(102, 29);
+            uiButtonCloseSoftGrab.TabIndex = 2;
+            uiButtonCloseSoftGrab.Text = "鏆傚仠閲囬泦";
+            uiButtonCloseSoftGrab.UseVisualStyleBackColor = false;
+            // 
+            // uiButtonHardGrabWithPLC
+            // 
+            uiButtonHardGrabWithPLC.Anchor = AnchorStyles.None;
+            uiButtonHardGrabWithPLC.BackColor = Color.Black;
+            uiButtonHardGrabWithPLC.Location = new Point(41, 5);
+            uiButtonHardGrabWithPLC.Name = "uiButtonHardGrabWithPLC";
+            uiButtonHardGrabWithPLC.Size = new Size(102, 29);
+            uiButtonHardGrabWithPLC.TabIndex = 1;
+            uiButtonHardGrabWithPLC.Text = "妯℃嫙閲囬泦";
+            uiButtonHardGrabWithPLC.UseVisualStyleBackColor = false;
+            uiButtonHardGrabWithPLC.Click += uiButtonHardGrabWithPLC_Click;
+            // 
+            // tableLayoutPanel5
+            // 
+            tableLayoutPanel5.ColumnCount = 1;
+            tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
+            tableLayoutPanel5.Controls.Add(uiButtonGrabOnce, 0, 0);
+            tableLayoutPanel5.Dock = DockStyle.Fill;
+            tableLayoutPanel5.Location = new Point(3, 93);
+            tableLayoutPanel5.Name = "tableLayoutPanel5";
+            tableLayoutPanel5.RowCount = 1;
+            tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
+            tableLayoutPanel5.Size = new Size(368, 39);
+            tableLayoutPanel5.TabIndex = 5;
+            // 
+            // uiButtonGrabOnce
+            // 
+            uiButtonGrabOnce.BackColor = Color.Black;
+            uiButtonGrabOnce.Dock = DockStyle.Fill;
+            uiButtonGrabOnce.Location = new Point(3, 3);
+            uiButtonGrabOnce.Name = "uiButtonGrabOnce";
+            uiButtonGrabOnce.Size = new Size(362, 33);
+            uiButtonGrabOnce.TabIndex = 0;
+            uiButtonGrabOnce.Text = "鍗曞紶閲囬泦";
+            uiButtonGrabOnce.UseVisualStyleBackColor = false;
+            uiButtonGrabOnce.Click += uiButtonGrabOnce_Click;
+            // 
+            // tableLayoutPanel4
+            // 
+            tableLayoutPanel4.ColumnCount = 2;
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 42.81768F));
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 57.18232F));
+            tableLayoutPanel4.Controls.Add(labelPointSpeed, 0, 0);
+            tableLayoutPanel4.Controls.Add(textBoxAngleNow, 1, 3);
+            tableLayoutPanel4.Controls.Add(labelAngleNow, 0, 3);
+            tableLayoutPanel4.Controls.Add(textBoxPositionNow, 1, 2);
+            tableLayoutPanel4.Controls.Add(labelPositionNow, 0, 2);
+            tableLayoutPanel4.Controls.Add(textBoxAngSpeed, 1, 1);
+            tableLayoutPanel4.Controls.Add(labelAngSpeed, 0, 1);
+            tableLayoutPanel4.Controls.Add(textBoxPointSpeed, 1, 0);
+            tableLayoutPanel4.Dock = DockStyle.Fill;
+            tableLayoutPanel4.Location = new Point(3, 373);
+            tableLayoutPanel4.Name = "tableLayoutPanel4";
+            tableLayoutPanel4.RowCount = 4;
+            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.TabIndex = 2;
+            // 
+            // labelPointSpeed
+            // 
+            labelPointSpeed.AutoSize = true;
+            labelPointSpeed.Dock = DockStyle.Fill;
+            labelPointSpeed.Location = new Point(3, 5);
+            labelPointSpeed.Margin = new Padding(3, 5, 3, 5);
+            labelPointSpeed.Name = "labelPointSpeed";
+            labelPointSpeed.Size = new Size(151, 35);
+            labelPointSpeed.TabIndex = 18;
+            labelPointSpeed.Text = "鐐瑰姩閫熷害(mm/s)";
+            labelPointSpeed.TextAlign = ContentAlignment.MiddleLeft;
+            // 
+            // textBoxAngleNow
+            // 
+            textBoxAngleNow.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxAngleNow.Enabled = false;
+            textBoxAngleNow.Location = new Point(160, 144);
+            textBoxAngleNow.Name = "textBoxAngleNow";
+            textBoxAngleNow.Size = new Size(205, 30);
+            textBoxAngleNow.TabIndex = 17;
+            textBoxAngleNow.Text = "0";
+            textBoxAngleNow.TextChanged += textBoxAngleNow_TextChanged;
+            // 
+            // labelAngleNow
+            // 
+            labelAngleNow.AutoSize = true;
+            labelAngleNow.Dock = DockStyle.Fill;
+            labelAngleNow.Location = new Point(3, 140);
+            labelAngleNow.Margin = new Padding(3, 5, 3, 5);
+            labelAngleNow.Name = "labelAngleNow";
+            labelAngleNow.Size = new Size(151, 39);
+            labelAngleNow.TabIndex = 16;
+            labelAngleNow.Text = "褰撳墠瑙掑害(掳)";
+            labelAngleNow.TextAlign = ContentAlignment.MiddleLeft;
+            // 
+            // textBoxPositionNow
+            // 
+            textBoxPositionNow.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxPositionNow.Enabled = false;
+            textBoxPositionNow.Location = new Point(160, 97);
+            textBoxPositionNow.Name = "textBoxPositionNow";
+            textBoxPositionNow.Size = new Size(205, 30);
+            textBoxPositionNow.TabIndex = 15;
+            textBoxPositionNow.Text = "(0,0,0)";
+            textBoxPositionNow.TextChanged += textBoxPositionNow_TextChanged;
+            // 
+            // labelPositionNow
+            // 
+            labelPositionNow.AutoSize = true;
+            labelPositionNow.Dock = DockStyle.Fill;
+            labelPositionNow.Location = new Point(3, 95);
+            labelPositionNow.Margin = new Padding(3, 5, 3, 5);
+            labelPositionNow.Name = "labelPositionNow";
+            labelPositionNow.Size = new Size(151, 35);
+            labelPositionNow.TabIndex = 14;
+            labelPositionNow.Text = "褰撳墠鐐逛綅(mm)";
+            labelPositionNow.TextAlign = ContentAlignment.MiddleLeft;
+            // 
+            // textBoxAngSpeed
+            // 
+            textBoxAngSpeed.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxAngSpeed.Location = new Point(160, 52);
+            textBoxAngSpeed.Name = "textBoxAngSpeed";
+            textBoxAngSpeed.Size = new Size(205, 30);
+            textBoxAngSpeed.TabIndex = 13;
+            textBoxAngSpeed.Text = "0";
+            textBoxAngSpeed.TextChanged += textBoxAngSpeed_TextChanged;
+            textBoxAngSpeed.KeyDown += textBoxXPosition_KeyDown;
+            textBoxAngSpeed.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // labelAngSpeed
+            // 
+            labelAngSpeed.AutoSize = true;
+            labelAngSpeed.Dock = DockStyle.Fill;
+            labelAngSpeed.Location = new Point(3, 50);
+            labelAngSpeed.Margin = new Padding(3, 5, 3, 5);
+            labelAngSpeed.Name = "labelAngSpeed";
+            labelAngSpeed.Size = new Size(151, 35);
+            labelAngSpeed.TabIndex = 12;
+            labelAngSpeed.Text = "瑙掗�熷害(rad/s)";
+            labelAngSpeed.TextAlign = ContentAlignment.MiddleLeft;
+            // 
+            // textBoxPointSpeed
+            // 
+            textBoxPointSpeed.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+            textBoxPointSpeed.Location = new Point(160, 7);
+            textBoxPointSpeed.Name = "textBoxPointSpeed";
+            textBoxPointSpeed.Size = new Size(205, 30);
+            textBoxPointSpeed.TabIndex = 11;
+            textBoxPointSpeed.Text = "0";
+            textBoxPointSpeed.TextChanged += textBoxPointSpeed_TextChanged;
+            textBoxPointSpeed.KeyDown += textBoxXPosition_KeyDown;
+            textBoxPointSpeed.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // 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.Controls.Add(uiButtonIncreasePitchAngle, 2, 3);
+            tableLayoutPanel2.Controls.Add(groupBoxPitchAnglePosition, 1, 3);
+            tableLayoutPanel2.Controls.Add(uiButtonDecreasePitchAngle, 0, 3);
+            tableLayoutPanel2.Controls.Add(groupBoxZPosition, 1, 2);
+            tableLayoutPanel2.Controls.Add(groupBoxYPosition, 1, 1);
+            tableLayoutPanel2.Controls.Add(uiButtonIncreaseZ, 2, 2);
+            tableLayoutPanel2.Controls.Add(uiButtonDecreaseZ, 0, 2);
+            tableLayoutPanel2.Controls.Add(uiButtonIncreaseY, 2, 1);
+            tableLayoutPanel2.Controls.Add(uiButtonDecreaseY, 0, 1);
+            tableLayoutPanel2.Controls.Add(uiButtonIncreaseX, 2, 0);
+            tableLayoutPanel2.Controls.Add(uiButtonDecreaseX, 0, 0);
+            tableLayoutPanel2.Controls.Add(groupBoxXPosition, 1, 0);
+            tableLayoutPanel2.Dock = DockStyle.Fill;
+            tableLayoutPanel2.Location = new Point(3, 183);
+            tableLayoutPanel2.Name = "tableLayoutPanel2";
+            tableLayoutPanel2.RowCount = 1;
+            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.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
+            tableLayoutPanel2.Size = new Size(368, 184);
+            tableLayoutPanel2.TabIndex = 3;
+            // 
+            // uiButtonIncreasePitchAngle
+            // 
+            uiButtonIncreasePitchAngle.BackColor = Color.Black;
+            uiButtonIncreasePitchAngle.Dock = DockStyle.Left;
+            uiButtonIncreasePitchAngle.Location = new Point(298, 140);
+            uiButtonIncreasePitchAngle.Margin = new Padding(5);
+            uiButtonIncreasePitchAngle.Name = "uiButtonIncreasePitchAngle";
+            uiButtonIncreasePitchAngle.Size = new Size(32, 39);
+            uiButtonIncreasePitchAngle.TabIndex = 27;
+            uiButtonIncreasePitchAngle.Text = "+";
+            uiButtonIncreasePitchAngle.UseVisualStyleBackColor = false;
+            uiButtonIncreasePitchAngle.Click += uiButtonIncreasePitchAngle_Click;
+            // 
+            // groupBoxPitchAnglePosition
+            // 
+            groupBoxPitchAnglePosition.Controls.Add(textBoxPitchAnglePosition);
+            groupBoxPitchAnglePosition.Font = new Font("瀹嬩綋", 8F);
+            groupBoxPitchAnglePosition.ForeColor = Color.White;
+            groupBoxPitchAnglePosition.Location = new Point(123, 138);
+            groupBoxPitchAnglePosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxPitchAnglePosition.Name = "groupBoxPitchAnglePosition";
+            groupBoxPitchAnglePosition.Size = new Size(115, 39);
+            groupBoxPitchAnglePosition.TabIndex = 26;
+            groupBoxPitchAnglePosition.TabStop = false;
+            groupBoxPitchAnglePosition.Text = "淇话瑙�(掳)";
+            // 
+            // textBoxPitchAnglePosition
+            // 
+            textBoxPitchAnglePosition.Dock = DockStyle.Bottom;
+            textBoxPitchAnglePosition.Font = new Font("瀹嬩綋", 10F);
+            textBoxPitchAnglePosition.Location = new Point(3, 16);
+            textBoxPitchAnglePosition.Multiline = true;
+            textBoxPitchAnglePosition.Name = "textBoxPitchAnglePosition";
+            textBoxPitchAnglePosition.Size = new Size(109, 20);
+            textBoxPitchAnglePosition.TabIndex = 13;
+            textBoxPitchAnglePosition.Text = "1";
+            textBoxPitchAnglePosition.KeyDown += textBoxXPosition_KeyDown;
+            textBoxPitchAnglePosition.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // uiButtonDecreasePitchAngle
+            // 
+            uiButtonDecreasePitchAngle.BackColor = Color.Black;
+            uiButtonDecreasePitchAngle.Dock = DockStyle.Right;
+            uiButtonDecreasePitchAngle.Location = new Point(37, 140);
+            uiButtonDecreasePitchAngle.Margin = new Padding(5);
+            uiButtonDecreasePitchAngle.Name = "uiButtonDecreasePitchAngle";
+            uiButtonDecreasePitchAngle.Size = new Size(31, 39);
+            uiButtonDecreasePitchAngle.TabIndex = 25;
+            uiButtonDecreasePitchAngle.Text = "-";
+            uiButtonDecreasePitchAngle.UseVisualStyleBackColor = false;
+            uiButtonDecreasePitchAngle.Click += uiButtonDecreasePitchAngle_Click;
+            // 
+            // groupBoxZPosition
+            // 
+            groupBoxZPosition.Controls.Add(textBoxZPosition);
+            groupBoxZPosition.Font = new Font("瀹嬩綋", 8F);
+            groupBoxZPosition.ForeColor = Color.White;
+            groupBoxZPosition.Location = new Point(123, 93);
+            groupBoxZPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxZPosition.Name = "groupBoxZPosition";
+            groupBoxZPosition.Size = new Size(115, 39);
+            groupBoxZPosition.TabIndex = 24;
+            groupBoxZPosition.TabStop = false;
+            groupBoxZPosition.Text = "Z(mm)";
+            // 
+            // textBoxZPosition
+            // 
+            textBoxZPosition.Dock = DockStyle.Bottom;
+            textBoxZPosition.Font = new Font("瀹嬩綋", 10F);
+            textBoxZPosition.Location = new Point(3, 16);
+            textBoxZPosition.Multiline = true;
+            textBoxZPosition.Name = "textBoxZPosition";
+            textBoxZPosition.Size = new Size(109, 20);
+            textBoxZPosition.TabIndex = 13;
+            textBoxZPosition.Text = "1";
+            textBoxZPosition.KeyDown += textBoxXPosition_KeyDown;
+            textBoxZPosition.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // groupBoxYPosition
+            // 
+            groupBoxYPosition.Controls.Add(textBoxYPosition);
+            groupBoxYPosition.Font = new Font("瀹嬩綋", 8F);
+            groupBoxYPosition.ForeColor = Color.White;
+            groupBoxYPosition.Location = new Point(123, 48);
+            groupBoxYPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxYPosition.Name = "groupBoxYPosition";
+            groupBoxYPosition.Size = new Size(115, 39);
+            groupBoxYPosition.TabIndex = 23;
+            groupBoxYPosition.TabStop = false;
+            groupBoxYPosition.Text = "Y(mm)";
+            // 
+            // textBoxYPosition
+            // 
+            textBoxYPosition.Dock = DockStyle.Bottom;
+            textBoxYPosition.Font = new Font("瀹嬩綋", 10F);
+            textBoxYPosition.Location = new Point(3, 16);
+            textBoxYPosition.Multiline = true;
+            textBoxYPosition.Name = "textBoxYPosition";
+            textBoxYPosition.Size = new Size(109, 20);
+            textBoxYPosition.TabIndex = 13;
+            textBoxYPosition.Text = "1";
+            textBoxYPosition.KeyDown += textBoxXPosition_KeyDown;
+            textBoxYPosition.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // uiButtonIncreaseZ
+            // 
+            uiButtonIncreaseZ.BackColor = Color.Black;
+            uiButtonIncreaseZ.Dock = DockStyle.Left;
+            uiButtonIncreaseZ.Location = new Point(298, 95);
+            uiButtonIncreaseZ.Margin = new Padding(5);
+            uiButtonIncreaseZ.Name = "uiButtonIncreaseZ";
+            uiButtonIncreaseZ.Size = new Size(32, 35);
+            uiButtonIncreaseZ.TabIndex = 19;
+            uiButtonIncreaseZ.Text = "+";
+            uiButtonIncreaseZ.UseVisualStyleBackColor = false;
+            uiButtonIncreaseZ.Click += uiButtonIncreaseZ_Click;
+            // 
+            // uiButtonDecreaseZ
+            // 
+            uiButtonDecreaseZ.BackColor = Color.Black;
+            uiButtonDecreaseZ.Dock = DockStyle.Right;
+            uiButtonDecreaseZ.Location = new Point(37, 95);
+            uiButtonDecreaseZ.Margin = new Padding(5);
+            uiButtonDecreaseZ.Name = "uiButtonDecreaseZ";
+            uiButtonDecreaseZ.Size = new Size(31, 35);
+            uiButtonDecreaseZ.TabIndex = 17;
+            uiButtonDecreaseZ.Text = "-";
+            uiButtonDecreaseZ.UseVisualStyleBackColor = false;
+            uiButtonDecreaseZ.Click += uiButtonDecreaseZ_Click;
+            // 
+            // uiButtonIncreaseY
+            // 
+            uiButtonIncreaseY.BackColor = Color.Black;
+            uiButtonIncreaseY.Dock = DockStyle.Left;
+            uiButtonIncreaseY.Location = new Point(298, 50);
+            uiButtonIncreaseY.Margin = new Padding(5);
+            uiButtonIncreaseY.Name = "uiButtonIncreaseY";
+            uiButtonIncreaseY.Size = new Size(32, 35);
+            uiButtonIncreaseY.TabIndex = 16;
+            uiButtonIncreaseY.Text = "+";
+            uiButtonIncreaseY.UseVisualStyleBackColor = false;
+            uiButtonIncreaseY.Click += uiButtonIncreaseY_Click;
+            // 
+            // uiButtonDecreaseY
+            // 
+            uiButtonDecreaseY.BackColor = Color.Black;
+            uiButtonDecreaseY.Dock = DockStyle.Right;
+            uiButtonDecreaseY.Location = new Point(37, 50);
+            uiButtonDecreaseY.Margin = new Padding(5);
+            uiButtonDecreaseY.Name = "uiButtonDecreaseY";
+            uiButtonDecreaseY.Size = new Size(31, 35);
+            uiButtonDecreaseY.TabIndex = 14;
+            uiButtonDecreaseY.Text = "-";
+            uiButtonDecreaseY.UseVisualStyleBackColor = false;
+            uiButtonDecreaseY.Click += uiButtonDecreaseY_Click;
+            // 
+            // uiButtonIncreaseX
+            // 
+            uiButtonIncreaseX.BackColor = Color.Black;
+            uiButtonIncreaseX.Dock = DockStyle.Left;
+            uiButtonIncreaseX.Location = new Point(298, 5);
+            uiButtonIncreaseX.Margin = new Padding(5);
+            uiButtonIncreaseX.Name = "uiButtonIncreaseX";
+            uiButtonIncreaseX.Size = new Size(32, 35);
+            uiButtonIncreaseX.TabIndex = 10;
+            uiButtonIncreaseX.Text = "+";
+            uiButtonIncreaseX.UseVisualStyleBackColor = false;
+            uiButtonIncreaseX.Click += uiButtonIncreaseX_Click;
+            // 
+            // uiButtonDecreaseX
+            // 
+            uiButtonDecreaseX.BackColor = Color.Black;
+            uiButtonDecreaseX.Dock = DockStyle.Right;
+            uiButtonDecreaseX.Location = new Point(37, 5);
+            uiButtonDecreaseX.Margin = new Padding(5);
+            uiButtonDecreaseX.Name = "uiButtonDecreaseX";
+            uiButtonDecreaseX.Size = new Size(31, 35);
+            uiButtonDecreaseX.TabIndex = 8;
+            uiButtonDecreaseX.Text = "-";
+            uiButtonDecreaseX.UseVisualStyleBackColor = false;
+            uiButtonDecreaseX.Click += uiButtonDecreaseX_Click;
+            // 
+            // groupBoxXPosition
+            // 
+            groupBoxXPosition.Controls.Add(textBoxXPosition);
+            groupBoxXPosition.Font = new Font("瀹嬩綋", 8F);
+            groupBoxXPosition.ForeColor = Color.White;
+            groupBoxXPosition.Location = new Point(123, 3);
+            groupBoxXPosition.Margin = new Padding(50, 3, 3, 3);
+            groupBoxXPosition.Name = "groupBoxXPosition";
+            groupBoxXPosition.Size = new Size(115, 39);
+            groupBoxXPosition.TabIndex = 21;
+            groupBoxXPosition.TabStop = false;
+            groupBoxXPosition.Text = "X(mm)";
+            // 
+            // textBoxXPosition
+            // 
+            textBoxXPosition.Dock = DockStyle.Bottom;
+            textBoxXPosition.Font = new Font("瀹嬩綋", 10F);
+            textBoxXPosition.Location = new Point(3, 16);
+            textBoxXPosition.Multiline = true;
+            textBoxXPosition.Name = "textBoxXPosition";
+            textBoxXPosition.Size = new Size(109, 20);
+            textBoxXPosition.TabIndex = 12;
+            textBoxXPosition.Text = "1";
+            textBoxXPosition.KeyDown += textBoxXPosition_KeyDown;
+            textBoxXPosition.KeyPress += textBoxXPosition_KeyPress;
+            // 
+            // tableLayoutPanel1
+            // 
+            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(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.TabIndex = 4;
+            // 
+            // textBox1
+            // 
+            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;
+            // 
+            // uiMarkLabelSN
+            // 
+            uiMarkLabelSN.AutoSize = true;
+            uiMarkLabelSN.Dock = DockStyle.Fill;
+            uiMarkLabelSN.Location = new Point(3, 5);
+            uiMarkLabelSN.Margin = new Padding(3, 5, 3, 5);
+            uiMarkLabelSN.Name = "uiMarkLabelSN";
+            uiMarkLabelSN.Size = new Size(69, 29);
+            uiMarkLabelSN.TabIndex = 19;
+            uiMarkLabelSN.Text = "SN";
+            uiMarkLabelSN.TextAlign = ContentAlignment.MiddleLeft;
+            // 
+            // tableLayoutPanel7
+            // 
+            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(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.TabIndex = 7;
+            // 
+            // textBox2
+            // 
+            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;
+            // 
+            // uiMarkLabelName
+            // 
+            uiMarkLabelName.Anchor = AnchorStyles.None;
+            uiMarkLabelName.Location = new Point(3, 5);
+            uiMarkLabelName.Margin = new Padding(3, 5, 3, 5);
+            uiMarkLabelName.Name = "uiMarkLabelName";
+            uiMarkLabelName.Size = new Size(69, 29);
+            uiMarkLabelName.TabIndex = 20;
+            uiMarkLabelName.Text = "鍚嶇О";
+            uiMarkLabelName.TextAlign = ContentAlignment.MiddleLeft;
+            uiMarkLabelName.Click += label1_Click;
+            // 
+            // uiGroupBoxImage
+            // 
+            uiGroupBoxImage.Dock = DockStyle.Fill;
+            uiGroupBoxImage.Font = new Font("瀹嬩綋", 12F);
+            uiGroupBoxImage.ForeColor = SystemColors.Control;
+            uiGroupBoxImage.Location = new Point(0, 0);
+            uiGroupBoxImage.Margin = new Padding(4, 5, 4, 5);
+            uiGroupBoxImage.MinimumSize = new Size(1, 1);
+            uiGroupBoxImage.Name = "uiGroupBoxImage";
+            uiGroupBoxImage.Padding = new Padding(0, 32, 0, 0);
+            uiGroupBoxImage.Size = new Size(495, 684);
+            uiGroupBoxImage.TabIndex = 17;
+            uiGroupBoxImage.TabStop = false;
+            uiGroupBoxImage.Text = "瀹炴椂閲囬泦";
+            // 
+            // uiSplitContainer1
+            // 
+            uiSplitContainer1.Dock = DockStyle.Fill;
+            uiSplitContainer1.ForeColor = SystemColors.Control;
+            uiSplitContainer1.Location = new Point(10, 70);
+            uiSplitContainer1.MinimumSize = new Size(20, 20);
+            uiSplitContainer1.Name = "uiSplitContainer1";
+            // 
+            // uiSplitContainer1.Panel1
+            // 
+            uiSplitContainer1.Panel1.Controls.Add(uiGroupBoxMotionControl);
+            uiSplitContainer1.Panel1.Paint += uiSplitContainer1_Panel1_Paint;
+            // 
+            // uiSplitContainer1.Panel2
+            // 
+            uiSplitContainer1.Panel2.Controls.Add(uiGroupBoxImage);
+            uiSplitContainer1.Size = new Size(880, 684);
+            uiSplitContainer1.SplitterDistance = 374;
+            uiSplitContainer1.SplitterWidth = 11;
+            uiSplitContainer1.TabIndex = 20;
+            // 
+            // themeForm1
+            // 
+            themeForm1.BackColor = Color.FromArgb(32, 41, 50);
+            themeForm1.Controls.Add(controlBox1);
+            themeForm1.Controls.Add(uiSplitContainer1);
+            themeForm1.Dock = DockStyle.Fill;
+            themeForm1.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
+            themeForm1.Image = (Image)resources.GetObject("themeForm1.Image");
+            themeForm1.Location = new Point(0, 0);
+            themeForm1.Name = "themeForm1";
+            themeForm1.Padding = new Padding(10, 70, 10, 9);
+            themeForm1.RoundCorners = true;
+            themeForm1.Sizable = true;
+            themeForm1.Size = new Size(900, 763);
+            themeForm1.SmartBounds = true;
+            themeForm1.StartPosition = FormStartPosition.WindowsDefaultLocation;
+            themeForm1.TabIndex = 21;
+            themeForm1.Text = "杩愬姩鎺у埗璁剧疆";
+            // 
+            // controlBox1
+            // 
+            controlBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+            controlBox1.BackColor = Color.FromArgb(32, 34, 37);
+            controlBox1.CloseHoverColor = Color.FromArgb(230, 17, 35);
+            controlBox1.DefaultLocation = true;
+            controlBox1.EnableHoverHighlight = true;
+            controlBox1.EnableMaximizeButton = true;
+            controlBox1.EnableMinimizeButton = true;
+            controlBox1.ForeColor = Color.FromArgb(155, 155, 155);
+            controlBox1.Location = new Point(800, 18);
+            controlBox1.MaximizeHoverColor = Color.FromArgb(74, 74, 74);
+            controlBox1.MinimizeHoverColor = Color.FromArgb(63, 63, 65);
+            controlBox1.Name = "controlBox1";
+            controlBox1.Size = new Size(90, 25);
+            controlBox1.TabIndex = 21;
+            controlBox1.Text = "controlBox1";
+            // 
+            // MotionControlForm
+            // 
+            AutoScaleMode = AutoScaleMode.None;
+            AutoSize = true;
+            ClientSize = new Size(900, 763);
+            Controls.Add(themeForm1);
+            FormBorderStyle = FormBorderStyle.None;
+            MinimumSize = new Size(261, 61);
+            Name = "MotionControlForm";
+            Text = "杩愬姩鎺у埗璁剧疆";
+            TransparencyKey = Color.Fuchsia;
+            uiGroupBoxMotionControl.ResumeLayout(false);
+            tableLayoutPanel3.ResumeLayout(false);
+            tableLayoutPanel6.ResumeLayout(false);
+            tableLayoutPanel5.ResumeLayout(false);
+            tableLayoutPanel4.ResumeLayout(false);
+            tableLayoutPanel4.PerformLayout();
+            tableLayoutPanel2.ResumeLayout(false);
+            groupBoxPitchAnglePosition.ResumeLayout(false);
+            groupBoxPitchAnglePosition.PerformLayout();
+            groupBoxZPosition.ResumeLayout(false);
+            groupBoxZPosition.PerformLayout();
+            groupBoxYPosition.ResumeLayout(false);
+            groupBoxYPosition.PerformLayout();
+            groupBoxXPosition.ResumeLayout(false);
+            groupBoxXPosition.PerformLayout();
+            tableLayoutPanel1.ResumeLayout(false);
+            tableLayoutPanel1.PerformLayout();
+            tableLayoutPanel7.ResumeLayout(false);
+            tableLayoutPanel7.PerformLayout();
+            uiSplitContainer1.Panel1.ResumeLayout(false);
+            uiSplitContainer1.Panel2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)uiSplitContainer1).EndInit();
+            uiSplitContainer1.ResumeLayout(false);
+            themeForm1.ResumeLayout(false);
+            ResumeLayout(false);
+        }
+
+        #endregion
+        private GroupBox uiGroupBoxImage;
+        private GroupBox uiGroupBoxMotionControl;
+        private SplitContainer uiSplitContainer1;
+        private TableLayoutPanel tableLayoutPanel7;
+        private Label uiMarkLabel5;
+        private TextBox uiTextBoxPitchAngle;
+
+        private ReaLTaiizor.Forms.ThemeForm themeForm1;
+        private ReaLTaiizor.Controls.ControlBox controlBox1;
+        private TableLayoutPanel tableLayoutPanel3;
+        private TableLayoutPanel tableLayoutPanel2;
+        private Button uiButtonIncreasePitchAngle;
+        private GroupBox groupBoxPitchAnglePosition;
+        private TextBox textBoxPitchAnglePosition;
+        private Button uiButtonDecreasePitchAngle;
+        private GroupBox groupBoxZPosition;
+        private TextBox textBoxZPosition;
+        private GroupBox groupBoxYPosition;
+        private TextBox textBoxYPosition;
+        private Button uiButtonIncreaseZ;
+        private Button uiButtonDecreaseZ;
+        private Button uiButtonIncreaseY;
+        private Button uiButtonDecreaseY;
+        private Button uiButtonIncreaseX;
+        private Button uiButtonDecreaseX;
+        private GroupBox groupBoxXPosition;
+        private TextBox textBoxXPosition;
+        private TableLayoutPanel tableLayoutPanel4;
+        private Label labelPointSpeed;
+        private TextBox textBoxAngleNow;
+        private Label labelAngleNow;
+        private TextBox textBoxPositionNow;
+        private Label labelPositionNow;
+        private TextBox textBoxAngSpeed;
+        private Label labelAngSpeed;
+        private TextBox textBoxPointSpeed;
+        private TableLayoutPanel tableLayoutPanel6;
+        private Button uiButtonHardGrabWithPLC;
+        private TableLayoutPanel tableLayoutPanel5;
+        private Button uiButtonGrabOnce;
+        private TableLayoutPanel tableLayoutPanel1;
+        private TextBox textBox1;
+        private Label uiMarkLabelSN;
+        private Button uiButtonCloseSoftGrab;
+        private Label uiMarkLabelName;
+        private TextBox textBox2;
+    }
+}
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs
new file mode 100644
index 0000000..7440df4
--- /dev/null
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.cs
@@ -0,0 +1,369 @@
+锘縰sing LB_VisionControl;
+using LB_VisionProcesses.Cameras;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Forms;
+using static ZXing.QrCode.Internal.Mode;
+
+namespace LB_SmartVision.Forms.Pages.MotionControlPage
+{
+    public partial class MotionControlForm : Form
+    {
+        BaseCamera camera { get; set; }
+        UserPictureBox onlinePictureBox { get; set; }
+        public MotionControlForm()
+        {
+            InitializeComponent();
+        }
+
+        public MotionControlForm(BaseCamera camera)
+        {
+            InitializeComponent();
+
+            if (camera == null)
+                return;
+
+            this.camera = camera;
+            this.Text = camera.SN;
+            textBox1.Text = camera.SN;
+
+            onlinePictureBox = new UserPictureBox(uiGroupBoxImage);
+            this.uiGroupBoxImage.Controls.Clear();
+            this.uiGroupBoxImage.Controls.Add(onlinePictureBox);
+            onlinePictureBox.Dock = DockStyle.Fill;
+
+            //鍔犺浇鍥炶皟鍑芥暟
+            Subscribe();
+        }
+
+        private void CameraForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (camera == null)
+                return;
+
+            camera.StopGrabbing();
+
+            camera.StartGrabbing();
+
+            Unsubscribe();
+        }
+
+        public void Unsubscribe()
+        {
+            try
+            {
+                if (camera == null)
+                    return;
+                //鍙栨秷鍥炶皟鍑芥暟
+                camera.ImageGrabbed -= GetImageBllComplete;
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閿欒淇℃伅
+                Debug.WriteLine($"閿欒: {ex.Message}");
+            }
+
+        }
+
+        public void Subscribe()
+        {
+            try
+            {
+                if (camera == null)
+                    return;
+
+                //鍙栨秷鍥炶皟鍑芥暟
+                camera.ImageGrabbed -= GetImageBllComplete;
+                //鍔犺浇鍥炶皟鍑芥暟
+                camera.ImageGrabbed += GetImageBllComplete;
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閿欒淇℃伅
+                Debug.WriteLine($"閿欒: {ex.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 鐩告満鍥炶皟杩愯
+        /// </summary>
+        /// <param name="CCDName"></param>
+        /// <param name="image"></param>
+        private void GetImageBllComplete(object sender, CameraEventArgs e)
+        {
+            if (e.Bitmap == null)
+                return;
+
+            lock (e.Bitmap)
+            {
+                if (this.InvokeRequired) // 妫�鏌ユ槸鍚﹂渶瑕佸湪UI绾跨▼涓婅皟鐢�
+                {
+                    this.Invoke(new Action(() =>
+                    {
+                        onlinePictureBox.Image = e.Bitmap;
+                    })); // 閫掑綊璋冪敤鑷韩锛屼絾杩欐鍦║I绾跨▼涓�
+                }
+                else
+                {
+                    onlinePictureBox.Image = e.Bitmap;
+                }
+            }
+        }
+
+        private void uiButtonGrabOnce_Click(object sender, EventArgs e)
+        {
+            if (camera == null)
+                return;
+
+            Task.Factory.StartNew(() =>
+            {
+                camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
+                DateTime startTime = DateTime.Now; // 褰撳墠鏃堕棿
+                camera.GetImageWithSoftTrigger(out Bitmap bitmap);
+            });
+        }
+
+        private void uiButtonCloseSoftGrab_Click(object sender, EventArgs e)
+        {
+            if (camera == null)
+                return;
+
+            Task.Factory.StartNew(() =>
+            {
+                camera.StopGrabbing();
+                camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
+                camera.StartGrabbing();
+            });
+        }
+
+        private void uiButtonHardGrabWithPLC_Click(object sender, EventArgs e)
+        {
+            if (camera == null)
+                return;
+
+            Task.Factory.StartNew(() =>
+            {
+                camera.SetTriggerMode(TriggerMode.On, TriggerSource.Line0);
+                camera.StopGrabbing();
+                camera.StartWith_HardTriggerModel();
+            });
+        }
+
+        private void uiButtonDecreaseX_Click(object sender, EventArgs e)
+        {
+            float xPosition = 0;
+            xPosition = float.Parse(textBoxXPosition.Text);
+            MovePosition(-xPosition, 0, 0, 0);
+            PositionNow();
+        }
+
+        private void uiButtonIncreaseX_Click(object sender, EventArgs e)
+        {
+            float xPosition = 0;
+            xPosition = float.Parse(textBoxXPosition.Text);
+            MovePosition(xPosition, 0, 0, 0);
+            PositionNow();
+        }
+
+        private void uiButtonDecreaseY_Click(object sender, EventArgs e)
+        {
+            float yPosition = 0;
+            yPosition = float.Parse(textBoxYPosition.Text);
+            MovePosition(0, -yPosition, 0, 0);
+            PositionNow();
+        }
+
+        private void uiButtonIncreaseY_Click(object sender, EventArgs e)
+        {
+            float yPosition = 0;
+            yPosition = float.Parse(textBoxYPosition.Text);
+            MovePosition(0, yPosition, 0, 0);
+            PositionNow();
+        }
+
+        private void uiButtonDecreaseZ_Click(object sender, EventArgs e)
+        {
+            float zPosition = 0;
+            zPosition = float.Parse(textBoxZPosition.Text);
+            MovePosition(0, 0, -zPosition, 0);
+            PositionNow();
+        }
+
+        private void uiButtonIncreaseZ_Click(object sender, EventArgs e)
+        {
+            float zPosition = 0;
+            zPosition = float.Parse(textBoxZPosition.Text);
+            MovePosition(0, 0, zPosition, 0);
+            PositionNow();
+        }
+
+        private void uiButtonDecreasePitchAngle_Click(object sender, EventArgs e)
+        {
+            float pitchanglePosition = 0;
+            pitchanglePosition = float.Parse(textBoxPitchAnglePosition.Text);
+            MovePosition(0, 0, 0, -pitchanglePosition);
+            AngNow();
+        }
+
+        private void uiButtonIncreasePitchAngle_Click(object sender, EventArgs e)
+        {
+            float pitchanglePosition = 0;
+            pitchanglePosition = float.Parse(textBoxPitchAnglePosition.Text);
+            MovePosition(0, 0, 0, pitchanglePosition);
+            AngNow();
+        }
+
+        public float XPositionDt;
+        public float YPositionDt;
+        public float ZPositionDt;
+        public float AnglePositionDt;
+        public void MovePosition(float fDeltaX, float fDeltaY, float fDeltaZ, float fDeltAngle)
+        {
+            XPositionDt += fDeltaX;
+            YPositionDt += fDeltaY;
+            ZPositionDt += fDeltaZ;
+            AnglePositionDt += fDeltAngle;
+        }
+
+        private void textBoxPointSpeed_TextChanged(object sender, EventArgs e)
+        {
+            float pointspeed = 0;
+            pointspeed = float.Parse(textBoxPointSpeed.Text);
+        }
+
+        private void textBoxAngSpeed_TextChanged(object sender, EventArgs e)
+        {
+            float angspeed = 0;
+            angspeed = float.Parse(textBoxAngSpeed.Text);
+        }
+
+        private void textBoxPositionNow_TextChanged(object sender, EventArgs e)
+        {
+            textBoxPositionNow.Enabled = false;
+
+            string x;
+            string y;
+            string z;
+            x = Convert.ToString(Math.Round(XPositionDt, 3));
+            y = Convert.ToString(Math.Round(YPositionDt, 3));
+            z = Convert.ToString(Math.Round(ZPositionDt, 3));
+
+            textBoxPositionNow.Text = "(" + x + "," + y + "," + z + ")";
+        }
+
+        private void textBoxAngleNow_TextChanged(object sender, EventArgs e)
+        {
+            textBoxAngleNow.Enabled = false;
+
+            string ang;
+            ang = Convert.ToString(Math.Round(AnglePositionDt, 3));
+
+            textBoxAngleNow.Text = ang;
+        }
+
+        private void PositionNow()
+        {
+            string x;
+            string y;
+            string z;
+            x = Convert.ToString(Math.Round(XPositionDt, 3));
+            y = Convert.ToString(Math.Round(YPositionDt, 3));
+            z = Convert.ToString(Math.Round(ZPositionDt, 3));
+
+            textBoxPositionNow.Text = "(" + x + y + z + ")";
+        }
+        private void AngNow()
+        {
+            string ang;
+            ang = Convert.ToString(Math.Round(AnglePositionDt, 3));
+
+            textBoxAngleNow.Text = "(" + ang + ")";
+        }
+
+        private void uiGroupBoxMotionControl_Enter(object sender, EventArgs e)
+        {
+
+        }
+
+        private void label1_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void tableLayoutPanel3_Paint(object sender, PaintEventArgs e)
+        {
+
+        }
+
+        private void uiSplitContainer1_Panel1_Paint(object sender, PaintEventArgs e)
+        {
+
+        }
+
+        // 浣跨敤KeyDown浜嬩欢鏇撮�傚悎澶勭悊鍥炶溅閿�
+        private void textBoxXPosition_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode == Keys.Enter)
+            {
+                //// 楠岃瘉杈撳叆
+                //if (ValidateXPosition())
+                //{
+                //    // 鎵ц纭鎿嶄綔
+                //    ProcessXPosition();
+                //}
+
+                // 闃绘绯荤粺澹伴煶骞惰鏂囨湰妗嗗け鍘荤劍鐐�
+                e.SuppressKeyPress = true;
+                e.Handled = true;
+
+                this.ActiveControl = null;
+            }
+        }
+
+        // 浣跨敤KeyPress楠岃瘉瀹炴椂杈撳叆
+        private void textBoxXPosition_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            // 鍏佽鍥炶溅閿紙铏界劧KeyDown浼氬鐞嗗畠锛�
+            if (e.KeyChar == (char)Keys.Enter)
+                return;
+
+            // 鍏佽閫�鏍奸敭
+            if (e.KeyChar == (char)Keys.Back)
+                return;
+
+            // 鍙厑璁告暟瀛�
+            if (!char.IsDigit(e.KeyChar))
+            {
+                e.Handled = true;  // 闃绘杈撳叆
+            }
+        }
+
+        // 楠岃瘉鏂规硶
+        private bool ValidateXPosition()
+        {
+            if (string.IsNullOrWhiteSpace(textBoxXPosition.Text))
+                return false;
+
+            return Regex.IsMatch(textBoxXPosition.Text, @"^\d+$");
+        }
+
+        // 澶勭悊纭鐨勬柟娉�
+        private void ProcessXPosition()
+        {
+            if (int.TryParse(textBoxXPosition.Text, out int xPosition))
+            {
+                // 鎵ц閫昏緫
+                //LogInfo?.Invoke($"X浣嶇疆宸叉洿鏂颁负: {xPosition}", LogInfoType.INFO);
+            }
+        }
+    }
+}
diff --git a/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx
new file mode 100644
index 0000000..8a03745
--- /dev/null
+++ b/LB_SmartVision/Forms/Pages/MotionControlPage/MotionControlForm.resx
@@ -0,0 +1,286 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="themeForm1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+        OfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMc
+        eppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49
+        zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m
+        0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2
+        AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOn
+        OfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMc
+        eppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49
+        zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m
+        0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2
+        AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOn
+        OfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMc
+        eppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49
+        zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m
+        0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2
+        AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOn
+        OfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMc
+        eppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m0NOcDcAxeppDT3PoaQ49
+        zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M2AMfoaQ49zaGnOfQ0h57m
+        0NOcDcAxeppDT3PoaQ49zaGnOfQ0ZwNwjJ7m0NMceppDT3PoaQ49zdkAHKOnOfQ0h57m0NMceppDT3M+
+        +LUf/Tjtn775tbRv/+XX037pMx+mfSnuX/7qG2n/+Xd/kvbVL3yUtgE4Rk9z6GkOPc2hpzn0NIee5mwA
+        jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+        6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+        NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+        Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+        pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+        jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+        6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+        NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+        Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+        pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+        jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+        6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+        NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+        Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+        pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+        jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+        6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+        NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+        Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+        pzkbgGP0NIee5tDTHHqaQ09z6GnOB1/+3CfT+J6cr3y+7bv/899z6Muf+yiNc8j5lc9+mLYBOEZPc+jR
+        PEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqa
+        swE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8
+        Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqz
+        AThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxG
+        T3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMB
+        OEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZP
+        cziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4
+        Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9z
+        OIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThG
+        T3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4
+        hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZP
+        c+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziH
+        HHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z
+        6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIcc
+        epqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po
+        0TxGT3M4hxx6mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6
+        mrMBOEZPc+jRPEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mrMBOEZPc+jR
+        PEZPcziHHHqaswE4Rk9z6NE8Rk9zOIccepqzAThGT3Po0TxGT3M4hxx6mvPB7/78j6T93i9+Lu23fuYz
+        aV/9wsdpv/r5j9J+52c/m/brP/3pObQBOEZPc+hpDj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R
+        0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3N
+        oUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6mkNPc+jRPLYBOEZPc+hpDj3Noac59Gge2wAco6c5
+        9DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP
+        5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6mkNPc+jRPLYBOEZPc+hp
+        Dj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1j
+        G4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6
+        mkNPc+jRPLYBOEZPc+hpDj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYA
+        x+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSH
+        nubQo3lsA3CMnubQ0xx6mkNPc+jRPLYBOEZPc+hpDj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R
+        0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3N
+        oUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6mkNPc+jRPLYBOEZPc+hpDj3Noac59Gge2wAco6c5
+        9DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP
+        5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6mkNPc+jRPLYBOEZPc+hp
+        Dj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYAx+hpDj3Noac59DSHHs1j
+        G4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSHnubQo3lsA3CMnubQ0xx6
+        mkNPc+jRPLYBOEZPc+hpDj3Noac59Gge2wAco6c59DSHnubQ0xx6NI9tAI7R0xx6mkNPc+hpDj2axzYA
+        x+hpDj3Noac59DSHHs1jG4Bj9DSHnubQ0xx6mkOP5rENwDF6mkNPc+hpDj3NoUfz2AbgGD3Noac59DSH
+        nubQo3nqpz/9/zfth9fZ0q70AAAAAElFTkSuQmCC
+</value>
+  </data>
+</root>
\ No newline at end of file

--
Gitblit v1.9.3