CommonMessurementUnits

This commit is contained in:
Stoyan Zlatev 2023-08-25 15:23:57 +02:00
parent f02f9223ab
commit 56bd35d9a2
29 changed files with 1102 additions and 3 deletions

View File

@ -155,7 +155,7 @@
</site>
<site name="MeterProcessState" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="D:\Projekte\SENSUS_GitLab\laa_production\Common\Service\MeterProcessState" />
<virtualDirectory path="/" physicalPath="C:\Users\SZLATEV\source\repos\laa_production\Common\Service\MeterProcessState" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:56011:localhost" />

View File

@ -183,6 +183,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SIRT", "SIRT", "{AF973E0E-2
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SIRTBroadcaster.Host", "SIRTBroadcaster.Host\SIRTBroadcaster.Host.csproj", "{A9D1A99D-6E55-4394-86AD-B5C53E9225EB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaaProduction", "LaaProduction\LaaProduction.csproj", "{FD30EB7A-7809-4E62-9374-791D31877D6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonMessurementUnits", "CommonMessurementUnits\CommonMessurementUnits.csproj", "{17C15B79-9A9E-4079-8FE2-0E563F18CA01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonConsole", "CommonConsole\CommonConsole.csproj", "{AFC428F5-0141-4A3F-BEF2-470A89D972F6}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
Utils\DateTimeServerShared\DateTimeServerShared.projitems*{4806d89a-fbfb-41bc-aaa7-2242444bf55a}*SharedItemsImports = 4
@ -4249,6 +4255,198 @@ Global
{A9D1A99D-6E55-4394-86AD-B5C53E9225EB}.XP32bit|x64.Build.0 = Release|Any CPU
{A9D1A99D-6E55-4394-86AD-B5C53E9225EB}.XP32bit|x86.ActiveCfg = Release|Any CPU
{A9D1A99D-6E55-4394-86AD-B5C53E9225EB}.XP32bit|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.COM|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|x64.ActiveCfg = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|x64.Build.0 = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|x86.ActiveCfg = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Debug|x86.Build.0 = Debug|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.PerformTest|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.Release|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.ReleaseTest|x86.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|x64.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|x64.Build.0 = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|x86.ActiveCfg = Release|Any CPU
{FD30EB7A-7809-4E62-9374-791D31877D6D}.XP32bit|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.COM|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|x64.ActiveCfg = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|x64.Build.0 = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|x86.ActiveCfg = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Debug|x86.Build.0 = Debug|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.PerformTest|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.Release|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.ReleaseTest|x86.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|x64.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|x64.Build.0 = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|x86.ActiveCfg = Release|Any CPU
{17C15B79-9A9E-4079-8FE2-0E563F18CA01}.XP32bit|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.COM|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|x64.ActiveCfg = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|x64.Build.0 = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|x86.ActiveCfg = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Debug|x86.Build.0 = Debug|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.PerformTest|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.Release|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.ReleaseTest|x86.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|x64.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|x64.Build.0 = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|x86.ActiveCfg = Release|Any CPU
{AFC428F5-0141-4A3F-BEF2-470A89D972F6}.XP32bit|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -4332,6 +4530,9 @@ Global
{4221F992-599E-498C-A409-6D1E70E0A6F9} = {AF973E0E-2B44-4F1A-B1E7-77C8B4F30579}
{AF973E0E-2B44-4F1A-B1E7-77C8B4F30579} = {99B23EE9-CE50-4924-A055-C39EFA038721}
{A9D1A99D-6E55-4394-86AD-B5C53E9225EB} = {AF973E0E-2B44-4F1A-B1E7-77C8B4F30579}
{FD30EB7A-7809-4E62-9374-791D31877D6D} = {696A94BE-7237-4AE2-9E36-6059DE519971}
{17C15B79-9A9E-4079-8FE2-0E563F18CA01} = {C17363DF-A043-4F25-8EBA-2B3B078227DC}
{AFC428F5-0141-4A3F-BEF2-470A89D972F6} = {C17363DF-A043-4F25-8EBA-2B3B078227DC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8.1" />
</startup>
</configuration>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{AFC428F5-0141-4A3F-BEF2-470A89D972F6}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>CommonConsole</RootNamespace>
<AssemblyName>CommonConsole</AssemblyName>
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CommonMessurementUnits\CommonMessurementUnits.csproj">
<Project>{17C15B79-9A9E-4079-8FE2-0E563F18CA01}</Project>
<Name>CommonMessurementUnits</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,51 @@
namespace CommonConsole
{
using CommonMessurementUnits;
using System;
public class Program
{
public static void Main(string[] args)
{
int x = 3;
byte[] xb = x.GetBytes();
Console.WriteLine(string.Join("", xb.GetBits()));
Console.WriteLine(xb.ToHex());
long y = BitConverter.ToInt32(xb, 0);
Console.WriteLine(y);
//var model = new TestClass
//{
// Flow = 1,
// Time = 15.56,
// Volume = 40,
// Pressure = 250000,
// Current = 130,
// Temperature = 21.9
//};
//var modelJson = JsonConvert.SerializeObject(model, Formatting.Indented);
//var testModel = JsonConvert.DeserializeObject<TestClass>(modelJson);
//Console.WriteLine(modelJson);
//Console.WriteLine(JsonConvert.SerializeObject(testModel, Formatting.Indented));
}
}
public class TestClass
{
public Current Current { get; set; }
public Flow Flow { get; set; }
public Pressure Pressure { get; set; }
public Temperature Temperature { get; set; }
public Time Time { get; set; }
public Volume Volume { get; set; }
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CommonConsole")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CommonConsole")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("afc428f5-0141-4a3f-bef2-470a89d972f6")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net481" />
</packages>

View File

@ -0,0 +1,31 @@
namespace CommonMessurementUnits
{
public abstract class Base
{
public const int MsInSec = 1000;
public const int SecInMin = 60;
public const int MinInH = 60;
public const int HInDay = 24;
public const int MlInL = 1000;
public const int LInm3 = 1000;
public const int PInBar = 100000;
public const int MAInH = 1000;
protected double value;
public override string ToString()
=> this.value.ToString();
public override bool Equals(object obj)
=> this.value.Equals(obj);
public override int GetHashCode()
=> this.value.GetHashCode();
public static explicit operator double (Base @base)
=> @base?.value ?? default(double);
public static explicit operator double? (Base @base)
=> @base?.value;
}
}

View File

@ -0,0 +1,117 @@
namespace CommonMessurementUnits
{
using System;
using System.Linq;
using System.Text;
public static class BitExtensions
{
public static byte[] GetBits(this byte[] bytes)
{
if (bytes is null)
{
return Array.Empty<byte>();
}
var bytesCount = bytes.Length;
var bitsCount = bytesCount * 8;
var bits = new byte[bitsCount];
var bit = 0;
foreach (var @byte in bytes)
{
for (int b = 7; b >= 0; b--)
{
bits[bit++] = (byte)((@byte >> b) % 2);
}
}
return bits;
}
public static byte[] GetBytes(this byte value, int take = 1)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this sbyte value, int take = 2)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this short value, int take = 2)
=> BitConverter.GetBytes(value).Take(2);
public static byte[] GetBytes(this ushort value, int take = 2)
=> BitConverter.GetBytes(value).Take(2);
public static byte[] GetBytes(this int value, int take = 4)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this uint value, int take = 4)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this long value, int take = 8)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this ulong value, int take = 8)
=> BitConverter.GetBytes(value).Take(take);
public static byte[] GetBytes(this double value)
=> BitConverter.GetBytes(value);
public static byte[] GetBytes(this string value)
=> Encoding.ASCII.GetBytes(value);
public static byte[] Swap(this byte[] bytes)
{
if (bytes is null)
{
return Array.Empty<byte>();
}
var length = bytes.Length;
var swapped = new byte[length];
for (int x = 0; x < length; x++)
{
swapped[x] = bytes[length - x - 1];
}
return swapped;
}
public static byte[] Take(this byte[] bytesSRC, int count)
{
if (bytesSRC is null || count < 0)
{
return Array.Empty<byte>();
}
var bytesDST = new byte[count];
Array.Copy(bytesSRC, 0, bytesDST, 0, count);
return bytesDST;
}
public static string ToHex(this byte[] value, string separator = " ")
{
if (value is null)
{
return string.Empty;
}
return BitConverter.ToString(value).Replace("-", separator);
}
public static byte[] FromHex(this string value, string separator = " ")
{
if (string.IsNullOrWhiteSpace(value))
{
return Array.Empty<byte>();
}
return value
.Split(new[] { separator }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => byte.TryParse(x, out byte b) ? b : default(byte))
.ToArray();
}
}
}

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{17C15B79-9A9E-4079-8FE2-0E563F18CA01}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CommonMessurementUnits</RootNamespace>
<AssemblyName>CommonMessurementUnits</AssemblyName>
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<Authors>Stoyan Zlatev</Authors>
<Company>Sensus - a Xylem brand</Company>
<Description>A lighter and better way to convert numbers in messurement units.</Description>
<Copyright>2023</Copyright>
<PackageProjectUrl>https://slm.sms-esaap.com/la_operations/laapackages/</PackageProjectUrl>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<Version>1.0.0</Version>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>CommonMessurementUnits.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Base.cs" />
<Compile Include="BitExtensions.cs" />
<Compile Include="Current.cs" />
<Compile Include="Flow.cs" />
<Compile Include="JsonConverters\CurrentConverter.cs" />
<Compile Include="JsonConverters\FlowConverter.cs" />
<Compile Include="JsonConverters\PressureConverter.cs" />
<Compile Include="JsonConverters\TemperatureConverter.cs" />
<Compile Include="JsonConverters\TimeConverter.cs" />
<Compile Include="JsonConverters\VolumeConverter.cs" />
<Compile Include="Pressure.cs" />
<Compile Include="Temperature.cs" />
<Compile Include="Volume.cs" />
<Compile Include="Time.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="CommonMessurementUnits.snk" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,28 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(CurrentConverter))]
public class Current : Base
{
public double MiliampereHours
{
get => this.AmpereHours * MAInH;
set => this.AmpereHours = value / MAInH;
}
public double AmpereHours
{
get => this.value;
set => this.value = value;
}
public static implicit operator Current(double x)
=> new Current { value = x };
public static implicit operator Current(double? x)
=> new Current { value = x ?? 0 };
}
}

