|
@@ -0,0 +1,540 @@
|
|
|
+using DWZB_Agv_Agreement.Agv_Agreement;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
+using System.Data;
|
|
|
+using System.Drawing;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Text.RegularExpressions;
|
|
|
+using System.Threading;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using System.Windows.Forms;
|
|
|
+
|
|
|
+namespace DWZB_Agv_Agreement
|
|
|
+{
|
|
|
+ public partial class Form1 : Form
|
|
|
+ {
|
|
|
+ public Form1()
|
|
|
+ {
|
|
|
+ InitializeComponent();
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// Socket服务端
|
|
|
+ /// </summary>
|
|
|
+ private readonly SocketServerHelper socketServerMd = new SocketServerHelper();
|
|
|
+ /// <summary>
|
|
|
+ /// 日志头部
|
|
|
+ /// </summary>
|
|
|
+ private readonly string LogHeadText = "设备实时运行Log界面 ==>> ";
|
|
|
+ #region 日志显示
|
|
|
+ private void ShowLogToFrmRichTextBox(object sender, ShowLogToFrmEventArgs e)
|
|
|
+ {
|
|
|
+ Invoke(new Action(() =>
|
|
|
+ {
|
|
|
+ richTextBox1.AppendText($"发生时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} | {e.ShowMsg}\r\n");
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ private void ShowLog(string msg, bool isShowLogToFrm, LogTypeEnum logTypeEnum)
|
|
|
+ {
|
|
|
+ if (isShowLogToFrm)
|
|
|
+ {
|
|
|
+ ShowLogToFrmRichTextBox(this, new ShowLogToFrmEventArgs(LogHeadText + msg));
|
|
|
+ }
|
|
|
+ LogHelper.WriteLog(LogHeadText + msg, logTypeEnum);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ private void Button1_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ socketServerMd.MessageEvent += new GetMessageEventHandler(Socket_MessageEvent);
|
|
|
+ socketServerMd.AcceptEvent += new GetAcceptEventHandler(Socket_AcceptEvent);
|
|
|
+ socketServerMd.CloseEvent += new GetCloseEventHandler(Socket_CloseEvent);
|
|
|
+ //开启监听
|
|
|
+ socketServerMd.StartListen(AppConfigHelper.Get("SocketServerIpAddress"), Convert.ToInt32(AppConfigHelper.Get("SocketServerPort")));
|
|
|
+ Thread thCodeScanner = new Thread(socketServerMd.ListeneSocketClientConnectAccept)
|
|
|
+ {
|
|
|
+ IsBackground = true
|
|
|
+ };
|
|
|
+ thCodeScanner.Start();
|
|
|
+ button1.Enabled = false;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Socket连接关闭事件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender">数据</param>
|
|
|
+ /// <param name="e">事件参数</param>
|
|
|
+ void Socket_CloseEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ string socketIpAddress = sender as string;
|
|
|
+ Invoke(new Action(() =>
|
|
|
+ {
|
|
|
+ if (comboBox1.Items.Contains(socketIpAddress))
|
|
|
+ {
|
|
|
+ comboBox1.Items.Remove(socketIpAddress);
|
|
|
+ }
|
|
|
+ if (comboBox1.Items.Count == 0)
|
|
|
+ {
|
|
|
+ comboBox1.Text = "";
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ socketServerMd.RemoveSocketClient(socketIpAddress);
|
|
|
+ ShowLog($"Socket客户端:【{socketIpAddress}】主动断开连接,Socket服务端已经移除该客户端连接!", true, LogTypeEnum.Run);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Socket获取远程连接节点事件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender">数据</param>
|
|
|
+ /// <param name="e">事件参数</param>
|
|
|
+ void Socket_AcceptEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ string socketIpAddress = sender as string;
|
|
|
+ ShowLog($"Socket客户端:【{socketIpAddress}】连接成功!", true, LogTypeEnum.Run);
|
|
|
+ Invoke(new Action(() =>
|
|
|
+ {
|
|
|
+ if (!comboBox1.Items.Contains(socketIpAddress))
|
|
|
+ {
|
|
|
+ comboBox1.Items.Add(socketIpAddress);
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Socket接收消息数据事件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender">数据流</param>
|
|
|
+ /// <param name="ip">ip地址</param>
|
|
|
+ /// <param name="dataLength">数据长度</param>
|
|
|
+ /// <param name="e">事件参数</param>
|
|
|
+ void Socket_MessageEvent(object sender, string ip, int dataLength, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ byte[] by = sender as byte[];
|
|
|
+ if (dataLength == 0)
|
|
|
+ {
|
|
|
+ ShowLog($"Socket客户端断开连接!", true, LogTypeEnum.SocketData);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ byte[] dataBtArr = new byte[dataLength];
|
|
|
+ Array.Copy(by, 0, dataBtArr, 0, dataLength);
|
|
|
+ if (DataHandleHelper.Verify_DataMsgCRC(dataBtArr))
|
|
|
+ {
|
|
|
+ if (DataHandleHelper.Verify_PackageHeadCRC(dataBtArr))
|
|
|
+ {
|
|
|
+ ShowLog($"接收到Socket客户端:【{ip}】的数据成功!:【{BitConverter.ToString(dataBtArr)}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ShowLog($"接收到Socket客户端:【{ip}】的数据的包头校验码验证不通过!【{BitConverter.ToString(dataBtArr)}】", true, LogTypeEnum.SocketErr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ShowLog($"接收到Socket客户端:【{ip}】的数据的数据校验码验证不通过!【{BitConverter.ToString(dataBtArr)}】", true, LogTypeEnum.SocketErr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ ShowLog($"Socket客户端:【{ip}】接收数据发生异常:【{ex.Message}】!", true, LogTypeEnum.Err);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button2_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ short a = 29000;
|
|
|
+ byte[] b = BitConverter.GetBytes(a);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button2_Click_1(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ int r = new Random().Next(1, 65536);
|
|
|
+ AgvTaskSendMd agvTaskSendMd = new()
|
|
|
+ {
|
|
|
+ FunctionCode = 0xF2,
|
|
|
+ AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo")),
|
|
|
+ CmdNo = r,
|
|
|
+ CmdCode = 2,
|
|
|
+ TaskType = 0x01,
|
|
|
+ ClipAction = 0x01,
|
|
|
+ MoveMode = 0x01,
|
|
|
+ Target_X = 11,
|
|
|
+ Target_Y = 12,
|
|
|
+ Target_Angle = 13,
|
|
|
+ Speed = 23,
|
|
|
+ Target_rfidNo = 1
|
|
|
+ };
|
|
|
+ byte[] btArrData = agvTaskSendMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送任务下发测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button4_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ int r = new Random().Next(1, 65536);
|
|
|
+ AgvChangeRunStatusCmdMd agvChangeRunStatusCmdMd = new();
|
|
|
+ agvChangeRunStatusCmdMd.FunctionCode = 0xF2;
|
|
|
+ agvChangeRunStatusCmdMd.AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ agvChangeRunStatusCmdMd.CmdNo = r;
|
|
|
+ agvChangeRunStatusCmdMd.CmdCode = 0x01;
|
|
|
+ agvChangeRunStatusCmdMd.StatusCode = 0x05;
|
|
|
+
|
|
|
+ byte[] btArrData = agvChangeRunStatusCmdMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送任务状态更改测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button3_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ AgvQueryStatusMd agvQueryStatusMd = new();
|
|
|
+ int r = new Random().Next(1, 3000);
|
|
|
+ agvQueryStatusMd.FunctionCode = 0xF1;
|
|
|
+ agvQueryStatusMd.AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ agvQueryStatusMd.HeartbeatSignal = r;
|
|
|
+ byte[] btArrData = agvQueryStatusMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送状态查询测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】心跳数据:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button7_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ int r = new Random().Next(1, 65536);
|
|
|
+ AgvPreventBumpCmdMd agvPreventBumpCmdMd = new();
|
|
|
+ agvPreventBumpCmdMd.FunctionCode = 0xF2;
|
|
|
+ agvPreventBumpCmdMd.AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ agvPreventBumpCmdMd.CmdNo = r;
|
|
|
+ agvPreventBumpCmdMd.CmdCode = 0x10;
|
|
|
+ agvPreventBumpCmdMd.StatusCode = 0x01;
|
|
|
+
|
|
|
+
|
|
|
+ byte[] btArrData = agvPreventBumpCmdMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送防撞条屏蔽测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button5_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ int r = new Random().Next(1, 65536);
|
|
|
+ AgvResetCmdMd agvResetCmdMd = new();
|
|
|
+ agvResetCmdMd.FunctionCode = 0xF2;
|
|
|
+ agvResetCmdMd.CmdNo = r;
|
|
|
+ agvResetCmdMd.AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ agvResetCmdMd.CmdCode = 0x07;
|
|
|
+
|
|
|
+ byte[] btArrData = agvResetCmdMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送复位测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button6_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ int r = new Random().Next(1, 65536);
|
|
|
+ AgvStopCmdMd agvStopCmdMd = new();
|
|
|
+ agvStopCmdMd.FunctionCode = 0xF2;
|
|
|
+ agvStopCmdMd.AgvNo = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ agvStopCmdMd.CmdNo = r;
|
|
|
+ agvStopCmdMd.CmdCode = 0x08;
|
|
|
+
|
|
|
+ byte[] btArrData = agvStopCmdMd.SerializeBytArr();
|
|
|
+ byte[] dataLen = BitConverter.GetBytes(btArrData.Length);
|
|
|
+ Array.Reverse(dataLen);
|
|
|
+ PackageHeadMd packageHeadMd = new();
|
|
|
+ packageHeadMd.DataLen = dataLen;
|
|
|
+ packageHeadMd.Data_CRC = DataHandleHelper.Get_CustomCRC(btArrData);
|
|
|
+ List<byte> headBtLst = new(8);
|
|
|
+ headBtLst.AddRange(packageHeadMd.PackageHeadFlag);
|
|
|
+ headBtLst.AddRange(packageHeadMd.DataLen);
|
|
|
+ headBtLst.Add(packageHeadMd.VersionNo);
|
|
|
+ headBtLst.Add(packageHeadMd.Data_CRC);
|
|
|
+ packageHeadMd.PackageHead_CRC = DataHandleHelper.Get_CustomCRC(headBtLst.ToArray());
|
|
|
+ byte[] btArrHead = packageHeadMd.SerializeBytArr();
|
|
|
+
|
|
|
+ byte[] sendBtArr = new byte[btArrData.Length + btArrHead.Length];
|
|
|
+ sendBtArr = btArrHead.Concat(btArrData).ToArray();
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
|
|
|
+ ShowLog($"发送停止测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button8_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ Random r = new();
|
|
|
+ int a = r.Next(0,10000);
|
|
|
+ byte[] b = BitConverter.GetBytes(a);
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.Text))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
|
|
|
+ {
|
|
|
+ socketServerMd.SendData(comboBox1.SelectedItem.ToString(), b);
|
|
|
+ ShowLog($"发送自定义测试数据成功:【{a}】【{BitConverter.ToString(b)}】", true, LogTypeEnum.SocketData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请选择要发送数据的Socket客户端!");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+ private void button9_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ richTextBox1.Clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button10_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ AppConfigHelper.Update("AgvNo", Convert.ToInt32(numericUpDown1.Value).ToString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Form1_Load(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ textBox1.Text = AppConfigHelper.Get("SocketServerIpAddress");
|
|
|
+ numericUpDown2.Value = Convert.ToInt32(AppConfigHelper.Get("SocketServerPort"));
|
|
|
+ numericUpDown1.Value = Convert.ToInt32(AppConfigHelper.Get("AgvNo"));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button11_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ if (!IsIP(textBox1.Text))
|
|
|
+ {
|
|
|
+ MessageBox.Show("请输入正确的IP地址!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (AppConfigHelper.Get("SocketServerIpAddress") == textBox1.Text && Convert.ToInt32(numericUpDown2.Value) == Convert.ToInt32(AppConfigHelper.Get("SocketServerPort")))
|
|
|
+ return;
|
|
|
+ AppConfigHelper.Update("SocketServerIpAddress", textBox1.Text);
|
|
|
+ AppConfigHelper.Update("SocketServerPort", Convert.ToInt32(numericUpDown2.Value).ToString());
|
|
|
+ MessageBox.Show("更改IP地址和端口号后,需要重启程序才能生效!");
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 验证IP地址是否合法
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="ip">要验证的IP地址</param>
|
|
|
+ public bool IsIP(string ip)
|
|
|
+ {
|
|
|
+ //如果为空,认为验证合格
|
|
|
+ if (string.IsNullOrEmpty(ip))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //清除要验证字符串中的空格
|
|
|
+ ip = ip.Trim();
|
|
|
+ //模式字符串
|
|
|
+ string pattern = @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$";
|
|
|
+ //验证
|
|
|
+ return Regex.IsMatch(ip, pattern);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|