소스 검색

添加Json帮助类,优化任务下发协议。

SYL 3 년 전
부모
커밋
ad729bbb59

+ 4 - 4
DWZB_Agv_Agreement/Agv_Agreement/AgvTaskSendMd.cs

@@ -35,19 +35,19 @@ namespace DWZB_Agv_Agreement.Agv_Agreement
         /// <summary>
         /// 目标点X坐标
         /// </summary>
-        public int Target_X { get; set; }
+        public float Target_X { get; set; }
         /// <summary>
         /// 目标点Y坐标
         /// </summary>
-        public int Target_Y { get; set; }
+        public float Target_Y { get; set; }
         /// <summary>
         /// 目标点角度
         /// </summary>
-        public int Target_Angle { get; set; }
+        public float Target_Angle { get; set; }
         /// <summary>
         /// 移动速度
         /// </summary>
-        public int Speed { get; set; }
+        public float Speed { get; set; }
         /// <summary>
         /// 目标点1 RFID编号
         /// </summary>

+ 4 - 0
DWZB_Agv_Agreement/DWZB_Agv_Agreement.csproj

@@ -6,4 +6,8 @@
     <UseWindowsForms>true</UseWindowsForms>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+  </ItemGroup>
+
 </Project>

+ 1 - 0
DWZB_Agv_Agreement/Form1.Designer.cs

@@ -316,6 +316,7 @@ namespace DWZB_Agv_Agreement
             this.Controls.Add(this.richTextBox1);
             this.Controls.Add(this.button1);
             this.Name = "Form1";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
             this.Text = "Form1";
             this.Load += new System.EventHandler(this.Form1_Load);
             ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();

+ 14 - 17
DWZB_Agv_Agreement/Form1.cs

@@ -122,11 +122,6 @@ namespace DWZB_Agv_Agreement
             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))
