C3031
2026-01-05 0b617e22e15bca0b3dbaebdc55015cc2792f6840
增加S7通讯界面
已修改9个文件
759 ■■■■■ 文件已修改
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.Designer.cs 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.resx 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.Designer.cs 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.resx 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/CommunicatorForm.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/MES/LBMES.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
@@ -1,4 +1,5 @@
using 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;
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>
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 = "西门子S7";
            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;
    }
}
LB_SmartVision/Forms/Pages/CommunicatorPage/CreateCommunicatorForm.cs
@@ -1,4 +1,6 @@
using LB_VisionProcesses.Communicators;
using 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;
            }
        }
    }
}
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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
        mdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltM
        aotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1
        xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9pi
        UltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACOmdQWk9piUltMaotJbTGp
        LRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltMaotJbTGpLSa1xaS2bACO
        mdQWk9piUltMaotJbTGpLRuAYya1xaS2mNQWk9piUltMassG4JhJbTGpLSa1xaS2mNQWk9qyAThmUltM
        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>
LB_VisionProcesses/Communicators/CommunicatorForm.cs
@@ -1,4 +1,7 @@
using System;
using 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;
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();
        }
    }
}
LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
@@ -1,4 +1,6 @@
using System;
using 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 = "西门子S7")
        {
            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);
            }
        }
    }
}