using LB_VisionProcesses.Communicators; using LB_VisionProcesses.Communicators.TCom; using RJCP.IO.Ports; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace LB_SmartVision.Forms.Pages.CommunicatorPage { public partial class CreateCommunicatorForm : Form { public BaseCommunicator communicator { get; set; } public bool bCreate = false; public CreateCommunicatorForm(BaseCommunicator communicator = null) { InitializeComponent(); // 禁止修改窗口大小 this.FormBorderStyle = FormBorderStyle.FixedDialog; if (communicator == null) communicator = new UARTPort(); rButtonUART.Checked = true; 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; if (communicator != null) communicator.Disconnect(); if (rButtonUART.Checked) { communicator = new UARTPort(); IP = uiComboBoxPort.Text; PORT = uiTextBoxPort.Text; } else if (rButtonTCPServer.Checked) { communicator = new TCPServer(); IP = uiIPTextBox.Text; PORT = uiTextBoxPort.Text; } else if (rButtonTCPClient.Checked) { communicator = new TCPClient(); IP = uiIPTextBox.Text; PORT = uiTextBoxPort.Text; } else if (rButtonMonitor.Checked) { communicator = new LocalMonitor(); IP = uiTextBoxPath.Text; PORT = uiTextBoxPort.Text; } else { MessageBox.Show("未选择通讯类型!", "异常"); return; } communicator.CommunicatorConnections.Add("地址", IP); communicator.CommunicatorConnections.Add("端口", PORT); if (communicator.Connect()) { uiButtonCreate.Enabled = true; communicator.Disconnect(); } else MessageBox.Show($"初始化通讯口失败,原因是:{communicator.Msg}", "异常"); } public string IP = string.Empty; public string PORT = string.Empty; private void uiButtonCreate_Click(object sender, EventArgs e) { if (communicator.Connect()) { bCreate = true; this.Close(); } else MessageBox.Show($"初始化通讯口失败,原因是:{communicator.Msg}", "异常"); } private void uiButtonCancel_Click(object sender, EventArgs e) { if (communicator != null) communicator.Disconnect(); bCreate = false; this.Close(); } private void rButtonUART_CheckedChanged(object sender, EventArgs e) { uiButtonCreate.Enabled = false; if (communicator != null) communicator.Disconnect(); if (rButtonUART.Checked) { uiLabelIP.Visible = true; uiLabelIP.Text = "COM口"; uiIPTextBox.Visible = false; uiComboBoxPort.Visible = true; uiTextBoxPath.Visible = false; uiLabelPort.Visible = true; uiLabelPort.Text = "波特率"; uiTextBoxPort.Visible = true; uiButtonCreate.Enabled = false; } } private void rButtonTCPServer_CheckedChanged(object sender, EventArgs e) { uiButtonCreate.Enabled = false; if (communicator != null) communicator.Disconnect(); if (rButtonTCPServer.Checked) { uiLabelIP.Visible = true; uiLabelIP.Text = "地址"; uiIPTextBox.Visible = true; uiComboBoxPort.Visible = false; uiTextBoxPath.Visible = false; uiLabelPort.Visible = true; uiLabelPort.Text = "端口"; uiTextBoxPort.Visible = true; uiButtonCreate.Enabled = false; } } private void rButtonTCPClient_CheckedChanged(object sender, EventArgs e) { uiButtonCreate.Enabled = false; if (communicator != null) communicator.Disconnect(); if (rButtonTCPClient.Checked) { uiLabelIP.Visible = true; uiLabelIP.Text = "地址"; uiIPTextBox.Visible = true; uiComboBoxPort.Visible = false; uiTextBoxPath.Visible = false; uiLabelPort.Visible = true; uiLabelPort.Text = "端口"; uiTextBoxPort.Visible = true; } } private void rButtonMonitor_CheckedChanged(object sender, EventArgs e) { uiButtonCreate.Enabled = false; if (communicator != null) communicator.Disconnect(); if (rButtonMonitor.Checked) { uiLabelIP.Visible = true; uiLabelIP.Text = "监控文件"; uiIPTextBox.Visible = false; uiComboBoxPort.Visible = false; uiTextBoxPath.Visible = true; uiLabelPort.Visible = true; uiLabelPort.Text = "写入文件"; uiTextBoxPort.Visible = true; } } private void uiComboBoxPort_MouseClick(object sender, MouseEventArgs e) { uiButtonCreate.Enabled = false; uiComboBoxPort.Text = string.Empty; uiComboBoxPort.Items.Clear(); //统计可用端口 SerialPortStream temp = new SerialPortStream(); string[] ArryPort = temp.GetPortNames(); for (int i = 0; i < ArryPort.Length; i++) uiComboBoxPort.Items.Add(ArryPort[i]); } private void uiTextBoxPort_TextChanged(object sender, EventArgs e) { uiButtonCreate.Enabled = false; } private void uiIPTextBox_MouseClick(object sender, MouseEventArgs e) { uiButtonCreate.Enabled = false; } } }