Files
ClientServerProject/HslCommunicationNetTestTool/Form1.cs

171 lines
5.7 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Newtonsoft.Json.Linq;
using HslCommunication;
namespace HslCommunicationNetTestTool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Tag is HslCommunication.Enthernet.NetSimplifyClient client)
{
CurrentClient = client;
label7.Text = "选择连接:" + treeView1.SelectedNode.Text;
}
}
private HslCommunication.Enthernet.NetSimplifyClient CurrentClient { get; set; }
private List<ClassNetSettings> List { get; set; }
private void Form1_Load(object sender, EventArgs e)
{
// 加载配置,如果存在的话
string saveStr = Settings1.Default.Connects;
if (!string.IsNullOrEmpty(saveStr))
{
ClassNetSettings[] settings = JArray.Parse(saveStr).ToObject<ClassNetSettings[]>();
TreeNode root = treeView1.Nodes[0];
foreach (var m in settings)
{
string name = $"{m.IpAddress} [{m.IpPort}]";
TreeNode node = new TreeNode(name);
node.Tag = new HslCommunication.Enthernet.NetSimplifyClient(
new System.Net.IPEndPoint(System.Net.IPAddress.Parse(m.IpAddress),
int.Parse(m.IpPort)))
{
ConnectTimeout = int.Parse(m.TimeOut),
KeyToken = new Guid(m.Token),
};
node.ToolTipText = m.Guid;
root.Nodes.Add(node);
}
root.Expand();
List = new List<ClassNetSettings>(settings);
}
if (List == null) List = new List<ClassNetSettings>();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Settings1.Default.Connects = JArray.FromObject(List).ToString();
Settings1.Default.Save();
}
private void userButton1_Click(object sender, EventArgs e)
{
if (treeView1.Nodes[0].IsSelected)
{
// 新增端口操作
using (FormCreateClient form = new FormCreateClient())
{
if (form.ShowDialog() == DialogResult.OK)
{
HslCommunication.Enthernet.NetSimplifyClient client = form.Client;
ClassNetSettings setting = new ClassNetSettings()
{
Guid = Guid.NewGuid().ToString(),
IpAddress = form.IpAddress,
IpPort = form.Port,
Token = form.Token,
TimeOut = form.ConnectTimeout,
};
string name = $"{form.IpAddress} [{form.Port}]";
TreeNode node = new TreeNode(name);
node.Tag = client;
treeView1.Nodes[0].Nodes.Add(node);
List.Add(setting);
}
}
}
}
private void userButton2_Click(object sender, EventArgs e)
{
// 删除端口操作
if (ReferenceEquals(treeView1.SelectedNode.Parent, treeView1.Nodes[0]))
{
if (treeView1.SelectedNode.Tag is HslCommunication.Enthernet.NetSimplifyClient client)
{
List.RemoveAll(match => match.Guid == treeView1.SelectedNode.ToolTipText);
treeView1.SelectedNode.Parent.Nodes.Remove(treeView1.SelectedNode);
}
}
}
private void userButton3_Click(object sender, EventArgs e)
{
if (CurrentClient != null)
{
try
{
NetHandle handle = 0;
if (textBox1.Text.IndexOf(".") < 0)
{
// 纯数字
handle = int.Parse(textBox1.Text);
}
else
{
string[] values = textBox1.Text.Split('.');
handle = new NetHandle(byte.Parse(values[0]), byte.Parse(values[1]), ushort.Parse(values[2]));
}
int count = int.Parse(textBox4.Text);
DateTime start = DateTime.Now;
for (int i = 0; i < count; i++)
{
OperateResultString resultString = CurrentClient.ReadFromServer(handle, textBox2.Text);
if (resultString.IsSuccess)
{
textBox3.AppendText(resultString.Content + Environment.NewLine);
}
else
{
textBox3.AppendText("读取失败:" + resultString.Message + Environment.NewLine);
}
}
label_timeSpend.Text = (DateTime.Now - start).TotalSeconds.ToString("F3");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void userButton4_Click(object sender, EventArgs e)
{
textBox3.Clear();
}
}
}