lixun %!s(int64=2) %!d(string=hai) anos
pai
achega
7311b6693f

+ 32 - 37
src/YSAI.DAQ/YSAI.Core/data/AddressHandler.cs

@@ -62,7 +62,7 @@ namespace YSAI.Core.data
                 addressValue.Time = DateTime.Now.ToLocalTime();
                 addressValue.Quality = 1;
 
-                //异步转发
+                //转发
                 Relay(addressValue);
 
                 return addressValue;
@@ -102,7 +102,7 @@ namespace YSAI.Core.data
                 string logName = "Parse.log";
 
                 try
-                { 
+                {
                     switch (addressDetails.AddressParseParam.ParseType)
                     {
                         case ParseType.MethodAnalysis:
@@ -137,40 +137,36 @@ namespace YSAI.Core.data
         /// 数据转发
         /// </summary>
         /// <param name="addressValue">地址详情</param>
-        /// <param name="value">当前值</param>
         /// <returns></returns>
-        public static Task Relay(AddressValue addressValue)
+        public static void Relay(AddressValue addressValue)
         {
-            return Task.Run(() =>
-            {
-                //日志文件名称
-                string logName = "Relay.log";
+            //日志文件名称
+            string logName = "Relay.log";
 
-                try
+            try
+            {
+                if (RegisterEvent())
                 {
-                    if (RegisterEvent())
+                    //类的唯一标识符
+                    string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                    //方法的唯一标识符
+                    string MethodSN = "[Produce]";
+                    //执行转发方法
+                    OperateResult operateResult = reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { PacketType.Message.ToString(), addressValue.ToJson().JsonFormatting() }) as OperateResult;
+                    //状态判断
+                    if (!operateResult.State)
                     {
-                        //类的唯一标识符
-                        string ClassSN = "YSAI.Relay.RelayOperate[Instance]";
-                        //方法的唯一标识符
-                        string MethodSN = "[Produce]";
-                        //执行转发方法
-                        OperateResult operateResult = reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { PacketType.Message.ToString(), addressValue.ToJson().JsonFormatting() }) as OperateResult;
-                        //状态判断
-                        if (!operateResult.State)
-                        {
-                            DynamicObj.Value = addressValue;
-                            DynamicObj.State = operateResult.State;
-                            DynamicObj.Exception = operateResult.Message;
-                            LogHelper.Error(DynamicObj.ToJson(), logName);
-                        }
+                        DynamicObj.Value = addressValue;
+                        DynamicObj.State = operateResult.State;
+                        DynamicObj.Exception = operateResult.Message;
+                        LogHelper.Error(DynamicObj.ToJson(), logName);
                     }
                 }
-                catch (Exception ex)
-                {
-                    LogHelper.Error("转发异常:" + ex.ToString(), logName);
-                }
-            });
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("转发异常:" + ex.ToString(), logName);
+            }
         }
 
         /// <summary>
@@ -186,11 +182,11 @@ namespace YSAI.Core.data
             if (!RegisterEventState)
             {
                 //类的唯一标识符
-                string ClassSN = "YSAI.Relay.RelayOperate[Instance]";
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
                 //事件的唯一标识符
                 string EventSN = "[OnEvent]";
                 //注册事件
-                OperateResult operateResult = reflectionOperate.RegisterEvent($"{ClassSN}{EventSN}", true, P2: RelayOperate_OnEvent);
+                OperateResult operateResult = reflectionOperate.RegisterEvent($"{ClassSN}{EventSN}", true, P2: RelayManageOperate_OnEvent);
                 if (!operateResult.State)
                 {
                     throw new Exception($"注册事件失败:{operateResult.Message}");
@@ -207,17 +203,16 @@ namespace YSAI.Core.data
         /// <param name="sender"></param>
         /// <param name="e"></param>
         /// <exception cref="NotImplementedException"></exception>
-        private static void RelayOperate_OnEvent(object? sender, object e)
+        private static void RelayManageOperate_OnEvent(object? sender, object e)
         {
             //日志文件名称
             string logName = "RelayEvent.log";
-
-            OperateResult? operateResult = e as OperateResult;
-            if (operateResult != null)
+            EventResult eventResult = e as EventResult;
+            if (eventResult != null)
             {
-                if (!operateResult.State)
+                if (!eventResult.State)
                 {
-                    LogHelper.Error(operateResult.ToJson(), logName);
+                    LogHelper.Error(eventResult.ToJson(), logName);
                 }
             }
         }

+ 8 - 8
src/YSAI.DAQ/YSAI.DAQ.sln

@@ -67,9 +67,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{12CB0510-7
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "manage", "manage", "{ECAD410C-2895-4836-BCA7-D4EF340E778E}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Relay", "YSAI.Relay\YSAI.Relay.csproj", "{B8024157-E8D9-4CA8-941F-CAB610FAB046}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.DaqManage", "YSAI.DaqManage\YSAI.DaqManage.csproj", "{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.DaqManage", "YSAI.DaqManage\YSAI.DaqManage.csproj", "{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.RelayManage", "YSAI.RelayManage\YSAI.RelayManage.csproj", "{DD9020DC-A51F-48F2-83FA-A3F10A43220F}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -181,14 +181,14 @@ Global
 		{2221CE78-FA24-40E3-8453-9C66E32F9C0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2221CE78-FA24-40E3-8453-9C66E32F9C0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2221CE78-FA24-40E3-8453-9C66E32F9C0C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B8024157-E8D9-4CA8-941F-CAB610FAB046}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B8024157-E8D9-4CA8-941F-CAB610FAB046}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B8024157-E8D9-4CA8-941F-CAB610FAB046}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B8024157-E8D9-4CA8-941F-CAB610FAB046}.Release|Any CPU.Build.0 = Release|Any CPU
 		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DD9020DC-A51F-48F2-83FA-A3F10A43220F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DD9020DC-A51F-48F2-83FA-A3F10A43220F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DD9020DC-A51F-48F2-83FA-A3F10A43220F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DD9020DC-A51F-48F2-83FA-A3F10A43220F}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -221,8 +221,8 @@ Global
 		{257F1474-B220-4C61-88C6-5B83BEF7B3A7} = {D60224CF-7F12-453B-851E-B5C01F9D2BBE}
 		{49133ADB-D3BF-4682-AA5A-CC1CF1917D45} = {D60224CF-7F12-453B-851E-B5C01F9D2BBE}
 		{2221CE78-FA24-40E3-8453-9C66E32F9C0C} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
