From 0b617e22e15bca0b3dbaebdc55015cc2792f6840 Mon Sep 17 00:00:00 2001
From: C3031 <shitiangui@lanpucloud.cn>
Date: 星期二, 06 一月 2026 16:15:01 +0800
Subject: [PATCH] 增加S7通讯界面
---
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs | 116 ++++++--
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx | 166 ++++++++++++
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs | 144 ++++++++++-
LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs | 81 ++++++
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs | 144 +++++++++-
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs | 47 +++
LB_VisionProcesses/Communicators/MES/LBMES.cs | 16 +
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx | 24 +
LB_VisionProcesses/Communicators/CommunicatorForm.cs | 21 +
9 files changed, 692 insertions(+), 67 deletions(-)
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
index fee0cbb..e470852 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs
@@ -28,33 +28,44 @@
/// </summary>
private void InitializeComponent()
{
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CommunicatorForm));
label3 = new Label();
tableLayoutPanel1 = new TableLayoutPanel();
grpReceive = new GroupBox();
txtReceiveMsg = new TextBox();
txtSendMsg = new TextBox();
grpSetting = new GroupBox();
+ txtAddress = new TextBox();
+ cmbType = new ComboBox();
txtIP = new TextBox();
txtPort = new TextBox();
lblPort = new Label();
cmbIP = new ComboBox();
+ lblType = new Label();
+ lblAddress = new Label();
lblIP = new Label();
tableLayoutPanel2 = new TableLayoutPanel();
btnRuleSend = new Button();
btnSend = new Button();
+ themeForm_Communicator = new ReaLTaiizor.Forms.ThemeForm();
+ controlBox1 = new ReaLTaiizor.Controls.ControlBox();
+ panel_CommunicatorForm = new Panel();
tableLayoutPanel1.SuspendLayout();
grpReceive.SuspendLayout();
grpSetting.SuspendLayout();
tableLayoutPanel2.SuspendLayout();
+ themeForm_Communicator.SuspendLayout();
+ panel_CommunicatorForm.SuspendLayout();
SuspendLayout();
//
// label3
//
label3.AutoSize = true;
label3.Dock = DockStyle.Fill;
+ label3.ForeColor = Color.CornflowerBlue;
label3.Location = new Point(3, 100);
label3.Name = "label3";
- label3.Size = new Size(669, 20);
+ label3.Size = new Size(655, 20);
label3.TabIndex = 18;
label3.Text = "鍙戦�佷俊鎭�";
label3.TextAlign = ContentAlignment.BottomLeft;
@@ -69,7 +80,7 @@
tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 3);
tableLayoutPanel1.Controls.Add(label3, 0, 1);
tableLayoutPanel1.Dock = DockStyle.Fill;
- tableLayoutPanel1.Location = new Point(3, 64);
+ tableLayoutPanel1.Location = new Point(0, 0);
tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.RowCount = 5;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 100F));
@@ -77,16 +88,17 @@
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
- tableLayoutPanel1.Size = new Size(675, 334);
+ tableLayoutPanel1.Size = new Size(661, 322);
tableLayoutPanel1.TabIndex = 26;
//
// grpReceive
//
grpReceive.Controls.Add(txtReceiveMsg);
grpReceive.Dock = DockStyle.Fill;
+ grpReceive.ForeColor = Color.CornflowerBlue;
grpReceive.Location = new Point(3, 193);
grpReceive.Name = "grpReceive";
- grpReceive.Size = new Size(669, 138);
+ grpReceive.Size = new Size(655, 126);
grpReceive.TabIndex = 30;
grpReceive.TabStop = false;
grpReceive.Text = "閫氳璁板綍";
@@ -94,12 +106,12 @@
// txtReceiveMsg
//
txtReceiveMsg.Dock = DockStyle.Fill;
- txtReceiveMsg.Location = new Point(3, 19);
+ txtReceiveMsg.Location = new Point(3, 17);
txtReceiveMsg.Multiline = true;
txtReceiveMsg.Name = "txtReceiveMsg";
txtReceiveMsg.ReadOnly = true;
txtReceiveMsg.ScrollBars = ScrollBars.Both;
- txtReceiveMsg.Size = new Size(663, 116);
+ txtReceiveMsg.Size = new Size(649, 106);
txtReceiveMsg.TabIndex = 0;
//
// txtSendMsg
@@ -107,36 +119,59 @@
txtSendMsg.Dock = DockStyle.Fill;
txtSendMsg.Location = new Point(3, 123);
txtSendMsg.Name = "txtSendMsg";
- txtSendMsg.Size = new Size(669, 23);
+ txtSendMsg.Size = new Size(655, 21);
txtSendMsg.TabIndex = 29;
//
// grpSetting
//
+ grpSetting.BackColor = Color.FromArgb(32, 41, 50);
+ grpSetting.Controls.Add(txtAddress);
+ grpSetting.Controls.Add(cmbType);
grpSetting.Controls.Add(txtIP);
grpSetting.Controls.Add(txtPort);
grpSetting.Controls.Add(lblPort);
grpSetting.Controls.Add(cmbIP);
+ grpSetting.Controls.Add(lblType);
+ grpSetting.Controls.Add(lblAddress);
grpSetting.Controls.Add(lblIP);
grpSetting.Dock = DockStyle.Fill;
+ grpSetting.ForeColor = Color.CornflowerBlue;
grpSetting.Location = new Point(3, 3);
+ grpSetting.MinimumSize = new Size(261, 61);
grpSetting.Name = "grpSetting";
- grpSetting.Size = new Size(669, 94);
+ grpSetting.Size = new Size(655, 94);
grpSetting.TabIndex = 28;
grpSetting.TabStop = false;
grpSetting.Text = "閫氳閰嶇疆";
+ //
+ // txtAddress
+ //
+ txtAddress.Location = new Point(251, 60);
+ txtAddress.Name = "txtAddress";
+ txtAddress.Size = new Size(100, 21);
+ txtAddress.TabIndex = 9;
+ //
+ // cmbType
+ //
+ cmbType.DropDownStyle = ComboBoxStyle.DropDownList;
+ cmbType.FormattingEnabled = true;
+ cmbType.Location = new Point(251, 23);
+ cmbType.Name = "cmbType";
+ cmbType.Size = new Size(100, 23);
+ cmbType.TabIndex = 8;
//
// txtIP
//
txtIP.Location = new Point(79, 22);
txtIP.Name = "txtIP";
- txtIP.Size = new Size(100, 23);
+ txtIP.Size = new Size(100, 21);
txtIP.TabIndex = 7;
//
// txtPort
//
txtPort.Location = new Point(79, 60);
txtPort.Name = "txtPort";
- txtPort.Size = new Size(100, 23);
+ txtPort.Size = new Size(100, 21);
txtPort.TabIndex = 6;
//
// lblPort
@@ -144,7 +179,7 @@
lblPort.AutoSize = true;
lblPort.Location = new Point(13, 63);
lblPort.Name = "lblPort";
- lblPort.Size = new Size(32, 17);
+ lblPort.Size = new Size(31, 15);
lblPort.TabIndex = 4;
lblPort.Text = "绔彛";
//
@@ -153,15 +188,33 @@
cmbIP.FormattingEnabled = true;
cmbIP.Location = new Point(79, 21);
cmbIP.Name = "cmbIP";
- cmbIP.Size = new Size(100, 25);
+ cmbIP.Size = new Size(100, 23);
cmbIP.TabIndex = 1;
+ //
+ // lblType
+ //
+ lblType.AutoSize = true;
+ lblType.Location = new Point(205, 26);
+ lblType.Name = "lblType";
+ lblType.Size = new Size(31, 15);
+ lblType.TabIndex = 0;
+ lblType.Text = "鍨嬪彿";
+ //
+ // lblAddress
+ //
+ lblAddress.AutoSize = true;
+ lblAddress.Location = new Point(205, 63);
+ lblAddress.Name = "lblAddress";
+ lblAddress.Size = new Size(31, 15);
+ lblAddress.TabIndex = 0;
+ lblAddress.Text = "鍦板潃";
//
// lblIP
//
lblIP.AutoSize = true;
lblIP.Location = new Point(13, 26);
lblIP.Name = "lblIP";
- lblIP.Size = new Size(32, 17);
+ lblIP.Size = new Size(31, 15);
lblIP.TabIndex = 0;
lblIP.Text = "鍦板潃";
//
@@ -178,12 +231,13 @@
tableLayoutPanel2.Name = "tableLayoutPanel2";
tableLayoutPanel2.RowCount = 1;
tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
- tableLayoutPanel2.Size = new Size(669, 34);
+ tableLayoutPanel2.Size = new Size(655, 34);
tableLayoutPanel2.TabIndex = 27;
//
// btnRuleSend
//
btnRuleSend.Dock = DockStyle.Fill;
+ btnRuleSend.ForeColor = Color.CornflowerBlue;
btnRuleSend.Location = new Point(83, 3);
btnRuleSend.Name = "btnRuleSend";
btnRuleSend.Size = new Size(74, 28);
@@ -195,6 +249,7 @@
// btnSend
//
btnSend.Dock = DockStyle.Fill;
+ btnSend.ForeColor = Color.CornflowerBlue;
btnSend.Location = new Point(3, 3);
btnSend.Name = "btnSend";
btnSend.Size = new Size(74, 28);
@@ -203,13 +258,63 @@
btnSend.UseVisualStyleBackColor = true;
btnSend.Click += btnSend_Click;
//
+ // themeForm_Communicator
+ //
+ themeForm_Communicator.BackColor = Color.FromArgb(32, 41, 50);
+ themeForm_Communicator.Controls.Add(controlBox1);
+ themeForm_Communicator.Controls.Add(panel_CommunicatorForm);
+ themeForm_Communicator.Dock = DockStyle.Fill;
+ themeForm_Communicator.Font = new Font("Microsoft Sans Serif", 9F);
+ themeForm_Communicator.Image = (Image)resources.GetObject("themeForm_Communicator.Image");
+ themeForm_Communicator.Location = new Point(0, 0);
+ themeForm_Communicator.Name = "themeForm_Communicator";
+ themeForm_Communicator.Padding = new Padding(10, 70, 10, 9);
+ themeForm_Communicator.RoundCorners = true;
+ themeForm_Communicator.Sizable = true;
+ themeForm_Communicator.Size = new Size(681, 401);
+ themeForm_Communicator.SmartBounds = true;
+ themeForm_Communicator.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ themeForm_Communicator.TabIndex = 27;
+ themeForm_Communicator.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(581, 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 = 28;
+ controlBox1.Text = "controlBox1";
+ //
+ // panel_CommunicatorForm
+ //
+ panel_CommunicatorForm.Controls.Add(tableLayoutPanel1);
+ panel_CommunicatorForm.Dock = DockStyle.Fill;
+ panel_CommunicatorForm.Location = new Point(10, 70);
+ panel_CommunicatorForm.Name = "panel_CommunicatorForm";
+ panel_CommunicatorForm.Size = new Size(661, 322);
+ panel_CommunicatorForm.TabIndex = 27;
+ //
// CommunicatorForm
//
AutoScaleDimensions = new SizeF(96F, 96F);
AutoScaleMode = AutoScaleMode.Dpi;
ClientSize = new Size(681, 401);
- Controls.Add(tableLayoutPanel1);
+ Controls.Add(themeForm_Communicator);
+ FormBorderStyle = FormBorderStyle.None;
+ MinimumSize = new Size(261, 61);
Name = "CommunicatorForm";
+ Text = "閫氳璁剧疆";
+ TransparencyKey = Color.Fuchsia;
FormClosing += CommunicatorForm_FormClosing;
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
@@ -218,6 +323,8 @@
grpSetting.ResumeLayout(false);
grpSetting.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
+ themeForm_Communicator.ResumeLayout(false);
+ panel_CommunicatorForm.ResumeLayout(false);
ResumeLayout(false);
}
@@ -236,5 +343,12 @@
private TextBox txtReceiveMsg;
private Button btnSend;
private Button btnRuleSend;
+ private ReaLTaiizor.Forms.ThemeForm themeForm_Communicator;
+ private ReaLTaiizor.Controls.ControlBox controlBox1;
+ private Panel panel_CommunicatorForm;
+ private Label lblType;
+ private ComboBox cmbType;
+ private Label lblAddress;
+ private TextBox txtAddress;
}
}
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
index c582b42..08c07a7 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
@@ -1,4 +1,5 @@
锘縰sing LB_VisionProcesses.Communicators;
+using LB_VisionProcesses.Communicators.SiemensS7;
using LB_VisionProcesses.Communicators.TCom;
using ReaLTaiizor.Forms;
using RJCP.IO.Ports;
@@ -6,13 +7,19 @@
namespace LB_SmartVision.Forms.Pages.CommunicatorPage
{
- public partial class CommunicatorForm : MaterialForm
+ public partial class CommunicatorForm : Form
{
BaseCommunicator communicator { get; set; }
public CommunicatorForm()
{
InitializeComponent();
+ cmbType.Items.Clear();
+
+ if (communicator != null && !string.IsNullOrEmpty(communicator.CommunicatorConnections["鍨嬪彿"]?.ToString()))
+ {
+ cmbType.Items.Add(communicator.CommunicatorConnections["鍨嬪彿"]?.ToString());
+ }
}
public CommunicatorForm(BaseCommunicator communicator, string name)
@@ -24,6 +31,14 @@
cmbIP.Enabled = false;
txtIP.Enabled = false;
txtPort.Enabled = false;
+
+
+ lblType.Visible = false;
+ lblAddress.Visible = false;
+ cmbType.Visible = false;
+ txtAddress.Visible = false;
+
+
this.Text = name;
if (communicator is UARTPort)
@@ -39,28 +54,50 @@
txtIP.Visible = false;
cmbIP.Visible = true;
+ lblType.Visible = false;
+ lblAddress.Visible = false;
+ cmbType.Visible = false;
+ txtAddress.Visible = false;
+
lblIP.Text = "COM鍙�";
lblPort.Text = "娉㈢壒鐜�";
}
else if (communicator is TCPClient || communicator is TCPServer)
{
txtIP.Text = communicator.CommunicatorConnections["鍦板潃"]?.ToString();
- txtPort.Text = communicator.CommunicatorConnections["绔彛"]?.ToString();
+ txtPort.SelectedText = communicator.CommunicatorConnections["绔彛"]?.ToString();
txtIP.Visible = true;
cmbIP.Visible = false;
+
+ lblType.Visible = false;
+ lblAddress.Visible = false;
+ cmbType.Visible = false;
+ txtAddress.Visible = false;
lblIP.Text = "鍦板潃";
lblPort.Text = "绔彛";
}
- else if (communicator is LocalMonitor)
+ else if (communicator is SiemensLBS7)
{
txtIP.Text = communicator.CommunicatorConnections["鍦板潃"]?.ToString();
txtPort.Text = communicator.CommunicatorConnections["绔彛"]?.ToString();
+ cmbType.Items.Clear();
+
+ if (!string.IsNullOrEmpty(communicator.CommunicatorConnections["鍨嬪彿"]?.ToString()))
+ {
+ cmbType.Items.Add(communicator.CommunicatorConnections["鍨嬪彿"]?.ToString());
+ }
+ cmbType.Text = communicator.CommunicatorConnections["鍨嬪彿"]?.ToString();
txtIP.Visible = true;
cmbIP.Visible = false;
- lblIP.Text = "鐩戞帶鏂囦欢";
- lblPort.Text = "鍐欏叆鏂囦欢";
+ lblType.Visible = true;
+ lblAddress.Visible = true;
+ cmbType.Visible = true;
+ txtAddress.Visible = true;
+
+ lblIP.Text = "IP";
+ lblPort.Text = "妲�";
}
this.communicator = communicator;
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx
index 8b2ff64..8f8bd20 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx
@@ -117,4 +117,28 @@
<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="themeForm_Communicator.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAA+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=
+</value>
+ </data>
</root>
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs
index fc94b76..3fb0581 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs
@@ -28,6 +28,7 @@
/// </summary>
private void InitializeComponent()
{
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CreateCommunicatorForm));
uiLabelIP = new Label();
uiLabelPort = new Label();
uiButtonCancel = new Button();
@@ -40,14 +41,18 @@
uiComboBoxPort = new ComboBox();
uiIPTextBox = new TextBox();
uiTextBoxPath = new TextBox();
- rButtonMonitor = new RadioButton();
+ rButtonS7 = new RadioButton();
+ themeForm1 = new ReaLTaiizor.Forms.ThemeForm();
+ uiLabelS7Type = new Label();
+ uiComboBoxS7Type = new ComboBox();
+ themeForm1.SuspendLayout();
SuspendLayout();
//
// uiLabelIP
//
uiLabelIP.Font = new Font("瀹嬩綋", 12F);
- uiLabelIP.ForeColor = Color.FromArgb(48, 48, 48);
- uiLabelIP.Location = new Point(84, 111);
+ uiLabelIP.ForeColor = SystemColors.Control;
+ uiLabelIP.Location = new Point(84, 169);
uiLabelIP.Name = "uiLabelIP";
uiLabelIP.Size = new Size(100, 23);
uiLabelIP.TabIndex = 1;
@@ -56,8 +61,8 @@
// uiLabelPort
//
uiLabelPort.Font = new Font("瀹嬩綋", 12F);
- uiLabelPort.ForeColor = Color.FromArgb(48, 48, 48);
- uiLabelPort.Location = new Point(84, 177);
+ uiLabelPort.ForeColor = SystemColors.Control;
+ uiLabelPort.Location = new Point(84, 235);
uiLabelPort.Name = "uiLabelPort";
uiLabelPort.Size = new Size(100, 23);
uiLabelPort.TabIndex = 2;
@@ -66,7 +71,8 @@
// uiButtonCancel
//
uiButtonCancel.Font = new Font("瀹嬩綋", 12F);
- uiButtonCancel.Location = new Point(343, 234);
+ uiButtonCancel.ForeColor = SystemColors.Control;
+ uiButtonCancel.Location = new Point(343, 351);
uiButtonCancel.MinimumSize = new Size(1, 1);
uiButtonCancel.Name = "uiButtonCancel";
uiButtonCancel.Size = new Size(100, 35);
@@ -77,7 +83,7 @@
// uiTextBoxPort
//
uiTextBoxPort.Font = new Font("瀹嬩綋", 12F);
- uiTextBoxPort.Location = new Point(191, 175);
+ uiTextBoxPort.Location = new Point(191, 233);
uiTextBoxPort.Margin = new Padding(4, 5, 4, 5);
uiTextBoxPort.MinimumSize = new Size(1, 16);
uiTextBoxPort.Name = "uiTextBoxPort";
@@ -88,7 +94,8 @@
// rButtonUART
//
rButtonUART.Font = new Font("瀹嬩綋", 12F);
- rButtonUART.Location = new Point(51, 12);
+ rButtonUART.ForeColor = SystemColors.Control;
+ rButtonUART.Location = new Point(51, 71);
rButtonUART.MinimumSize = new Size(1, 1);
rButtonUART.Name = "rButtonUART";
rButtonUART.Size = new Size(150, 29);
@@ -99,7 +106,8 @@
// rButtonTCPServer
//
rButtonTCPServer.Font = new Font("瀹嬩綋", 12F);
- rButtonTCPServer.Location = new Point(51, 47);
+ rButtonTCPServer.ForeColor = SystemColors.Control;
+ rButtonTCPServer.Location = new Point(51, 106);
rButtonTCPServer.MinimumSize = new Size(1, 1);
rButtonTCPServer.Name = "rButtonTCPServer";
rButtonTCPServer.Size = new Size(150, 29);
@@ -110,7 +118,8 @@
// rButtonTCPClient
//
rButtonTCPClient.Font = new Font("瀹嬩綋", 12F);
- rButtonTCPClient.Location = new Point(293, 47);
+ rButtonTCPClient.ForeColor = SystemColors.Control;
+ rButtonTCPClient.Location = new Point(293, 106);
rButtonTCPClient.MinimumSize = new Size(1, 1);
rButtonTCPClient.Name = "rButtonTCPClient";
rButtonTCPClient.Size = new Size(150, 29);
@@ -122,7 +131,8 @@
//
uiButtonCreate.Enabled = false;
uiButtonCreate.Font = new Font("瀹嬩綋", 12F);
- uiButtonCreate.Location = new Point(191, 234);
+ uiButtonCreate.ForeColor = SystemColors.Control;
+ uiButtonCreate.Location = new Point(191, 351);
uiButtonCreate.MinimumSize = new Size(1, 1);
uiButtonCreate.Name = "uiButtonCreate";
uiButtonCreate.Size = new Size(100, 35);
@@ -133,7 +143,8 @@
// uiButtonTest
//
uiButtonTest.Font = new Font("瀹嬩綋", 12F);
- uiButtonTest.Location = new Point(31, 234);
+ uiButtonTest.ForeColor = SystemColors.Control;
+ uiButtonTest.Location = new Point(31, 351);
uiButtonTest.MinimumSize = new Size(1, 1);
uiButtonTest.Name = "uiButtonTest";
uiButtonTest.Size = new Size(100, 35);
@@ -144,7 +155,7 @@
// uiComboBoxPort
//
uiComboBoxPort.Font = new Font("瀹嬩綋", 12F);
- uiComboBoxPort.Location = new Point(191, 108);
+ uiComboBoxPort.Location = new Point(191, 167);
uiComboBoxPort.Margin = new Padding(4, 5, 4, 5);
uiComboBoxPort.MinimumSize = new Size(63, 0);
uiComboBoxPort.Name = "uiComboBoxPort";
@@ -155,7 +166,7 @@
// uiIPTextBox
//
uiIPTextBox.Font = new Font("瀹嬩綋", 12F);
- uiIPTextBox.Location = new Point(191, 108);
+ uiIPTextBox.Location = new Point(191, 168);
uiIPTextBox.Margin = new Padding(4, 5, 4, 5);
uiIPTextBox.MinimumSize = new Size(1, 1);
uiIPTextBox.Name = "uiIPTextBox";
@@ -166,31 +177,74 @@
// uiTextBoxPath
//
uiTextBoxPath.Font = new Font("瀹嬩綋", 12F);
- uiTextBoxPath.Location = new Point(191, 108);
+ uiTextBoxPath.Location = new Point(191, 168);
uiTextBoxPath.Margin = new Padding(4, 5, 4, 5);
uiTextBoxPath.MinimumSize = new Size(1, 16);
uiTextBoxPath.Name = "uiTextBoxPath";
uiTextBoxPath.Size = new Size(205, 26);
uiTextBoxPath.TabIndex = 13;
//
- // rButtonMonitor
+ // rButtonS7
//
- rButtonMonitor.Font = new Font("瀹嬩綋", 12F);
- rButtonMonitor.Location = new Point(293, 12);
- rButtonMonitor.MinimumSize = new Size(1, 1);
- rButtonMonitor.Name = "rButtonMonitor";
- rButtonMonitor.Size = new Size(150, 29);
- rButtonMonitor.TabIndex = 14;
- rButtonMonitor.Text = "鏈湴鐩戞帶";
- rButtonMonitor.CheckedChanged += rButtonMonitor_CheckedChanged;
+ rButtonS7.Font = new Font("瀹嬩綋", 12F);
+ rButtonS7.ForeColor = SystemColors.Control;
+ rButtonS7.Location = new Point(293, 71);
+ rButtonS7.MinimumSize = new Size(1, 1);
+ rButtonS7.Name = "rButtonS7";
+ rButtonS7.Size = new Size(150, 29);
+ rButtonS7.TabIndex = 14;
+ rButtonS7.Text = "瑗块棬瀛怱7";
+ rButtonS7.CheckedChanged += rButtonS7_CheckedChanged;
+ //
+ // themeForm1
+ //
+ themeForm1.BackColor = Color.FromArgb(32, 41, 50);
+ themeForm1.Controls.Add(uiLabelS7Type);
+ themeForm1.Controls.Add(uiComboBoxS7Type);
+ themeForm1.Dock = DockStyle.Fill;
+ themeForm1.Font = new Font("Microsoft Sans Serif", 9F);
+ 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(480, 413);
+ themeForm1.SmartBounds = true;
+ themeForm1.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ themeForm1.TabIndex = 15;
+ themeForm1.Text = "鍒涘缓閫氳";
+ //
+ // uiLabelS7Type
+ //
+ uiLabelS7Type.Font = new Font("瀹嬩綋", 12F);
+ uiLabelS7Type.ForeColor = SystemColors.Control;
+ uiLabelS7Type.Location = new Point(84, 302);
+ uiLabelS7Type.Name = "uiLabelS7Type";
+ uiLabelS7Type.Size = new Size(100, 23);
+ uiLabelS7Type.TabIndex = 2;
+ uiLabelS7Type.Text = "鍨嬪彿";
+ //
+ // uiComboBoxS7Type
+ //
+ uiComboBoxS7Type.DropDownStyle = ComboBoxStyle.DropDownList;
+ uiComboBoxS7Type.Font = new Font("瀹嬩綋", 12F);
+ uiComboBoxS7Type.Location = new Point(191, 299);
+ uiComboBoxS7Type.Margin = new Padding(4, 5, 4, 5);
+ uiComboBoxS7Type.MinimumSize = new Size(63, 0);
+ uiComboBoxS7Type.Name = "uiComboBoxS7Type";
+ uiComboBoxS7Type.Size = new Size(205, 24);
+ uiComboBoxS7Type.TabIndex = 11;
+ uiComboBoxS7Type.SelectedIndexChanged += uiComboBoxS7Type_SelectedIndexChanged;
+ uiComboBoxS7Type.MouseClick += uiComboBoxPort_MouseClick;
//
// CreateCommunicatorForm
//
AutoScaleDimensions = new SizeF(96F, 96F);
AutoScaleMode = AutoScaleMode.Dpi;
- ClientSize = new Size(484, 285);
+ ClientSize = new Size(480, 413);
ControlBox = false;
- Controls.Add(rButtonMonitor);
+ Controls.Add(rButtonS7);
Controls.Add(uiTextBoxPath);
Controls.Add(uiIPTextBox);
Controls.Add(uiComboBoxPort);
@@ -203,10 +257,15 @@
Controls.Add(uiButtonCancel);
Controls.Add(uiLabelPort);
Controls.Add(uiLabelIP);
+ Controls.Add(themeForm1);
+ FormBorderStyle = FormBorderStyle.None;
MaximizeBox = false;
MinimizeBox = false;
+ MinimumSize = new Size(261, 61);
Name = "CreateCommunicatorForm";
Text = "鍒涘缓閫氳";
+ TransparencyKey = Color.Fuchsia;
+ themeForm1.ResumeLayout(false);
ResumeLayout(false);
PerformLayout();
}
@@ -224,6 +283,9 @@
private ComboBox uiComboBoxPort;
private TextBox uiIPTextBox;
private TextBox uiTextBoxPath;
- private RadioButton rButtonMonitor;
+ private RadioButton rButtonS7;
+ private ReaLTaiizor.Forms.ThemeForm themeForm1;
+ private Label uiLabelS7Type;
+ private ComboBox uiComboBoxS7Type;
}
}
\ No newline at end of file
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs
index 0865a23..a9fc8ab 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs
@@ -1,4 +1,6 @@
-锘縰sing LB_VisionProcesses.Communicators;
+锘縰sing LB_SmartVisionCommon;
+using LB_VisionProcesses.Communicators;
+using LB_VisionProcesses.Communicators.SiemensS7;
using LB_VisionProcesses.Communicators.TCom;
using RJCP.IO.Ports;
using System;
@@ -30,17 +32,18 @@
communicator = new UARTPort();
rButtonUART.Checked = true;
+ uiLabelS7Type.Visible = false;
+ uiComboBoxS7Type.Visible = false;
uiButtonCreate.Enabled = false;
}
private void uiButtonTest_Click(object sender, EventArgs e)
{
uiButtonCreate.Enabled = false;
-
rButtonUART.Enabled = false;
rButtonTCPServer.Enabled = false;
rButtonTCPClient.Enabled = false;
- rButtonMonitor.Enabled = false;
+ rButtonS7.Enabled = false;
if (communicator != null)
communicator.Disconnect();
@@ -51,6 +54,8 @@
IP = uiComboBoxPort.Text;
PORT = uiTextBoxPort.Text;
+ communicator.CommunicatorConnections.Add("鍦板潃", IP);
+ communicator.CommunicatorConnections.Add("绔彛", PORT);
}
else if (rButtonTCPServer.Checked)
{
@@ -58,6 +63,8 @@
IP = uiIPTextBox.Text;
PORT = uiTextBoxPort.Text;
+ communicator.CommunicatorConnections.Add("鍦板潃", IP);
+ communicator.CommunicatorConnections.Add("绔彛", PORT);
}
else if (rButtonTCPClient.Checked)
{
@@ -65,23 +72,66 @@
IP = uiIPTextBox.Text;
PORT = uiTextBoxPort.Text;
+ communicator.CommunicatorConnections.Add("鍦板潃", IP);
+ communicator.CommunicatorConnections.Add("绔彛", PORT);
}
- else if (rButtonMonitor.Checked)
+ else if (rButtonS7.Checked)
{
- communicator = new LocalMonitor();
+ communicator = new SiemensLBS7();
IP = uiTextBoxPath.Text;
PORT = uiTextBoxPort.Text;
+ switch (uiComboBoxS7Type.Text)
+ {
+ case "S7200":
+ {
+ cpuType = S7.Net.CpuType.S7200;
+ break;
+ }
+ case "Logo0BA8":
+ {
+ cpuType = S7.Net.CpuType.Logo0BA8;
+ break;
+ }
+ case "S7200Smart":
+ {
+ cpuType = S7.Net.CpuType.S7200Smart;
+ break;
+ }
+ case "S7300":
+ {
+ cpuType = S7.Net.CpuType.S7300;
+ break;
+ }
+ case "S7400":
+ {
+ cpuType = S7.Net.CpuType.S7400;
+ break;
+ }
+ case "S71200":
+ {
+ cpuType = S7.Net.CpuType.S71200;
+ break;
+ }
+ case "S71500":
+ {
+ cpuType = S7.Net.CpuType.S71500;
+ break;
+ }
+ default:
+ cpuType = S7.Net.CpuType.S71500;
+ break;
+ }
+ communicator.CommunicatorConnections.Add("鍦板潃", IP);
+ communicator.CommunicatorConnections.Add("绔彛", PORT);
+ communicator.CommunicatorConnections.Add("鍨嬪彿", cpuType);
}
else
{
MessageBox.Show("鏈�夋嫨閫氳绫诲瀷!", "寮傚父");
return;
}
-
- communicator.CommunicatorConnections.Add("鍦板潃", IP);
- communicator.CommunicatorConnections.Add("绔彛", PORT);
- if (communicator.Connect())
+ if (!communicator.Connect())
{
uiButtonCreate.Enabled = true;
communicator.Disconnect();
@@ -92,10 +142,11 @@
public string IP = string.Empty;
public string PORT = string.Empty;
+ public S7.Net.CpuType cpuType = S7.Net.CpuType.S71500;
private void uiButtonCreate_Click(object sender, EventArgs e)
{
- if (communicator.Connect())
+ if (!communicator.Connect())
{
bCreate = true;
this.Close();
@@ -131,6 +182,10 @@
uiLabelPort.Text = "娉㈢壒鐜�";
uiTextBoxPort.Visible = true;
+ uiLabelS7Type.Visible = false;
+ uiComboBoxS7Type.Visible = false;
+
+
uiButtonCreate.Enabled = false;
}
}
@@ -153,6 +208,9 @@
uiLabelPort.Text = "绔彛";
uiTextBoxPort.Visible = true;
+ uiLabelS7Type.Visible = false;
+ uiComboBoxS7Type.Visible = false;
+
uiButtonCreate.Enabled = false;
}
}
@@ -174,26 +232,39 @@
uiLabelPort.Visible = true;
uiLabelPort.Text = "绔彛";
uiTextBoxPort.Visible = true;
+
+ uiLabelS7Type.Visible = false;
+ uiComboBoxS7Type.Visible = false;
+
}
}
- private void rButtonMonitor_CheckedChanged(object sender, EventArgs e)
+ private void rButtonS7_CheckedChanged(object sender, EventArgs e)
{
uiButtonCreate.Enabled = false;
if (communicator != null)
communicator.Disconnect();
- if (rButtonMonitor.Checked)
+ if (rButtonS7.Checked)
{
uiLabelIP.Visible = true;
- uiLabelIP.Text = "鐩戞帶鏂囦欢";
+ uiLabelIP.Text = "鍦板潃";
uiIPTextBox.Visible = false;
uiComboBoxPort.Visible = false;
uiTextBoxPath.Visible = true;
uiLabelPort.Visible = true;
- uiLabelPort.Text = "鍐欏叆鏂囦欢";
+ uiLabelPort.Text = "妲�";
uiTextBoxPort.Visible = true;
+
+ uiLabelS7Type.Visible = true;
+ uiComboBoxS7Type.Visible = true;
+ uiComboBoxS7Type.Items.Clear();
+
+ foreach (var c in Enum.GetValues(typeof(S7.Net.CpuType)))
+ {
+ uiComboBoxS7Type.Items.Add(c.ToString());
+ }
}
}
@@ -219,5 +290,50 @@
{
uiButtonCreate.Enabled = false;
}
+
+ private void uiComboBoxS7Type_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ switch (uiComboBoxS7Type.Text)
+ {
+ case "S7200":
+ {
+ cpuType = S7.Net.CpuType.S7200;
+ break;
+ }
+ case "Logo0BA8":
+ {
+ cpuType = S7.Net.CpuType.Logo0BA8;
+ break;
+ }
+ case "S7200Smart":
+ {
+ cpuType = S7.Net.CpuType.S7200Smart;
+ break;
+ }
+ case "S7300":
+ {
+ cpuType = S7.Net.CpuType.S7300;
+ break;
+ }
+ case "S7400":
+ {
+ cpuType = S7.Net.CpuType.S7400;
+ break;
+ }
+ case "S71200":
+ {
+ cpuType = S7.Net.CpuType.S71200;
+ break;
+ }
+ case "S71500":
+ {
+ cpuType = S7.Net.CpuType.S71500;
+ break;
+ }
+ default:
+ cpuType = S7.Net.CpuType.S71500;
+ break;
+ }
+ }
}
}
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx
index 8b2ff64..d7d46a5 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx
@@ -117,4 +117,170 @@
<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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
+ aotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1
+ xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9pi
+ UltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGp
+ LRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACO
+ mdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltM
+ aotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1
+ xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9pi
+ UltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGp
+ LRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACO
+ mdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltM
+ aotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1
+ xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9pi
+ UltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGp
+ LR9+/fOfSPvHP/tm2nf+/Ftpv/ypj6d9Me6f/+Lbaf/xN3+Y9pXPfZS2AThmUltMaotJbTGpLSa1xaS2
+ bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThm
+ UltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGp
+ LSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQW
+ k9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJ
+ bTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2
+ bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThm
+ UltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGp
+ LSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQW
+ k9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJ
+ bTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2
+ bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThm
+ UltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGp
+ LSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQW
+ k9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJ
+ bTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2
+ bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThm
+ UltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGp
+ LSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQW
+ k9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJ
+ bTGpLRuAYya1xaS2mNQWk9piUltMasuHL33m+9P8pJYvf7btu//z33PoS5/5KM2LaPnVT388bQNwzKS2
+ mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEt
+ JrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaY
+ pHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0m
+ tWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpik
+ ecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1
+ ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5
+ yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVl
+ A3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJ
+ pLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUD
+ cMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmk
+ tngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNw
+ zKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2
+ eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DM
+ pLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4
+ ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyk
+ tpikecmktngRLSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngR
+ LSa1ZQNwzKS2mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa1ZQNwzKS2
+ mKR5yaS2eBEtJrVlA3DMpLaYpHnJpLZ4ES0mtWUDcMyktpikecmktngRLSa15cM3fuHH0n77lz6T9rWf
+ /VTaVz73ibRf++xHaV//uU+nffVnfngObQCOmdQWk9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuA
+ Yya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9pi
+ UltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1xaS2mNQWkzQvbQCOmdQWk9piUltMaotJmpc2AMdM
+ aotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2
+ mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1xaS2mNQWkzQvbQCOmdQW
+ k9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ
+ 89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1
+ xaS2mNQWkzQvbQCOmdQWk9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikual
+ DcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJ
+ bTGpLSZpXtoAHDOpLSa1xaS2mNQWkzQvbQCOmdQWk9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuA
+ Yya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9pi
+ UltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1xaS2mNQWkzQvbQCOmdQWk9piUltMaotJmpc2AMdM
+ aotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2
+ mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1xaS2mNQWkzQvbQCOmdQW
+ k9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikualDcAxk9piUltMaotJbTFJ
+ 89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJbTGpLSZpXtoAHDOpLSa1
+ xaS2mNQWkzQvbQCOmdQWk9piUltMaotJmpc2AMdMaotJbTGpLSa1xSTNSxuAYya1xaS2mNQWk9pikual
+ DcAxk9piUltMaotJbTFJ89IG4JhJbTGpLSa1xaS2mKR5aQNwzKS2mNQWk9piUltM0ry0AThmUltMaotJ
+ bTGpLSZpXvp/N+2H12uZAHMAAAAASUVORK5CYII=
+</value>
+ </data>
</root>
\ No newline at end of file
diff --git a/LB_VisionProcesses/Communicators/CommunicatorForm.cs b/LB_VisionProcesses/Communicators/CommunicatorForm.cs
index ca5526d..c5298b1 100644
--- a/LB_VisionProcesses/Communicators/CommunicatorForm.cs
+++ b/LB_VisionProcesses/Communicators/CommunicatorForm.cs
@@ -1,4 +1,7 @@
-锘縰sing System;
+锘縰sing LB_VisionProcesses.Communicators.SiemensS7;
+using LB_VisionProcesses.Communicators.TCom;
+using RJCP.IO.Ports;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
@@ -11,8 +14,6 @@
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-using LB_VisionProcesses.Communicators.TCom;
-using RJCP.IO.Ports;
namespace LB_VisionProcesses.Communicators
{
@@ -135,6 +136,20 @@
txtIP.Text = communicator.CommunicatorConnections["鍦板潃"].ToString();
txtPort.Text = communicator.CommunicatorConnections["绔彛"].ToString();
}
+ else if (communicator is SiemensLBS7)
+ {
+ btnSend.Enabled = communicator.bConnected;
+ btnRuleSend.Enabled = communicator.bConnected;
+
+ cmbIP.Visible = false;
+ txtIP.Visible = true;
+
+ lblIP.Text = "IP";
+ lblIP.Text = "妲�";
+
+ txtIP.Text = communicator.CommunicatorConnections["鍦板潃"].ToString();
+ txtPort.Text = communicator.CommunicatorConnections["妲�"].ToString();
+ }
else
{
btnSend.Enabled = communicator.bConnected;
diff --git a/LB_VisionProcesses/Communicators/MES/LBMES.cs b/LB_VisionProcesses/Communicators/MES/LBMES.cs
index 87d0086..597c605 100644
--- a/LB_VisionProcesses/Communicators/MES/LBMES.cs
+++ b/LB_VisionProcesses/Communicators/MES/LBMES.cs
@@ -6,7 +6,21 @@
namespace LB_VisionProcesses.Communicators.MES
{
- internal class LBMES
+ internal class LBMES : BaseCommunicator
{
+ public override bool Connect()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override bool Disconnect()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override bool SendMessage(string message)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs b/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
index f9fac67..b82d523 100644
--- a/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
+++ b/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘縰sing LB_SmartVisionCommon;
+using S7.Net;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -6,7 +8,82 @@
namespace LB_VisionProcesses.Communicators.SiemensS7
{
- internal class SiemensLBS7
+ public class SiemensLBS7 : BaseCommunicator
{
+ private Plc plc;
+ public string variable = string.Empty;
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="name"></param>
+ public SiemensLBS7(string name = "瑗块棬瀛怱7")
+ {
+ CommunicatorConnections.Add("鍦板潃", "127.0.0.1");
+ CommunicatorConnections.Add("绔彛", "1");
+ CommunicatorConnections.Add("鍨嬪彿", S7.Net.CpuType.S71500);
+ CommunicatorBrand = CommunicatorBrand.SiemensS7;
+ CommunicatorName = name;
+ }
+ public override bool Connect()
+ {
+ try
+ {
+ string IP = CommunicatorConnections["鍦板潃"].ToString();
+ short slot;
+ short.TryParse(CommunicatorConnections["绔彛"].ToString(), out slot);
+ S7.Net.CpuType cpuType = (CpuType)CommunicatorConnections["鍨嬪彿"];
+ plc = new Plc(cpuType, IP, 0, slot);
+ plc.Open();
+ return true;
+
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override bool Disconnect()
+ {
+ try
+ {
+ plc?.Close();
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override bool SendMessage(string message)
+ {
+ try
+ {
+ plc.Write(variable, message);
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override void Dispose()
+ {
+ try
+ {
+ AsyncLogHelper.Info($"Device:[{CommunicatorName}],Dispose()");
+
+ plc = null;
+
+ // Suppress finalization.
+ GC.SuppressFinalize(this);
+ }
+ catch (Exception ex)
+ {
+ AsyncLogHelper.Error($"Device:[{CommunicatorName}],Dispose(),Error" + ex);
+ }
+ }
}
}
--
Gitblit v1.9.3