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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
+ 6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+ NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+ Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+ pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+ jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+ 6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+ NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+ Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+ pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+ jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+ 6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0
+ NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqa
+ Q09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwAjtHTHHqaQ09z6GkOPc2h
+ pzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z6GkOPc2hpzn0NIee5mwA
+ jtHTHHqaQ09z6GkOPc2hpzkbgGP0NIee5tDTHHqaQ09z6GnOBuAYPc2hpzn0NIee5tDTHHqaswE4Rk9z
+ 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
+</value>
+ </data>
+</root>
\ No newline at end of file
--
Gitblit v1.9.3