-		{B8024157-E8D9-4CA8-941F-CAB610FAB046} = {9D8EDBBA-7A97-4D84-9B12-7FCC2F834046}
-		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5} = {0A264424-1AD7-49FA-B813-D96498066479}
+		{41AB3A5A-5372-4A75-898C-9A4F9454F8A5} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
+		{DD9020DC-A51F-48F2-83FA-A3F10A43220F} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {5D5D3927-6714-40C0-84EA-44C5BA4C5E87}

+ 15 - 16
src/YSAI.DAQ/YSAI.Manage.Core/ManageOperate.cs

@@ -8,7 +8,6 @@ using YSAI.Core.@interface.unify;
 using YSAI.Core.reflection;
 using YSAI.Manage.Core.@base;
 using YSAI.Opc.ua.client;
-using YSAI.Relay;
 using YSAI.Unility;
 
 namespace YSAI.Manage.Core
@@ -132,22 +131,22 @@ namespace YSAI.Manage.Core
                         }
                         break;
                     case LibType.Relay:
-                        RelayData.Basics? reflectionData = null;
-                        //json转换
-                        try
-                        {
-                            reflectionData = JsonTool.StringToJsonEntity<RelayData.Basics>(jsonContent);
-                        }
-                        catch { }
+                        //RelayMData.Basics? reflectionData = null;
+                        ////json转换
+                        //try
+                        //{
+                        //    reflectionData = JsonTool.StringToJsonEntity<RelayData.Basics>(jsonContent);
+                        //}
+                        //catch { }
 
