From d736f41926d30f082ac4ac03e56e2b84d3dacb3a Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Tue, 26 Sep 2017 11:07:45 +0800 Subject: [PATCH 1/3] 2017-09-26 update 1 Update to .Net Standard 2.0 --- Modbus.Net/Modbus.Net.Core/App.config | 15 +++++ .../Modbus.Net.Core/ConfigurationManager.cs | 38 ------------- .../Modbus.Net.Core/Modbus.Net.Core.csproj | 16 +++--- Modbus.Net/Modbus.Net.Core/appsettings.json | 10 ---- .../Modbus.Net.Modbus.Core.csproj | 55 +++++++++++++++++++ .../Modbus.Net.Modbus.csproj | 23 +++++++- .../Modbus.Net.OPC/Modbus.Net.OPC.csproj | 4 +- .../Modbus.Net.Siemens.Core.csproj | 49 +++++++++++++++++ .../Modbus.Net.Siemens.csproj | 15 ++++- Modbus.Net/Modbus.Net.sln | 27 +++++++-- Modbus.Net/Modbus.Net/Modbus.Net.csproj | 13 ++--- Modbus.Net/src/Base.Common/BaseMachine.cs | 1 - .../Base.Common}/ComConnector.cs | 0 .../Base.Common}/ComProtocalLinker.cs | 0 Modbus.Net/src/Base.Common/ModBus.Net.nuspec | 19 ------- Modbus.Net/src/Base.Common/TaskManager.cs | 5 -- .../src/Base.Common/TcpProtocalLinker.cs | 5 +- .../Modbus.Common}/AddressFormaterModbus.cs | 0 .../Modbus.Common}/AddressTranslatorModbus.cs | 0 .../Modbus.Common/ModbusAsciiInTcpProtocal.cs | 48 ++++++++++++++++ .../ModbusAsciiInTcpProtocalLinker.cs | 49 +++++++++++++++++ .../Modbus.Common}/ModbusAsciiProtocal.cs | 0 .../ModbusAsciiProtocalLinker.cs | 0 .../Modbus.Common}/ModbusMachine.cs | 0 .../Modbus.Common}/ModbusProtocal.cs | 0 .../ModbusProtocalLinkerBytesExtend.cs | 10 ++++ .../Modbus.Common/ModbusRtuInTcpProtocal.cs | 48 ++++++++++++++++ .../ModbusRtuInTcpProtocalLinker.cs | 47 ++++++++++++++++ .../Modbus.Common}/ModbusRtuProtocal.cs | 0 .../Modbus.Common}/ModbusRtuProtocalLinker.cs | 0 .../Modbus.Common}/ModbusTcpProtocal.cs | 0 .../Modbus.Common}/ModbusTcpProtocalLinker.cs | 0 .../Modbus.Common}/ModbusUtility.cs | 28 +++++++++- .../Siemens.Common}/AddressFormaterSiemens.cs | 0 .../AddressTranslatorSiemens.cs | 0 .../Siemens.Common}/SiemensMachine.cs | 0 .../Siemens.Common}/SiemensPpiProtocal.cs | 0 .../SiemensPpiProtocalLinker.cs | 0 .../Siemens.Common}/SiemensProtocal.cs | 0 .../SiemensProtocalLinkerBytesExtend.cs | 0 .../SiemensStructDefinition.cs | 0 .../Siemens.Common}/SiemensTcpProtocal.cs | 0 .../SiemensTcpProtocalLinker.cs | 0 .../Siemens.Common}/SiemensUtility.cs | 0 44 files changed, 419 insertions(+), 106 deletions(-) create mode 100644 Modbus.Net/Modbus.Net.Core/App.config delete mode 100644 Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs delete mode 100644 Modbus.Net/Modbus.Net.Core/appsettings.json create mode 100644 Modbus.Net/Modbus.Net.Modbus.Core/Modbus.Net.Modbus.Core.csproj create mode 100644 Modbus.Net/Modbus.Net.Siemens.Core/Modbus.Net.Siemens.Core.csproj rename Modbus.Net/{Modbus.Net => src/Base.Common}/ComConnector.cs (100%) rename Modbus.Net/{Modbus.Net => src/Base.Common}/ComProtocalLinker.cs (100%) delete mode 100644 Modbus.Net/src/Base.Common/ModBus.Net.nuspec rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/AddressFormaterModbus.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/AddressTranslatorModbus.cs (100%) create mode 100644 Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocal.cs create mode 100644 Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocalLinker.cs rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusAsciiProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusAsciiProtocalLinker.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusMachine.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusProtocalLinkerBytesExtend.cs (95%) create mode 100644 Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocal.cs create mode 100644 Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocalLinker.cs rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusRtuProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusRtuProtocalLinker.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusTcpProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusTcpProtocalLinker.cs (100%) rename Modbus.Net/{Modbus.Net.Modbus => src/Modbus.Common}/ModbusUtility.cs (90%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/AddressFormaterSiemens.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/AddressTranslatorSiemens.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensMachine.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensPpiProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensPpiProtocalLinker.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensProtocalLinkerBytesExtend.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensStructDefinition.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensTcpProtocal.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensTcpProtocalLinker.cs (100%) rename Modbus.Net/{Modbus.Net.Siemens => src/Siemens.Common}/SiemensUtility.cs (100%) diff --git a/Modbus.Net/Modbus.Net.Core/App.config b/Modbus.Net/Modbus.Net.Core/App.config new file mode 100644 index 0000000..44dba52 --- /dev/null +++ b/Modbus.Net/Modbus.Net.Core/App.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs b/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs deleted file mode 100644 index 4891ce1..0000000 --- a/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.IO; -using Microsoft.Extensions.Configuration; - -namespace Modbus.Net -{ - /// - /// Simulate ConfigurationManager in System.Configuration - /// - public static class ConfigurationManager - { - /// - /// Configuration Builder - /// - private static readonly IConfigurationBuilder Builder = new ConfigurationBuilder() - .SetBasePath(RootPath ?? Directory.GetCurrentDirectory()) - .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); - - /// - /// RootPath of App.config and appsettings.json - /// - public static string RootPath { get; set; } = null; - - /// - /// Configuration Root - /// - private static IConfigurationRoot Configuration => Builder.Build(); - - /// - /// AppSettings - /// - public static IConfigurationSection AppSettings => Configuration.GetSection("AppSettings"); - - /// - /// ConnectionStrings - /// - public static IConfigurationSection ConnectionStrings => Configuration.GetSection("ConnectionStrings"); - } -} \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj b/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj index 86df934..eaa5fcf 100644 --- a/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj +++ b/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj @@ -1,11 +1,11 @@  - netstandard1.3 + netstandard2.0 Modbus.Net.Core Modbus.Net Modbus.Net.Core - 1.3.9 + 1.3.10 Modbus.Net Chris L.(Luo Sheng) Hangzhou Delian IoT Science Technology Co.,Ltd. @@ -23,7 +23,7 @@ - bin\Debug\netstandard1.3\Modbus.Net.xml + bin\Debug\netstandard2.0\Modbus.Net.xml @@ -50,18 +50,18 @@ - + + - - - + + - + \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Core/appsettings.json b/Modbus.Net/Modbus.Net.Core/appsettings.json deleted file mode 100644 index 12febb4..0000000 --- a/Modbus.Net/Modbus.Net.Core/appsettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "AppSettings": { - "COM": "COM1", - "IP": "192.168.1.1", - "ComConnectionTimeout": "3000", - "IPConnectionTimeout": "5000", - "ModbusPort": "502", - "SiemensPort": "102" - } -} \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Modbus.Core/Modbus.Net.Modbus.Core.csproj b/Modbus.Net/Modbus.Net.Modbus.Core/Modbus.Net.Modbus.Core.csproj new file mode 100644 index 0000000..30ded4c --- /dev/null +++ b/Modbus.Net/Modbus.Net.Modbus.Core/Modbus.Net.Modbus.Core.csproj @@ -0,0 +1,55 @@ + + + netstandard2.0 + Modbus.Net.Modbus.Core + Modbus.Net.Modbus + Modbus.Net.Modbus.Core + 1.3.10 + Chris L.(Luo Sheng) + Hangzhou Delian IoT Science Technology Co.,Ltd. + Modbus.Net.Modbus + Modbus.Net Modbus Implementation + Copyright 2017 Hangzhou Delian IoT Science Technology Co.,Ltd. + https://github.com/parallelbgls/Modbus.Net/blob/master/LICENSE.md + https://github.com/parallelbgls/Modbus.Net/tree/master/Modbus.Net/Modbus.Net.Modbus + https://github.com/parallelbgls/Modbus.Net + git + hardware communicate protocal modbus Delian + False + True + True + True + + + + bin\Debug\netstandard2.0\Modbus.Net.Modbus.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj b/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj index 0a9cd54..7995b56 100644 --- a/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj +++ b/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj @@ -5,7 +5,7 @@ Modbus.Net.Modbus Modbus.Net.Modbus Modbus.Net.Modbus - 1.3.9 + 1.3.10 Chris L.(Luo Sheng) Hangzhou Delian IoT Science Technology Co.,Ltd. Modbus.Net.Modbus @@ -30,11 +30,30 @@ + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj b/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj index b44303a..470e1ab 100644 --- a/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj +++ b/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj @@ -5,7 +5,7 @@ Modbus.Net.OPC Modbus.Net.OPC Modbus.Net.OPC - 1.3.9 + 1.3.10 Chris L.(Luo Sheng) Hangzhou Delian IoT Science Technology Co.,Ltd. Modbus.Net OPC Implementation @@ -27,7 +27,7 @@ - + diff --git a/Modbus.Net/Modbus.Net.Siemens.Core/Modbus.Net.Siemens.Core.csproj b/Modbus.Net/Modbus.Net.Siemens.Core/Modbus.Net.Siemens.Core.csproj new file mode 100644 index 0000000..0cca534 --- /dev/null +++ b/Modbus.Net/Modbus.Net.Siemens.Core/Modbus.Net.Siemens.Core.csproj @@ -0,0 +1,49 @@ + + + + netstandard2.0 + Modbus.Net.Siemens.Core + Modbus.Net.Siemens + Modbus.Net.Siemens.Core + 1.3.10 + Chris L.(Luo Sheng) + Hangzhou Delian IoT Science Technology Co.,Ltd. + Modbus.Net Siemens Profinet Implementation + Copyright 2017 Hangzhou Delian IoT Science Technology Co.,Ltd. + https://github.com/parallelbgls/Modbus.Net/blob/master/LICENSE.md + https://github.com/parallelbgls/Modbus.Net/tree/master/Modbus.Net/Modbus.Net.Siemens + https://github.com/parallelbgls/Modbus.Net + git + hardware communicate protocal Siemens profinet Delian + False + True + True + True + + + + bin\Debug\netstandard2.0\Modbus.Net.Siemens.xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj b/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj index 13cf6d5..3df61f7 100644 --- a/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj +++ b/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj @@ -5,7 +5,7 @@ Modbus.Net.Siemens Modbus.Net.Siemens Modbus.Net.Siemens - 1.3.9 + 1.3.10 Chris L.(Luo Sheng) Hangzhou Delian IoT Science Technology Co.,Ltd. Modbus.Net Siemens Profinet Implementation @@ -25,6 +25,19 @@ bin\Debug\net45\Modbus.Net.Siemens.xml + + + + + + + + + + + + + diff --git a/Modbus.Net/Modbus.Net.sln b/Modbus.Net/Modbus.Net.sln index 945766a..039d138 100644 --- a/Modbus.Net/Modbus.Net.sln +++ b/Modbus.Net/Modbus.Net.sln @@ -1,20 +1,20 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26430.6 +VisualStudioVersion = 15.0.26730.16 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net", "Modbus.Net\Modbus.Net.csproj", "{124EBEF2-8960-4447-84CF-1D683B1EF7CC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modbus.Net", "Modbus.Net\Modbus.Net.csproj", "{124EBEF2-8960-4447-84CF-1D683B1EF7CC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{64472271-8B95-4036-ACF9-C10941C1DB0A}" ProjectSection(SolutionItems) = preProject ..\README.md = ..\README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.Modbus", "Modbus.Net.Modbus\Modbus.Net.Modbus.csproj", "{FDCA72BA-6D06-4DE0-B873-C11C4AC853AD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modbus.Net.Modbus", "Modbus.Net.Modbus\Modbus.Net.Modbus.csproj", "{FDCA72BA-6D06-4DE0-B873-C11C4AC853AD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.Siemens", "Modbus.Net.Siemens\Modbus.Net.Siemens.csproj", "{6258F9D9-0DF4-497F-9F3B-6D2F6F752A21}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modbus.Net.Siemens", "Modbus.Net.Siemens\Modbus.Net.Siemens.csproj", "{6258F9D9-0DF4-497F-9F3B-6D2F6F752A21}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.OPC", "Modbus.Net.OPC\Modbus.Net.OPC.csproj", "{97F5A329-357A-4813-BAAE-58E71CC6FA87}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modbus.Net.OPC", "Modbus.Net.OPC\Modbus.Net.OPC.csproj", "{97F5A329-357A-4813-BAAE-58E71CC6FA87}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{145DA93A-6768-4D98-8512-AB22339933F7}" EndProject @@ -30,7 +30,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrossLamp", "..\Samples\Cro EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnyType", "..\Samples\AnyType\AnyType.csproj", "{25FABD48-D82E-4E08-91A4-46F7057EC954}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.Core", "Modbus.Net.Core\Modbus.Net.Core.csproj", "{BBC091FC-A995-4C06-96F1-F91ECD70FA7E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modbus.Net.Core", "Modbus.Net.Core\Modbus.Net.Core.csproj", "{BBC091FC-A995-4C06-96F1-F91ECD70FA7E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.Modbus.Core", "Modbus.Net.Modbus.Core\Modbus.Net.Modbus.Core.csproj", "{71BF9248-B261-4C93-A039-FFA4D55A4A26}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus.Net.Siemens.Core", "Modbus.Net.Siemens.Core\Modbus.Net.Siemens.Core.csproj", "{84071437-A569-4AAE-BA44-732138AC010E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -78,6 +82,14 @@ Global {BBC091FC-A995-4C06-96F1-F91ECD70FA7E}.Debug|Any CPU.Build.0 = Debug|Any CPU {BBC091FC-A995-4C06-96F1-F91ECD70FA7E}.Release|Any CPU.ActiveCfg = Release|Any CPU {BBC091FC-A995-4C06-96F1-F91ECD70FA7E}.Release|Any CPU.Build.0 = Release|Any CPU + {71BF9248-B261-4C93-A039-FFA4D55A4A26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {71BF9248-B261-4C93-A039-FFA4D55A4A26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {71BF9248-B261-4C93-A039-FFA4D55A4A26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {71BF9248-B261-4C93-A039-FFA4D55A4A26}.Release|Any CPU.Build.0 = Release|Any CPU + {84071437-A569-4AAE-BA44-732138AC010E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84071437-A569-4AAE-BA44-732138AC010E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84071437-A569-4AAE-BA44-732138AC010E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84071437-A569-4AAE-BA44-732138AC010E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -89,4 +101,7 @@ Global {41F40C27-AB1A-4153-BBAD-BFC7BD57B380} = {145DA93A-6768-4D98-8512-AB22339933F7} {25FABD48-D82E-4E08-91A4-46F7057EC954} = {145DA93A-6768-4D98-8512-AB22339933F7} EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AF00D64E-3C70-474A-8A81-E9E48017C4B5} + EndGlobalSection EndGlobal diff --git a/Modbus.Net/Modbus.Net/Modbus.Net.csproj b/Modbus.Net/Modbus.Net/Modbus.Net.csproj index d0395eb..93420da 100644 --- a/Modbus.Net/Modbus.Net/Modbus.Net.csproj +++ b/Modbus.Net/Modbus.Net/Modbus.Net.csproj @@ -5,7 +5,7 @@ Modbus.Net Modbus.Net Modbus.Net - 1.3.9 + 1.3.10 Modbus.Net Chris L.(Luo Sheng) Hangzhou Delian IoT Science Technology Co.,Ltd. @@ -50,23 +50,18 @@ - + + - + - - - Component - - - \ No newline at end of file diff --git a/Modbus.Net/src/Base.Common/BaseMachine.cs b/Modbus.Net/src/Base.Common/BaseMachine.cs index 8d08945..84c52aa 100644 --- a/Modbus.Net/src/Base.Common/BaseMachine.cs +++ b/Modbus.Net/src/Base.Common/BaseMachine.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reflection; using System.Threading.Tasks; using Serilog; diff --git a/Modbus.Net/Modbus.Net/ComConnector.cs b/Modbus.Net/src/Base.Common/ComConnector.cs similarity index 100% rename from Modbus.Net/Modbus.Net/ComConnector.cs rename to Modbus.Net/src/Base.Common/ComConnector.cs diff --git a/Modbus.Net/Modbus.Net/ComProtocalLinker.cs b/Modbus.Net/src/Base.Common/ComProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net/ComProtocalLinker.cs rename to Modbus.Net/src/Base.Common/ComProtocalLinker.cs diff --git a/Modbus.Net/src/Base.Common/ModBus.Net.nuspec b/Modbus.Net/src/Base.Common/ModBus.Net.nuspec deleted file mode 100644 index e2680e0..0000000 --- a/Modbus.Net/src/Base.Common/ModBus.Net.nuspec +++ /dev/null @@ -1,19 +0,0 @@ - - - - Modbus.Net - 1.2.4 - Modbus.Net - Chris L.(Luo Sheng) - Hangzhou Delian IoT Science Technology Co.,Ltd. - https://github.com/parallelbgls/Modbus.Net/blob/master/LICENSE.md - https://github.com/parallelbgls/Modbus.Net/tree/master/Modbus.Net - false - High extensible hardware communication implementation platform - Copyright 2017 Hangzhou Delian IoT Science Technology Co.,Ltd. - hardware communicate protocal Delian - - - - - \ No newline at end of file diff --git a/Modbus.Net/src/Base.Common/TaskManager.cs b/Modbus.Net/src/Base.Common/TaskManager.cs index 3ee6be2..d47a530 100644 --- a/Modbus.Net/src/Base.Common/TaskManager.cs +++ b/Modbus.Net/src/Base.Common/TaskManager.cs @@ -8,7 +8,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using Nito.AsyncEx; using Serilog; namespace Modbus.Net @@ -108,11 +107,7 @@ namespace Modbus.Net /// private void NotifyThreadPoolOfPendingWork() { -#if NET40 || NET45 || NET451 || NET452 || NET46 || NET461 || NET462 || NET47 ThreadPool.UnsafeQueueUserWorkItem(_ => -#else - ThreadPool.QueueUserWorkItem(_ => -#endif { // Note that the current thread is now processing work items. // This is necessary to enable inlining of tasks into this thread. diff --git a/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs b/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs index 17b7c91..057895e 100644 --- a/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs +++ b/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs @@ -1,7 +1,4 @@ -#if NET40||NET45||NET451||NET452||NET46||NET461||NET462||NET47 -using System.Configuration; - -#endif +using System.Configuration; namespace Modbus.Net { diff --git a/Modbus.Net/Modbus.Net.Modbus/AddressFormaterModbus.cs b/Modbus.Net/src/Modbus.Common/AddressFormaterModbus.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/AddressFormaterModbus.cs rename to Modbus.Net/src/Modbus.Common/AddressFormaterModbus.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/AddressTranslatorModbus.cs b/Modbus.Net/src/Modbus.Common/AddressTranslatorModbus.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/AddressTranslatorModbus.cs rename to Modbus.Net/src/Modbus.Common/AddressTranslatorModbus.cs diff --git a/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocal.cs new file mode 100644 index 0000000..943a681 --- /dev/null +++ b/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocal.cs @@ -0,0 +1,48 @@ +using System.Configuration; + +namespace Modbus.Net.Modbus +{ + /// + /// Modbus/Ascii码协议 + /// + public class ModbusAsciiInTcpProtocal : ModbusProtocal + { + /// + /// 构造函数 + /// + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusAsciiInTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian) + : this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian) + { + } + + /// + /// 构造函数 + /// + /// 串口地址 + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusAsciiInTcpProtocal(string ip, byte slaveAddress, byte masterAddress, Endian endian) + : base(slaveAddress, masterAddress, endian) + { + ProtocalLinker = new ModbusAsciiInTcpProtocalLinker(ip, slaveAddress); + } + + /// + /// 构造函数 + /// + /// ip地址 + /// 端口 + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusAsciiInTcpProtocal(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian) + : base(slaveAddress, masterAddress, endian) + { + ProtocalLinker = new ModbusTcpProtocalLinker(ip, port); + } + } +} \ No newline at end of file diff --git a/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocalLinker.cs b/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocalLinker.cs new file mode 100644 index 0000000..a428838 --- /dev/null +++ b/Modbus.Net/src/Modbus.Common/ModbusAsciiInTcpProtocalLinker.cs @@ -0,0 +1,49 @@ +using System.Configuration; +using System.Text; + +namespace Modbus.Net.Modbus +{ + /// + /// Modbus/Ascii码协议连接器Tcp透传 + /// + public class ModbusAsciiInTcpProtocalLinker : TcpProtocalLinker + { + /// + /// 构造函数 + /// + /// IP地址 + public ModbusAsciiInTcpProtocalLinker(string ip) + : base(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"] ?? "502")) + { + } + + /// + /// 构造函数 + /// + /// ip地址 + /// 端口号 + public ModbusAsciiInTcpProtocalLinker(string ip, int port) + : base(ip, port) + { + } + + /// + /// 校验返回数据是否正确 + /// + /// 返回的数据 + /// 校验是否正确 + public override bool? CheckRight(byte[] content) + { + //ProtocalLinker不会返回null + if (!base.CheckRight(content).Value) return false; + //CRC校验失败 + var contentString = Encoding.ASCII.GetString(content); + if (!Crc16.GetInstance().LrcEfficacy(contentString)) + throw new ModbusProtocalErrorException(501); + //Modbus协议错误 + if (byte.Parse(contentString.Substring(3, 2)) > 127) + throw new ModbusProtocalErrorException(byte.Parse(contentString.Substring(5, 2))); + return true; + } + } +} \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusAsciiProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs rename to Modbus.Net/src/Modbus.Common/ModbusAsciiProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocalLinker.cs b/Modbus.Net/src/Modbus.Common/ModbusAsciiProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocalLinker.cs rename to Modbus.Net/src/Modbus.Common/ModbusAsciiProtocalLinker.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusMachine.cs b/Modbus.Net/src/Modbus.Common/ModbusMachine.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusMachine.cs rename to Modbus.Net/src/Modbus.Common/ModbusMachine.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusProtocal.cs rename to Modbus.Net/src/Modbus.Common/ModbusProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusProtocalLinkerBytesExtend.cs b/Modbus.Net/src/Modbus.Common/ModbusProtocalLinkerBytesExtend.cs similarity index 95% rename from Modbus.Net/Modbus.Net.Modbus/ModbusProtocalLinkerBytesExtend.cs rename to Modbus.Net/src/Modbus.Common/ModbusProtocalLinkerBytesExtend.cs index 83a9cca..7796252 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusProtocalLinkerBytesExtend.cs +++ b/Modbus.Net/src/Modbus.Common/ModbusProtocalLinkerBytesExtend.cs @@ -5,6 +5,16 @@ using System.Text; namespace Modbus.Net.Modbus { + public class ModbusRtuInTcpProtocalLinkerBytesExtend : ModbusRtuProtocalLinkerBytesExtend + { + + } + + public class ModbusAsciiInTcpProtocalLinkerBytesExtend : ModbusAsciiProtocalLinkerBytesExtend + { + + } + /// /// Tcp协议字节伸缩 /// diff --git a/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocal.cs new file mode 100644 index 0000000..07cb907 --- /dev/null +++ b/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocal.cs @@ -0,0 +1,48 @@ +using System.Configuration; + + +namespace Modbus.Net.Modbus +{ + /// + /// Modbus/Rtu协议tcp透传 + /// + public class ModbusRtuInTcpProtocal : ModbusProtocal + { + /// + /// 构造函数 + /// + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusRtuInTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian) + : this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian) + { + } + + /// + /// 构造函数 + /// + /// ip地址 + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusRtuInTcpProtocal(string ip, byte slaveAddress, byte masterAddress, Endian endian) + : base(slaveAddress, masterAddress, endian) + { + ProtocalLinker = new ModbusTcpProtocalLinker(ip); + } + + /// + /// 构造函数 + /// + /// 串口 + /// 从站号 + /// 主站号 + /// 端格式 + public ModbusRtuInTcpProtocal(string ip, int port, byte slaveAddress, byte masterAddress, Endian endian) + : base(slaveAddress, masterAddress, endian) + { + ProtocalLinker = new ModbusRtuInTcpProtocalLinker(ip, port); + } + } +} \ No newline at end of file diff --git a/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocalLinker.cs b/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocalLinker.cs new file mode 100644 index 0000000..264e035 --- /dev/null +++ b/Modbus.Net/src/Modbus.Common/ModbusRtuInTcpProtocalLinker.cs @@ -0,0 +1,47 @@ +using System.Configuration; + +namespace Modbus.Net.Modbus +{ + /// + /// Modbus/Rtu协议连接器 + /// + public class ModbusRtuInTcpProtocalLinker : TcpProtocalLinker + { + /// + /// 构造函数 + /// + /// IP地址 + public ModbusRtuInTcpProtocalLinker(string ip) + : base(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"] ?? "502")) + { + } + + /// + /// 构造函数 + /// + /// IP地址 + /// 端口号 + public ModbusRtuInTcpProtocalLinker(string ip, int port) + : base(ip, port) + { + } + + /// + /// 校验返回数据 + /// + /// 设备返回的数据 + /// 数据是否正确 + public override bool? CheckRight(byte[] content) + { + //ProtocalLinker的CheckRight不会返回null + if (!base.CheckRight(content).Value) return false; + //CRC校验失败 + if (!Crc16.GetInstance().CrcEfficacy(content)) + throw new ModbusProtocalErrorException(501); + //Modbus协议错误 + if (content[1] > 127) + throw new ModbusProtocalErrorException(content[2]); + return true; + } + } +} \ No newline at end of file diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusRtuProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs rename to Modbus.Net/src/Modbus.Common/ModbusRtuProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocalLinker.cs b/Modbus.Net/src/Modbus.Common/ModbusRtuProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocalLinker.cs rename to Modbus.Net/src/Modbus.Common/ModbusRtuProtocalLinker.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs b/Modbus.Net/src/Modbus.Common/ModbusTcpProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs rename to Modbus.Net/src/Modbus.Common/ModbusTcpProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs b/Modbus.Net/src/Modbus.Common/ModbusTcpProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs rename to Modbus.Net/src/Modbus.Common/ModbusTcpProtocalLinker.cs diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusUtility.cs b/Modbus.Net/src/Modbus.Common/ModbusUtility.cs similarity index 90% rename from Modbus.Net/Modbus.Net.Modbus/ModbusUtility.cs rename to Modbus.Net/src/Modbus.Common/ModbusUtility.cs index 7180119..20f143f 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusUtility.cs +++ b/Modbus.Net/src/Modbus.Common/ModbusUtility.cs @@ -22,7 +22,17 @@ namespace Modbus.Net.Modbus /// /// Ascii连接 /// - Ascii = 2 + Ascii = 2, + + /// + /// Rtu连接Tcp透传 + /// + RtuInTcp = 3, + + /// + /// Ascii连接Tcp透传 + /// + AsciiInTcp = 4, } public interface IUtilityMethodWriteSingle : IUtilityMethod @@ -158,6 +168,22 @@ namespace Modbus.Net.Modbus : new ModbusAsciiProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian); break; } + //Rtu协议 + case ModbusType.RtuInTcp: + { + Wrapper = ConnectionString == null + ? new ModbusRtuInTcpProtocal(SlaveAddress, MasterAddress, Endian) + : new ModbusRtuInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian); + break; + } + //Ascii协议 + case ModbusType.AsciiInTcp: + { + Wrapper = ConnectionString == null + ? new ModbusAsciiInTcpProtocal(SlaveAddress, MasterAddress, Endian) + : new ModbusAsciiInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian); + break; + } } } } diff --git a/Modbus.Net/Modbus.Net.Siemens/AddressFormaterSiemens.cs b/Modbus.Net/src/Siemens.Common/AddressFormaterSiemens.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/AddressFormaterSiemens.cs rename to Modbus.Net/src/Siemens.Common/AddressFormaterSiemens.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/AddressTranslatorSiemens.cs b/Modbus.Net/src/Siemens.Common/AddressTranslatorSiemens.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/AddressTranslatorSiemens.cs rename to Modbus.Net/src/Siemens.Common/AddressTranslatorSiemens.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensMachine.cs b/Modbus.Net/src/Siemens.Common/SiemensMachine.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensMachine.cs rename to Modbus.Net/src/Siemens.Common/SiemensMachine.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs b/Modbus.Net/src/Siemens.Common/SiemensPpiProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs rename to Modbus.Net/src/Siemens.Common/SiemensPpiProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocalLinker.cs b/Modbus.Net/src/Siemens.Common/SiemensPpiProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocalLinker.cs rename to Modbus.Net/src/Siemens.Common/SiemensPpiProtocalLinker.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs b/Modbus.Net/src/Siemens.Common/SiemensProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensProtocal.cs rename to Modbus.Net/src/Siemens.Common/SiemensProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensProtocalLinkerBytesExtend.cs b/Modbus.Net/src/Siemens.Common/SiemensProtocalLinkerBytesExtend.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensProtocalLinkerBytesExtend.cs rename to Modbus.Net/src/Siemens.Common/SiemensProtocalLinkerBytesExtend.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensStructDefinition.cs b/Modbus.Net/src/Siemens.Common/SiemensStructDefinition.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensStructDefinition.cs rename to Modbus.Net/src/Siemens.Common/SiemensStructDefinition.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs b/Modbus.Net/src/Siemens.Common/SiemensTcpProtocal.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs rename to Modbus.Net/src/Siemens.Common/SiemensTcpProtocal.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs b/Modbus.Net/src/Siemens.Common/SiemensTcpProtocalLinker.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs rename to Modbus.Net/src/Siemens.Common/SiemensTcpProtocalLinker.cs diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs b/Modbus.Net/src/Siemens.Common/SiemensUtility.cs similarity index 100% rename from Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs rename to Modbus.Net/src/Siemens.Common/SiemensUtility.cs From 43a2ecd43b9897f0438712b8a2ac96acafa0e044 Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Tue, 26 Sep 2017 11:14:52 +0800 Subject: [PATCH 2/3] Update Readme.md --- README.md | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4cef080..c4f2119 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Platform Supported ------------------- * Visual Studio 2017 * .NET Framework 4.5 -* .NET Standard 1.3 +* .NET Standard 2.0 Thanks ------------------- @@ -96,16 +96,36 @@ RoadMap * Github wiki Document Chinese (Complete) * Github wiki Document English (Complete) +### Version 1.3.10 +* Update to .Net Standard 2.0 (Complete) + ### Version 1.4.0 -* BaseController (In Road) -* New ComConnector (In Road) -* Serial Port Connection with Multiple Master Station (In Road) +* New Protocal Pipeline System (Coding) ### Version 1.4.1 -* New Protocal Pipeline System (In Road) -* PPI Remake (In Road) +* BaseController (In Road) +* New ComConnector (In Road) +* New TcpConnector (In Road) +* New UdpConnector (In Road) +* Serial Port Connection with Multiple Master Station (In Road) ### Version 1.4.2 +* PPI Remake (In Road) * Siemens MPI Support (In Road) * Siemens MultiStation PPI Support (In Road) +### Version 1.5.X +* Unite TransServer.Net into Modbus.Net (In Road) +* Passive Connector and Controller (In Road) +* Architechture rebuild (In Road) + +### Version 1.6.X +* English comment (In Road) +* ValueHelper remake to interface, users can add their own value translate function (In Road) +* New Zoom (In Road) + +### Version 2.0.0 +* Rename to Transport.Net (In Road) +* Puzzle System (In Road) +* Machine Builder (In Road) + From 0fd8871ee45cfe749eaa93bb98e618a7233357c5 Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Tue, 26 Sep 2017 11:26:58 +0800 Subject: [PATCH 3/3] Fix --- Modbus.Net/src/Modbus.Common/ModbusUtility.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Modbus.Net/src/Modbus.Common/ModbusUtility.cs b/Modbus.Net/src/Modbus.Common/ModbusUtility.cs index 20f143f..aaeb282 100644 --- a/Modbus.Net/src/Modbus.Common/ModbusUtility.cs +++ b/Modbus.Net/src/Modbus.Common/ModbusUtility.cs @@ -173,7 +173,10 @@ namespace Modbus.Net.Modbus { Wrapper = ConnectionString == null ? new ModbusRtuInTcpProtocal(SlaveAddress, MasterAddress, Endian) - : new ModbusRtuInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian); + : (ConnectionStringPort == null + ? new ModbusRtuInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian) + : new ModbusRtuInTcpProtocal(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress, + MasterAddress, Endian)); break; } //Ascii协议 @@ -181,7 +184,10 @@ namespace Modbus.Net.Modbus { Wrapper = ConnectionString == null ? new ModbusAsciiInTcpProtocal(SlaveAddress, MasterAddress, Endian) - : new ModbusAsciiInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian); + : (ConnectionStringPort == null + ? new ModbusAsciiInTcpProtocal(ConnectionString, SlaveAddress, MasterAddress, Endian) + : new ModbusAsciiInTcpProtocal(ConnectionStringIp, ConnectionStringPort.Value, SlaveAddress, + MasterAddress, Endian)); break; } }