@@ -160,8 +155,9 @@ namespace DWZB_Agv_Agreement
         private void button2_Click_1(object sender, EventArgs e)
         {
             try
-            {
-                int r = new Random().Next(1, 65536);
+            {                
+                Random rdm = new();
+                int r = rdm.Next(1,65536);
                 AgvTaskSendMd agvTaskSendMd = new()
                 {
                     FunctionCode = 0xF2,
@@ -171,10 +167,10 @@ namespace DWZB_Agv_Agreement
                     TaskType = 0x01,
                     ClipAction = 0x01,
                     MoveMode = 0x01,
-                    Target_X = 11,
-                    Target_Y = 12,
-                    Target_Angle = 13,
-                    Speed = 23,
+                    Target_X = (float)(rdm.Next(0, 180) + rdm.NextDouble()),
+                    Target_Y = (float)(rdm.Next(0, 180) + rdm.NextDouble()),
+                    Target_Angle = (float)(rdm.Next(0, 180) + rdm.NextDouble()),
+                    Speed = (float)(rdm.Next(0, 65536) + rdm.NextDouble()),
                     Target_rfidNo = 1
                 };
                 byte[] btArrData = agvTaskSendMd.SerializeBytArr();
@@ -198,7 +194,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送任务下发测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送任务下发测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvTaskSendMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -249,7 +245,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送任务状态更改测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送任务状态更改测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvChangeRunStatusCmdMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -297,7 +293,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送状态查询测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】心跳数据:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送状态查询测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvQueryStatusMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -349,7 +345,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送防撞条屏蔽测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送防撞条屏蔽测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvPreventBumpCmdMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -399,7 +395,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送复位测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送复位测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvResetCmdMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -449,7 +445,7 @@ namespace DWZB_Agv_Agreement
                     if (!string.IsNullOrEmpty(comboBox1.SelectedItem.ToString()))
                     {
                         socketServerMd.SendData(comboBox1.SelectedItem.ToString(), sendBtArr);
-                        ShowLog($"发送停止测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令号:【{r}】", true, LogTypeEnum.SocketData);
+                        ShowLog($"发送停止测试指令数据成功:【{BitConverter.ToString(sendBtArr)}】指令序列化数据:【{JsonHelper.ToJson(agvStopCmdMd)}】", true, LogTypeEnum.SocketData);
                     }
                     else
                     {
@@ -547,6 +543,7 @@ namespace DWZB_Agv_Agreement
             socketServerMd.AcceptEvent -= new GetAcceptEventHandler(Socket_AcceptEvent);
             socketServerMd.CloseEvent -= new GetCloseEventHandler(Socket_CloseEvent);
             comboBox1.Items.Clear();
+            comboBox1.Text = string.Empty;
             button12.Enabled = false;
             button1.Enabled = true;
         }

+ 45 - 0
DWZB_Agv_Agreement/JsonHelper.cs

@@ -0,0 +1,45 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DWZB_Agv_Agreement
+{
+    public static class JsonHelper
+    {
+        private static JsonSerializerSettings jsonSerializerSetting = new JsonSerializerSettings()
+        {
+            ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()
+            {
+                NamingStrategy = new Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy()
+            },
+            NullValueHandling = NullValueHandling.Ignore
+        };
+        public static string ToJsonExt(object data)
+        {
+            return JsonConvert.SerializeObject(data, jsonSerializerSetting);
+        }
+        /// <summary>
+        /// 对象序列化为json字符串
+        /// </summary>
+        /// <param name="data">对象</param>
+        /// <returns></returns>
+        public static string ToJson(object data)
+        {
+            return JsonConvert.SerializeObject(data);
+        }
+        /// <summary>
+        /// json字符串反序列化为对象
+        /// </summary>
+        /// <typeparam name="T">对象</typeparam>
+        /// <param name="data">json数据</param>
+        /// <returns></returns>
+        public static T ToObject<T>(string data)
+        {
+            return JsonConvert.DeserializeObject<T>(data);
+        }
+
+    }
+}

+ 24 - 21
DWZB_Agv_Agreement/SocketServerHelper.cs

@@ -11,18 +11,34 @@ using System.Threading.Tasks;
 
 namespace DWZB_Agv_Agreement
 {
+
+    #region 自定义委托
+    /// <summary>
+    /// 获取消息委托
+    /// </summary>
+    /// <param name="sender">消息主体buffer</param>
+    /// <param name="ip">ip</param>
+    /// <param name="dataLength">数据长度</param>
+    /// <param name="e">事件类对象</param>
+    public delegate void GetMessageEventHandler(object sender, string ip, int dataLength, EventArgs e);
+    /// <summary>
+    /// 获取链接委托
+    /// </summary>
+    /// <param name="sender">链接进入的IP</param>
+    /// <param name="e">事件类对象</param>
+    public delegate void GetAcceptEventHandler(object sender, EventArgs e);
+    /// <summary>
+    /// 关闭链接委托
+    /// </summary>
+    /// <param name="sender">链接进入的IP</param>
+    /// <param name="e">事件类对象</param>
+    public delegate void GetCloseEventHandler(object sender, EventArgs e); 
+    #endregion
+
     public class SocketServerHelper
     {
 
         #region 自定义事件
-        /// <summary>
-        /// 获取消息委托
-        /// </summary>
-        /// <param name="sender">消息主体buffer</param>
-        /// <param name="ip">ip</param>
-        /// <param name="dataLength">数据长度</param>
-        /// <param name="e">事件类对象</param>
-        public delegate void GetMessageEventHandler(object sender, string ip, int dataLength, EventArgs e);
         public event GetMessageEventHandler MessageEvent;
         /// <summary>
         /// 触发接收到Socket客户端消息的委托事件
@@ -37,12 +53,6 @@ namespace DWZB_Agv_Agreement
         }
 
 
-        /// <summary>
-        /// 获取链接委托
-        /// </summary>
-        /// <param name="sender">链接进入的IP</param>
-        /// <param name="e">事件类对象</param>
-        public delegate void GetAcceptEventHandler(object sender, EventArgs e);
         public event GetAcceptEventHandler AcceptEvent;
         /// <summary>
         /// 触发Socket客户接入服务端的委托事件
@@ -54,12 +64,6 @@ namespace DWZB_Agv_Agreement
             AcceptEvent?.Invoke(sender, e);
         }
 
-        /// <summary>
-        /// 关闭链接委托
-        /// </summary>
-        /// <param name="sender">链接进入的IP</param>
-        /// <param name="e">事件类对象</param>
-        public delegate void GetCloseEventHandler(object sender, EventArgs e);
         public event GetCloseEventHandler CloseEvent;
         /// <summary>
         /// 触发关闭链接委托事件
@@ -366,7 +370,6 @@ namespace DWZB_Agv_Agreement
             {
                 SocketServerListen.Close();
                 SocketServerListen.Dispose();
-                //SocketServerListen = null;
             }
             SocketServerThWorker.Dispose();
         }