-                        if (reflectionData != null)
-                        {
-                            FileTool.StringToFile(RelayConfigPath, jsonContent);
-                        }
-                        else
-                        {
-                            return Break("Update", false, $"[ {LType.ToString()} ] 文件内容错误");
-                        }
+                        //if (reflectionData != null)
+                        //{
+                        //    FileTool.StringToFile(RelayConfigPath, jsonContent);
+                        //}
+                        //else
+                        //{
+                        //    return Break("Update", false, $"[ {LType.ToString()} ] 文件内容错误");
+                        //}
                         break;
                 }
 

+ 0 - 1
src/YSAI.DAQ/YSAI.Manage.Core/YSAI.Manage.Core.csproj

@@ -18,7 +18,6 @@
     <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
     <ProjectReference Include="..\YSAI.RabbitMQ\YSAI.RabbitMQ.csproj" />
     <ProjectReference Include="..\YSAI.Redis\YSAI.Redis.csproj" />
-    <ProjectReference Include="..\YSAI.Relay\YSAI.Relay.csproj" />
     <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
   </ItemGroup>
 

+ 0 - 1
src/YSAI.DAQ/YSAI.Manage/YSAI.Manage.csproj

@@ -27,7 +27,6 @@
     <ProjectReference Include="..\YSAI.Mqtt\YSAI.Mqtt.csproj" />
     <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
     <ProjectReference Include="..\YSAI.RabbitMQ\YSAI.RabbitMQ.csproj" />
-    <ProjectReference Include="..\YSAI.Relay\YSAI.Relay.csproj" />
     <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
   </ItemGroup>
 

+ 2 - 2
src/YSAI.DAQ/YSAI.Relay/RelayData.cs

@@ -6,9 +6,9 @@ using YSAI.Kafka;
 using YSAI.Mqtt.client;
 using YSAI.RabbitMQ;
 
