C3032
2026-01-16 919a8efe5f75b9d84ed79c91dfbea5263da8ce59
LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorForm.cs
@@ -44,12 +44,15 @@
            cmbIP.Enabled = false;
            txtIP.Enabled = false;
            txtPort.Enabled = false;
            cmbDataType.Enabled = false;
            lblType.Visible = false;
            lblAddress.Visible = false;
            cmbType.Visible = false;
            txtAddress.Visible = false;
            lblDataType.Visible = false;
            cmbDataType.Visible = false;
            this.Text = name;
@@ -74,6 +77,8 @@
                lblAddress.Visible = false;
                cmbType.Visible = false;
                txtAddress.Visible = false;
                lblDataType.Visible = false;
                cmbDataType.Visible = false;
                lblIP.Text = "COM口";
                lblPort.Text = "波特率";
@@ -81,7 +86,7 @@
            else if (communicator is TCPClient || communicator is TCPServer)
            {
                txtIP.Text = communicator.CommunicatorConnections["地址"]?.ToString();
                txtPort.SelectedText = communicator.CommunicatorConnections["端口"]?.ToString();
                txtPort.Text = communicator.CommunicatorConnections["端口"]?.ToString();
                txtIP.Visible = true;
                cmbIP.Visible = false;
@@ -92,6 +97,8 @@
                lblAddress.Visible = false;
                cmbType.Visible = false;
                txtAddress.Visible = false;
                lblDataType.Visible = false;
                cmbDataType.Visible = false;
                lblIP.Text = "地址";
                lblPort.Text = "端口";
@@ -111,6 +118,15 @@
                {
                    txtAddress.Text = communicator.CommunicatorConnections["变量地址"]?.ToString();
                }
                // 初始化数据类型
                cmbDataType.Items.Clear();
                cmbDataType.Items.AddRange(new string[] { "String", "Bool", "Byte", "Int", "DInt", "Real", "Double", "Word", "DWord" });
                if (communicator.CommunicatorConnections.Contains("数据类型"))
                    cmbDataType.Text = communicator.CommunicatorConnections["数据类型"].ToString();
                else
                    cmbDataType.Text = "String";
                txtIP.Visible = true;
                cmbIP.Visible = false;
                this.btnRuleSend.Visible = false;
@@ -119,6 +135,9 @@
                lblAddress.Visible = true;
                cmbType.Visible = true;
                txtAddress.Visible = true;
                lblDataType.Visible = true;
                cmbDataType.Visible = true;
                cmbDataType.Enabled = true; // 启用数据类型选择
                lblIP.Text = "IP";
                lblPort.Text = "槽";
@@ -127,6 +146,15 @@
            this.communicator = communicator;
            //加载回调函数
            Subscribe();
        }
        private void cmbDataType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (communicator != null)
            {
                communicator.CommunicatorConnections.Add("数据类型", cmbDataType.Text);
                communicatorChanged(communicator);
            }
        }
        private void CommunicatorForm_FormClosing(object sender, FormClosingEventArgs e) => Unsubscribe();
@@ -228,6 +256,24 @@
            }
        }
        private void ShowLogMsg(string msg)
        {
            // 如果当前不是 UI 线程,则通过 Invoke 将操作调度到 UI 线程
            if (this.InvokeRequired)
            {
                this.Invoke(new Action<string>((message) =>
                {
                    this.txtReceiveMsg.AppendText("[" + DateTime.Now.ToString("HH:mm:ss.fff") + "] " + message + "\r\n");
                    this.txtReceiveMsg.ScrollToCaret();
                }), msg);
            }
            else
            {
                this.txtReceiveMsg.AppendText("[" + DateTime.Now.ToString("HH:mm:ss.fff") + "] " + msg + "\r\n");
                this.txtReceiveMsg.ScrollToCaret();
            }
        }
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (communicator == null)
@@ -235,6 +281,8 @@
            if (communicator.SendMessage(txtSendMsg.Text))
                ShowSendMsg(txtSendMsg.Text);
            else
                ShowLogMsg(communicator.Msg);
        }
        private void btnRuleSend_Click(object sender, EventArgs e)
@@ -253,17 +301,15 @@
            if (communicator.SendMessage(SendMsg))
                ShowSendMsg(SendMsg);
            else
                ShowLogMsg(communicator.Msg);
        }
        private void txtAddress_TextChanged(object sender, EventArgs e)
        {
            if (communicator != null && !communicator.CommunicatorConnections.Contains("变量地址"))
            if (communicator != null)
            {
                communicator.CommunicatorConnections.Add("变量地址", txtAddress.Text);
            }
            else if (communicator != null)
            {
                communicator.CommunicatorConnections["变量地址"] = txtAddress.Text;
                communicatorChanged(communicator);
            }
        }