View File

@ -0,0 +1,28 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(FlowConverter))]
public class Flow : Base
{
public double CubicMeterInHour
{
get => this.value;
set => this.value = value;
}
public double LiterInMinute
{
get => this.CubicMeterInHour / MinInH * LInm3;
set => this.CubicMeterInHour = value * MinInH / LInm3;
}
public static implicit operator Flow(double x)
=> new Flow { value = x };
public static implicit operator Flow(double? x)
=> new Flow { value = x ?? 0 };
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using Newtonsoft.Json;
using System;
public class CurrentConverter : JsonConverter<Current>
{
public override Current ReadJson(JsonReader reader, Type objectType, Current existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Current value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using Newtonsoft.Json;
using System;
public class FlowConverter : JsonConverter<Flow>
{
public override Flow ReadJson(JsonReader reader, Type objectType, Flow existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Flow value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using System;
using Newtonsoft.Json;
public class PressureConverter : JsonConverter<Pressure>
{
public override Pressure ReadJson(JsonReader reader, Type objectType, Pressure existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Pressure value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using Newtonsoft.Json;
using System;
public class TemperatureConverter : JsonConverter<Temperature>
{
public override Temperature ReadJson(JsonReader reader, Type objectType, Temperature existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Temperature value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using System;
using Newtonsoft.Json;
public class TimeConverter : JsonConverter<Time>
{
public override Time ReadJson(JsonReader reader, Type objectType, Time existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Time value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,27 @@
namespace CommonMessurementUnits.JsonConverters
{
using System;
using Newtonsoft.Json;
public class VolumeConverter : JsonConverter<Volume>
{
public override Volume ReadJson(JsonReader reader, Type objectType, Volume existingValue, bool hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return existingValue;
}
public override void WriteJson(JsonWriter writer, Volume value, JsonSerializer serializer)
=> writer.WriteValue((double)value);
}
}

View File

@ -0,0 +1,28 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(PressureConverter))]
public class Pressure : Base
{
public double Pascal
{
get => this.value;
set => this.value = value;
}
public double Bar
{
get => this.Pascal / PInBar;
set => this.Pascal = value * PInBar;
}
public static implicit operator Pressure(double x)
=> new Pressure { value = x };
public static implicit operator Pressure(double? x)
=> new Pressure { value = x ?? 0 };
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CommonMessurementUnits")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CommonMessurementUnits")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("17c15b79-9a9e-4079-8fe2-0e563f18ca01")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,22 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(TemperatureConverter))]
public class Temperature : Base
{
public double Celsius
{
get => this.value;
set => this.value = value;
}
public static implicit operator Temperature(double x)
=> new Temperature { value = x };
public static implicit operator Temperature(double? x)
=> new Temperature { value = x ?? 0 };
}
}

View File

@ -0,0 +1,46 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(TimeConverter))]
public class Time : Base
{
public double Miliseconds
{
get => this.Seconds * MsInSec;
set => this.Seconds = value / MsInSec;
}
public double Seconds
{
get => this.value;
set => this.value = value;
}
public double Minutes
{
get => this.Seconds / SecInMin;
set => this.Seconds = value * SecInMin;
}
public double Hours
{
get => this.Minutes / MinInH;
set => this.Minutes = value * MinInH;
}
public double Days
{
get => this.Hours / HInDay;
set => this.Hours = value * HInDay;
}
public static implicit operator Time(double x)
=> new Time { value = x };
public static implicit operator Time(double? x)
=> new Time { value = x ?? 0 };
}
}

View File

@ -0,0 +1,34 @@
namespace CommonMessurementUnits
{
using CommonMessurementUnits.JsonConverters;
using Newtonsoft.Json;
[JsonConverter(typeof(VolumeConverter))]
public class Volume : Base
{
public double Mililiter
{
get => this.Liter * MlInL;
set => this.Liter = value / MlInL;
}
public double Liter
{
get => this.value * LInm3;
set => this.value = value / LInm3;
}
public double CubicMeter
{
get => this.value;
set => this.value = value;
}
public static implicit operator Volume(double x)
=> new Volume { value = x };
public static implicit operator Volume(double? x)
=> new Volume { value = x ?? 0 };
}
}

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net481" />
</packages>

View File

@ -0,0 +1,79 @@
namespace LaaProduction
{
using Newtonsoft.Json;
using System;
[JsonConverter(typeof(TimeJsonConverter))]
public class Time
{
public double Seconds { get; set; }
public double Minutes
{
get => this.Seconds / 60;
set => this.Seconds = value * 60;
}
public double Hours
{
get => this.Minutes / 60;
set => this.Minutes = value * 60;
}
public static implicit operator double(Time time)
=> time.Seconds;
public static implicit operator Time(double miliseconds)
=> new Time { Seconds = miliseconds };
public static implicit operator byte[](Time time)
=> BitConverter.GetBytes(time.Seconds);
public static implicit operator Time (byte[] bytes)
=> BitConverter.ToDouble(bytes, 0);
}
public class TimeJsonConverter : JsonConverter<Time>
{
public override bool CanRead => true;
public override bool CanWrite => true;
public override Time ReadJson(JsonReader reader, Type objectType, Time existingValue, Boolean hasExistingValue, JsonSerializer serializer)
{
while (reader.ValueType != typeof(double))
{
reader.Read();
}
if (reader.Value is double value)
{
return value;
}
return default(double);
}
public override void WriteJson(JsonWriter writer, Time value, JsonSerializer serializer)
{
writer.WriteValue(value?.Seconds);
}
//public override bool CanConvert(Type objectType)
// => objectType == typeof(Time) || objectType == typeof(double);
//public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
//{
// throw new NotImplementedException();
//}
//public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
//{
// if (value is Time time)
// {
// writer.WriteValue(time.Seconds);
// }
//}
}
}

View File

@ -5,7 +5,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{FD30EB7A-7809-4E62-9374-791D31877D6D}</ProjectGuid>
<OutputType>Library</OutputType>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LaaProduction</RootNamespace>
<AssemblyName>LaaProduction</AssemblyName>
@ -52,6 +52,7 @@
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Compile Include="Einheiten.cs" />
<Compile Include="Equipment.cs" />
<Compile Include="Extensions.cs" />
<Compile Include="LoginModel.cs" />

View File

@ -1,4 +1,6 @@
namespace LaaProduction
using Newtonsoft.Json;
namespace LaaProduction
{
//class Programm
//{
@ -10,4 +12,43 @@
// var requestQAP = api.SendQAPReady(0, 0);
// }
//}
public class Model
{
public Time A { get; set; } = 200;
public Time B { get; set; } = 400;
public Time C { get; set; } = 600;
}
public class Programm
{
static void Main()
{
Time time = new byte[] { 0x00, 0x01 };
byte[] x = time;
System.Console.WriteLine($"Double seconds: 960.0sec");
System.Console.WriteLine($"Time in seconds: {time.Seconds:f2}");
System.Console.WriteLine($"Time in minutes: {time.Minutes:f2}");
System.Console.WriteLine($"Time in hours: {time.Hours:f2}");
var hours = time.Hours;
time = hours * 60 * 60;
System.Console.WriteLine($"Double hours: {hours:f2}h");
System.Console.WriteLine($"Time in hours: {time.Hours:f2}");
System.Console.WriteLine($"Time in minutes: {time.Minutes:f2}");
System.Console.WriteLine($"Time in seconds: {time.Seconds:f2}");
System.Console.WriteLine("===================================================================");
var model = new Model();
var toJson = JsonConvert.SerializeObject(model, Formatting.Indented);
System.Console.WriteLine($"Time to JSON: {toJson}");
var fromJson = JsonConvert.DeserializeObject<Time>(toJson);
System.Console.WriteLine($"Time to JSON: {fromJson}");
}
}
}

View File

@ -18,6 +18,7 @@
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>True</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
<WebStackScaffolding_LayoutPageFile />
<WebStackScaffolding_IsAsyncSelected>False</WebStackScaffolding_IsAsyncSelected>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>