-namespace YSAI.Relay
+namespace YSAI.RelayManage
 {
-    public class RelayData
+    public class RelayManageData
     {
         /// <summary>
         /// 基础数据

+ 21 - 9
src/YSAI.DAQ/YSAI.Relay/RelayOperate.cs

@@ -14,15 +14,15 @@ using YSAI.Mqtt.client;
 using YSAI.RabbitMQ;
 using YSAI.Unility;
 
-namespace YSAI.Relay
+namespace YSAI.RelayManage
 {
     /// <summary>
     /// 转发操作
     /// </summary>
-    public class RelayOperate : IBaseAbstract, IRelay
+    public class RelayManageOperate : IBaseAbstract, IRelay
     {
-        protected override string LogHead => "[ RelayOperate 操作 ]";
-        protected override string ClassName => "RelayOperate";
+        protected override string LogHead => "[ RelayManageOperate 操作 ]";
+        protected override string ClassName => "RelayManageOperate";
         /// <summary>
         /// 文件夹
         /// </summary>
@@ -30,7 +30,7 @@ namespace YSAI.Relay
         /// <summary>
         /// 文件
         /// </summary>
-        public static string ConfigFile = $"{AppDomain.CurrentDomain.BaseDirectory}{ConfigDirectory}//RelayConfig.json";
+        public static string ConfigFile = $"{AppDomain.CurrentDomain.BaseDirectory}{ConfigDirectory}//RelayManageConfig.json";
 
         /// <summary>
         /// 统一返回
@@ -39,7 +39,7 @@ namespace YSAI.Relay
         /// <summary>
         /// 基础数据
         /// </summary>
-        private RelayData.Basics basics;
+        private RelayManageData.Basics basics;
 
         private static readonly object Lock = new object();  //锁
         private static ReflectionOperate? ThisObjList; //自身对象
@@ -158,7 +158,7 @@ namespace YSAI.Relay
         /// <summary>
         /// 无惨构造函数
         /// </summary>
-        public RelayOperate()
+        public RelayManageOperate()
         {
             this.basics = GetConfig();
             Init();
@@ -168,13 +168,13 @@ namespace YSAI.Relay
         /// 获取配置
         /// </summary>
         /// <returns></returns>
-        private RelayData.Basics? GetConfig()
+        private RelayManageData.Basics? GetConfig()
         {
             try
             {
                 if (File.Exists(ConfigFile))  //配置存在
                 {
-                    return JsonTool.StringToJsonEntity<RelayData.Basics>(FileTool.FileToString(ConfigFile));
+                    return JsonTool.StringToJsonEntity<RelayManageData.Basics>(FileTool.FileToString(ConfigFile));
                 }
             }
             catch (Exception ex)
@@ -204,6 +204,10 @@ namespace YSAI.Relay
                         operateResult = operate.On();
                         if (operateResult.State)
                         {
+                            if (RabbitMQArray == null)
+                            {
+                                RabbitMQArray = new ConcurrentDictionary<string, RabbitMQOperate>();
+                            }
                             RabbitMQArray.TryAdd(configData.SN, operate);
                         }
                         else
@@ -222,6 +226,10 @@ namespace YSAI.Relay
                         operateResult = operate.On();
                         if (operateResult.State)
                         {
+                            if (MqttClientArray == null)
+                            {
+                                MqttClientArray = new ConcurrentDictionary<string, MqttClientOperate>();
+                            }
                             MqttClientArray.TryAdd(configData.SN, operate);
                         }
                         else
@@ -237,6 +245,10 @@ namespace YSAI.Relay
                     foreach (var configData in basics.KafkaProducerDataArray)
                     {
                         KafkaProducerOperate operate = KafkaProducerOperate.Instance(configData);
+                        if (KafkaProducerArray == null)
+                        {
+                            KafkaProducerArray = new ConcurrentDictionary<string, KafkaProducerOperate>();
+                        }
                         KafkaProducerArray.TryAdd(configData.SN, operate);
                     }
                 }

+ 1 - 1
src/YSAI.DAQ/YSAI.Relay/YSAI.Relay.csproj

@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <TargetFramework>net6.0</TargetFramework>

+ 9 - 10
src/YSAI.DAQ/YSAI.Test/TestAll.cs

@@ -18,7 +18,7 @@ using YSAI.Kafka;
 using YSAI.RabbitMQ;
 using S7.Net;
 using YSAI.S7.client;
-using YSAI.Relay;
+using YSAI.RelayManage;
 
 namespace YSAI.Test
 {
@@ -1040,7 +1040,7 @@ namespace YSAI.Test
 
 
             //转发配置
-            RelayData.Basics basics = new RelayData.Basics();
+            RelayManageData.Basics basics = new RelayManageData.Basics();
             basics.RabbitMQDataArray = new List<RabbitMQData.Basics>();
             basics.KafkaProducerDataArray = new List<KafkaProducerData.Basics>();
             basics.MqttClientDataArray = new List<MqttClientData.Basics>();
@@ -1049,11 +1049,9 @@ namespace YSAI.Test
             basics.MqttClientDataArray.Add(new MqttClientData.Basics() { QualityOfServiceLevel = 0, ServerIPAddress = "127.0.0.1", ServerPort = 8883, ServerLoginID = "ysai", ServerLoginPassword = "ysai", SN = "mqtt转发三号" });
             basics.MqttClientDataArray.Add(new MqttClientData.Basics() { QualityOfServiceLevel = 0, ServerIPAddress = "127.0.0.1", ServerPort = 8884, ServerLoginID = "ysai", ServerLoginPassword = "ysai", SN = "mqtt转发四号" });
 
-            RelayOperate relayOperate = new RelayOperate();
+            RelayManageOperate relayOperate = new RelayManageOperate();
 
-            relayOperate.OnEvent += RelayOperate_OnEvent;
-
-            FileTool.StringToFile(RelayOperate.ConfigFile, basics.ToJson().JsonFormatting());
+            FileTool.StringToFile(RelayManageOperate.ConfigFile, basics.ToJson().JsonFormatting());
 
             //创建配置
             Basics basics2 = new Basics()
@@ -1062,20 +1060,20 @@ namespace YSAI.Test
                 {
                     new Basics.DllData()
                     {
-                        DllPath="YSAI.Relay.dll",
+                        DllPath="YSAI.RelayManage.dll",
                         IsAbsolutePath=false,
                         NamespaceDatas=new List<Basics.DllData.NamespaceData>()
                         {
                             new Basics.DllData.NamespaceData()
                             {
-                                Namespace="YSAI.Relay",
+                                Namespace="YSAI.RelayManage",
                                 ClassDatas=new List<Basics.DllData.NamespaceData.ClassData>()
                                 {
                                     new Basics.DllData.NamespaceData.ClassData()
                                     {
-                                        ClassName="RelayOperate",
+                                        ClassName="RelayManageOperate",
                                         ConstructorParam=null,
-                                        SN="YSAI.Relay.RelayOperate[Instance]",
+                                        SN="YSAI.RelayManage.RelayManageOperate[Instance]",
                                         MethodDatas=new List<Basics.DllData.NamespaceData.ClassData.MethodData>()
                                         {
                                             new Basics.DllData.NamespaceData.ClassData.MethodData()
@@ -1107,6 +1105,7 @@ namespace YSAI.Test
 
 
             FileTool.StringToFile(ReflectionOperate.ConfigFile, basics2.ToJson().JsonFormatting());
+
         }
         private static void RelayOperate_OnEvent(object? sender, object e)
         {

+ 1 - 1
src/YSAI.DAQ/YSAI.Test/YSAI.Test.csproj

@@ -29,7 +29,7 @@
     <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
     <ProjectReference Include="..\YSAI.RabbitMQ\YSAI.RabbitMQ.csproj" />
     <ProjectReference Include="..\YSAI.Redis\YSAI.Redis.csproj" />
-    <ProjectReference Include="..\YSAI.Relay\YSAI.Relay.csproj" />
+    <ProjectReference Include="..\YSAI.RelayManage\YSAI.RelayManage.csproj" />
     <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
   </ItemGroup>
 

+ 31 - 4
src/YSAI.DAQ/YSAI.TestConsole/Program.cs

@@ -23,7 +23,6 @@ using static YSAI.Core.reflection.ReflectionData;
 using static YSAI.Core.reflection.ReflectionData.Basics.DllData.NamespaceData;
 using YSAI.Core.@enum;
 using System.Text;
-using YSAI.Relay;
 using Microsoft.Extensions.DependencyInjection;
 using YSAI.Core.@interface.unify;
 using YSAI.Modbus.client;
@@ -36,14 +35,37 @@ namespace YSAI.TestConsole
     {
         static void Main(string[] args)
         {
+
+           
+
+
+            //创建4个MQTTwebsocket 服务端
+
+            int[] ints = {8881,8882};
+            foreach (var item in ints)
+            {
+                MqttWebSocketServiceOperate mqttWebSocketServiceOperate = MqttWebSocketServiceOperate.Instance(new MqttWebSocketServiceData.Basics()
+                {
+                    Port= item,
+                    HttpPort = ($"1{item.ToString()}").ToInt(),
+                    LoginID="ysai",
+                    LoginPassword="ysai",
+                    Uri="ysai"
+                });
+                mqttWebSocketServiceOperate.OnEvent += MqttWebSocketServiceOperate_OnEvent;
+                mqttWebSocketServiceOperate.On();
+            }
+
+           
+
+
+
+
             DaqManageOperate daqManageOperate = DaqManageOperate.Instance();
             daqManageOperate.OnEvent += DaqManageOperate_OnEvent;
 
             Thread.Sleep(1000);
 
-         
-
-
             while (true)
             {
                 Console.ReadLine();
@@ -139,6 +161,11 @@ namespace YSAI.TestConsole
             }
         }
 
+        private static void MqttWebSocketServiceOperate_OnEvent(object? sender, EventResult e)
+        {
+            Console.WriteLine(e.Message);
+        }
+
         private static void DaqManageOperate_OnEvent(object? sender, EventResult e)
         {
             Console.WriteLine(e.Message);

+ 1 - 1
src/YSAI.DAQ/YSAI.TestConsole/YSAI.TestConsole.csproj

@@ -18,7 +18,7 @@
     <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
     <ProjectReference Include="..\YSAI.RabbitMQ\YSAI.RabbitMQ.csproj" />
     <ProjectReference Include="..\YSAI.Redis\YSAI.Redis.csproj" />
-    <ProjectReference Include="..\YSAI.Relay\YSAI.Relay.csproj" />
+    <ProjectReference Include="..\YSAI.RelayManage\YSAI.RelayManage.csproj" />
     <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
   </ItemGroup>