using LB_SmartVisionCommon;
|
using LB_VisionProcesses.Communicators;
|
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;
|
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;
|
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;
|
rButtonS7.Enabled = false;
|
|
if (communicator != null)
|
communicator.Disconnect();
|
|
if (rButtonUART.Checked)
|
{
|
communicator = new UARTPort();
|
|
IP = uiComboBoxPort.Text;
|
PORT = uiTextBoxPort.Text;
|
communicator.CommunicatorConnections.Add("地址", IP);
|
communicator.CommunicatorConnections.Add("端口", PORT);
|
}
|
else if (rButtonTCPServer.Checked)
|
{
|
communicator = new TCPServer();
|
|
IP = uiIPTextBox.Text;
|
PORT = uiTextBoxPort.Text;
|
communicator.CommunicatorConnections.Add("地址", IP);
|
communicator.CommunicatorConnections.Add("端口", PORT);
|
}
|
else if (rButtonTCPClient.Checked)
|
{
|
communicator = new TCPClient();
|
|
IP = uiIPTextBox.Text;
|
PORT = uiTextBoxPort.Text;
|
communicator.CommunicatorConnections.Add("地址", IP);
|
communicator.CommunicatorConnections.Add("端口", PORT);
|
}
|
else if (rButtonS7.Checked)
|
{
|
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;
|
}
|
if (communicator.Connect())
|
{
|
uiButtonCreate.Enabled = true;
|
communicator.Disconnect();
|
}
|
else
|
MessageBox.Show($"初始化通讯口失败,原因是:{communicator.Msg}", "异常");
|
}
|
|
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())
|
{
|
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;
|
|
uiLabelS7Type.Visible = false;
|
uiComboBoxS7Type.Visible = false;
|
|
|
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;
|
|
uiLabelS7Type.Visible = false;
|
uiComboBoxS7Type.Visible = false;
|
|
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;
|
|
uiLabelS7Type.Visible = false;
|
uiComboBoxS7Type.Visible = false;
|
|
}
|
}
|
|
private void rButtonS7_CheckedChanged(object sender, EventArgs e)
|
{
|
uiButtonCreate.Enabled = false;
|
if (communicator != null)
|
communicator.Disconnect();
|
|
if (rButtonS7.Checked)
|
{
|
uiLabelIP.Visible = true;
|
uiLabelIP.Text = "地址";
|
uiIPTextBox.Visible = false;
|
uiComboBoxPort.Visible = false;
|
uiTextBoxPath.Visible = true;
|
|
uiLabelPort.Visible = true;
|
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());
|
}
|
}
|
}
|
|
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;
|
}
|
|
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;
|
}
|
}
|
}
|
}
|