1
0
mirror of https://github.com/zhaopeiym/IoTClient synced 2025-10-19 22:14:31 +08:00
IoTClient/IoTClient.Tool/Controls/OtherControl.cs
2020-01-06 08:53:40 +08:00

184 lines
6.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using IoTClient.Common.Helpers;
using System;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
namespace IoTClient.Tool.Controls
{
public partial class OtherControl : UserControl
{
private Socket socketTcp;
private UdpClient udpClient;
public OtherControl()
{
InitializeComponent();
but_tcpclose.Enabled = false;
but_tcpsend.Enabled = false;
but_udpclose.Enabled = false;
but_udpsend.Enabled = false;
}
private void but_crc16calculate_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txt_crcstr.Text) || txt_crcstr.Text.Trim().Replace(" ", "").Length % 2 != 0)
{
MessageBox.Show("请传入有效的参数");
return;
}
var byteArry = DataConvert.StringToByteArray(txt_crcstr.Text?.Trim(), false);
var crc16 = CRC16.GetCRC16(byteArry);
AppendText($"CRC16计算结果{DataConvert.ByteArrayToString(crc16)}");
}
private void AppendText(string content)
{
txt_content.Invoke((Action)(() =>
{
txt_content.AppendText($"[{DateTime.Now.ToLongTimeString()}]{content}\r\n");
}));
}
private void but_crc16validation_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txt_crcstr.Text) || txt_crcstr.Text.Trim().Replace(" ", "").Length % 2 != 0)
{
MessageBox.Show("请传入有效的参数");
return;
}
var byteArry = DataConvert.StringToByteArray(txt_crcstr.Text?.Trim(), false);
var checkCrc16 = CRC16.CheckCRC16(byteArry);
AppendText($"CRC16验证结果{txt_crcstr.Text} {checkCrc16}");
}
private void label2_Click(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void but_tcpOpen_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txt_tcpip.Text) || string.IsNullOrWhiteSpace(txt_tcpport.Text))
{
MessageBox.Show("请传入有效的IP和端口");
return;
}
socketTcp?.Close();
socketTcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socketTcp.SendTimeout = 1000 * 2;
socketTcp.ReceiveTimeout = 1000 * 2;
socketTcp.Connect(new IPEndPoint(IPAddress.Parse(txt_tcpip.Text?.Trim()), int.Parse(txt_tcpport.Text?.Trim())));
AppendText("打开连接成功");
but_tcpopen.Enabled = false;
but_tcpclose.Enabled = true;
but_tcpsend.Enabled = true;
}
catch (Exception ex)
{
}
}
private void but_tcpClose_Click(object sender, EventArgs e)
{
socketTcp?.Close();
AppendText("关闭连接成功");
but_tcpopen.Enabled = true;
}
private void but_tcpSend_Click(object sender, EventArgs e)
{
try
{
var command = DataConvert.StringToByteArray(txt_tcpmsg.Text, false);
socketTcp.Send(command);
var msg = SocketRead(socketTcp, 4096);
AppendText(msg.ByteArrayToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//重新连接
socketTcp?.Close();
socketTcp.Connect(new IPEndPoint(IPAddress.Parse(txt_tcpip.Text?.Trim()), int.Parse(txt_tcpport.Text?.Trim())));
}
}
protected byte[] SocketRead(Socket socket, int receiveCount)
{
byte[] receiveBytes = new byte[receiveCount];
int receiveFinish = 0;
var readLeng = socket.Receive(receiveBytes, receiveFinish, receiveCount, SocketFlags.None);
if (readLeng == 0)
{
if (socket.Connected) socket.Shutdown(SocketShutdown.Both);
socket.Close();
throw new Exception("连接已断开");
}
return receiveBytes.Take(readLeng).ToArray();
}
private void but_udpOpen_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txt_tcpip.Text) || string.IsNullOrWhiteSpace(txt_tcpport.Text))
{
MessageBox.Show("请传入有效的IP和端口");
return;
}
try
{
udpClient = new UdpClient();
udpClient.Connect(new IPEndPoint(IPAddress.Parse(txt_udpip.Text?.Trim()), int.Parse(txt_udpport.Text?.Trim())));
AppendText("打开连接成功");
but_udpopen.Enabled = false;
but_udpclose.Enabled = true;
but_udpsend.Enabled = true;
}
catch (Exception ex)
{
AppendText("打开连接失败" + ex.Message);
}
}
private void but_udpSend_Click(object sender, EventArgs e)
{
try
{
var command = DataConvert.StringToByteArray(txt_udpmsg.Text, false);
udpClient.Send(command, command.Length);
var ep = new IPEndPoint(IPAddress.Any, 0);
var msg = udpClient.Receive(ref ep);
AppendText(msg.ByteArrayToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
udpClient?.Close();
udpClient.Connect(new IPEndPoint(IPAddress.Parse(txt_udpip.Text?.Trim()), int.Parse(txt_udpport.Text?.Trim())));
}
}
private void but_udpClose_Click(object sender, EventArgs e)
{
udpClient?.Close();
AppendText("关闭连接成功");
but_udpopen.Enabled = true;
but_udpclose.Enabled = false;
but_udpsend.Enabled = false;
}
}
}