Merge remote-tracking branch 'origin/Dev_MagFlux'

This commit is contained in:
Roland Drabesch
2023-05-08 14:49:41 +02:00
111 changed files with 6161 additions and 659 deletions
+468 -133
View File
@@ -73,8 +73,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestProtocol", "Hardware
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "Hardware\WaterMeter\Genesis\Protocols\StreamingProtocol\StreamingProtocol.csproj", "{29617814-313E-409E-AA5D-59C78A9D4DF1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtocolCore", "Hardware\WaterMeter\Genesis\Protocols\ProtocolCore\ProtocolCore.csproj", "{8BDD2789-96D4-43EA-AAD7-0F49D0347998}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortCore", "Hardware\Interfaces\Ports\PortCore\PortCore.csproj", "{2E139F63-B6FE-4EA9-A098-85364FE9B26C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerialPorts", "Hardware\Interfaces\Ports\SerialPorts\SerialPorts.csproj", "{72037E89-4F63-4B3F-BEFF-4138E578CE99}"
@@ -161,7 +159,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MjkControlledCodeRef", "Mjk
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "modbus_master_csharp", "..\..\..\MJK\Code\C#\modbus_master_csharp\src\modbus_master_csharp\modbus_master_csharp.csproj", "{F14940F8-3C86-4BB7-A915-B021E4B3052D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxToolBox", "MagFluxToolBox\MagFluxToolBox.csproj", "{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxToolBox", "Ui\MagFluxToolBox\MagFluxToolBox.csproj", "{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxConfig", "Hardware\WaterMeter\MagFlux\MagFluxConfig\MagFluxConfig.csproj", "{70398B99-B134-4BBD-968B-7399B70C3CE2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxCore", "Hardware\WaterMeter\MagFlux\MagFluxCore\MagFluxCore.csproj", "{B5DA260C-71CC-45CA-B79E-D1B376AF718C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestProtocol", "Hardware\WaterMeter\MagFlux\Protocols\RequestProtocol\RequestProtocol.csproj", "{00748F11-4B49-4D8B-93C4-4A11A210CCE2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "Hardware\WaterMeter\MagFlux\Protocols\StreamingProtocol\StreamingProtocol.csproj", "{D6B81C60-2763-4C4D-989F-90822F53B01A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "Hardware\WaterMeter\MagFlux\DataPackages\DataPackages.csproj", "{BA17D20E-0CEB-4B27-9772-2392BD750ED5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtocolCore", "Hardware\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj", "{8BDD2789-96D4-43EA-AAD7-0F49D0347998}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
@@ -1223,70 +1233,6 @@ Global
{29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x64.Build.0 = XP32bit|x64
{29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x86.ActiveCfg = XP32bit|x86
{29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x86.Build.0 = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.ActiveCfg = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.Build.0 = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.ActiveCfg = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.Build.0 = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.ActiveCfg = Debug|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.Build.0 = Debug|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.ActiveCfg = Debug|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.Build.0 = Debug|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Any CPU.Build.0 = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x64.ActiveCfg = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x64.Build.0 = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x86.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x86.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.ActiveCfg = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.Build.0 = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.Build.0 = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.ActiveCfg = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.Build.0 = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.ActiveCfg = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.Build.0 = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.ActiveCfg = XP32bit|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.Build.0 = XP32bit|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.ActiveCfg = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.Build.0 = XP32bit|x86
{2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|Any CPU
@@ -3589,70 +3535,454 @@ Global
{F14940F8-3C86-4BB7-A915-B021E4B3052D}.XP32bit|x64.Build.0 = Release|Any CPU
{F14940F8-3C86-4BB7-A915-B021E4B3052D}.XP32bit|x86.ActiveCfg = Release|Any CPU
{F14940F8-3C86-4BB7-A915-B021E4B3052D}.XP32bit|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.COM|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|x64.ActiveCfg = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|x64.Build.0 = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|x86.ActiveCfg = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Debug|x86.Build.0 = Debug|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.PerformTest|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.Release|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.ReleaseTest|x86.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|x64.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|x64.Build.0 = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|x86.ActiveCfg = Release|Any CPU
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}.XP32bit|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.COM|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|x64.ActiveCfg = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|x64.Build.0 = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|x86.ActiveCfg = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Debug|x86.Build.0 = Debug|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.PerformTest|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.Release|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.ReleaseTest|x86.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|x64.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|x64.Build.0 = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|x86.ActiveCfg = Release|Any CPU
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}.XP32bit|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x64.ActiveCfg = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x64.Build.0 = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x86.ActiveCfg = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x86.Build.0 = Debug|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x86.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x64.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x64.Build.0 = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x86.ActiveCfg = Release|Any CPU
{70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x64.ActiveCfg = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x64.Build.0 = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x86.ActiveCfg = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x86.Build.0 = Debug|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x86.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x64.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x64.Build.0 = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.ActiveCfg = Release|Any CPU
{B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.ActiveCfg = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.Build.0 = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.ActiveCfg = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.Build.0 = Debug|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.Build.0 = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.ActiveCfg = Release|Any CPU
{00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.ActiveCfg = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.Build.0 = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.Build.0 = Debug|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.Build.0 = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.ActiveCfg = Release|Any CPU
{D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.Build.0 = Release|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.ActiveCfg = COM|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.Build.0 = COM|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.ActiveCfg = COM|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.Build.0 = COM|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.ActiveCfg = COM|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.Build.0 = COM|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.ActiveCfg = COM|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.Build.0 = COM|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.ActiveCfg = Debug|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.Build.0 = Debug|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.ActiveCfg = Debug|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.Build.0 = Debug|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|x64.ActiveCfg = _MANUAL_CONTROL|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|x64.Build.0 = _MANUAL_CONTROL|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|x86.ActiveCfg = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.GenesisDisplayTool_V01|x86.Build.0 = _MANUAL_CONTROL|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.ActiveCfg = PerformTest|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.Build.0 = PerformTest|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.ActiveCfg = PerformTest|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.Build.0 = PerformTest|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.Build.0 = Release|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.ActiveCfg = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.Build.0 = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.ActiveCfg = Release|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.Build.0 = Release|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.ActiveCfg = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.Build.0 = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.ActiveCfg = Release|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.Build.0 = Release|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.ActiveCfg = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.Build.0 = Release|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.ActiveCfg = XP32bit|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.Build.0 = XP32bit|x64
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.ActiveCfg = XP32bit|x86
{BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.Build.0 = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.ActiveCfg = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.Build.0 = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.ActiveCfg = Debug|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.Build.0 = Debug|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.ActiveCfg = Debug|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.Build.0 = Debug|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x64.ActiveCfg = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x64.Build.0 = _MANUAL_CONTROL|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x86.ActiveCfg = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.GenesisDisplayTool_V01|x86.Build.0 = _MANUAL_CONTROL|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.ActiveCfg = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.Build.0 = PerformTest|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.ActiveCfg = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.Build.0 = PerformTest|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.Build.0 = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.ActiveCfg = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.Build.0 = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.ActiveCfg = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.Build.0 = Release|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.ActiveCfg = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.Build.0 = Release|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.ActiveCfg = XP32bit|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.Build.0 = XP32bit|x64
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.ActiveCfg = XP32bit|x86
{8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.Build.0 = XP32bit|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -3684,7 +4014,6 @@ Global
{04201E95-90A0-4B73-A72F-379739B2A3AE} = {B5F43F61-4448-4992-85B5-7EDFB82FD643}
{D32ED790-7E1E-435B-8619-9F906C992066} = {45631019-6C25-429E-AD17-F7425E462CC8}
{29617814-313E-409E-AA5D-59C78A9D4DF1} = {45631019-6C25-429E-AD17-F7425E462CC8}
{8BDD2789-96D4-43EA-AAD7-0F49D0347998} = {45631019-6C25-429E-AD17-F7425E462CC8}
{2E139F63-B6FE-4EA9-A098-85364FE9B26C} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
{72037E89-4F63-4B3F-BEFF-4138E578CE99} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
{EC10DAFE-88CF-42D5-99E7-D247938B6430} = {B98D02A6-6AE6-4736-BAA0-E53B0653B2D4}
@@ -3725,7 +4054,13 @@ Global
{94579693-7AC6-4FF0-B540-1F3780E1BCFA} = {C9393A97-C0BB-4D59-A879-B572BE04CE15}
{B4F8545B-F379-42A5-BDE9-763FD7B79598} = {C9393A97-C0BB-4D59-A879-B572BE04CE15}
{F14940F8-3C86-4BB7-A915-B021E4B3052D} = {B4F8545B-F379-42A5-BDE9-763FD7B79598}
{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43} = {03D4F23E-7E4A-4091-BC96-036C996D351A}
{A5E7CE52-3101-4E9B-B896-C2C0FADE4812} = {03D4F23E-7E4A-4091-BC96-036C996D351A}
{70398B99-B134-4BBD-968B-7399B70C3CE2} = {C9393A97-C0BB-4D59-A879-B572BE04CE15}
{B5DA260C-71CC-45CA-B79E-D1B376AF718C} = {C9393A97-C0BB-4D59-A879-B572BE04CE15}
{00748F11-4B49-4D8B-93C4-4A11A210CCE2} = {94579693-7AC6-4FF0-B540-1F3780E1BCFA}
{D6B81C60-2763-4C4D-989F-90822F53B01A} = {94579693-7AC6-4FF0-B540-1F3780E1BCFA}
{BA17D20E-0CEB-4B27-9772-2392BD750ED5} = {C9393A97-C0BB-4D59-A879-B572BE04CE15}
{8BDD2789-96D4-43EA-AAD7-0F49D0347998} = {EC10DAFE-88CF-42D5-99E7-D247938B6430}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}
+2
View File
@@ -28,6 +28,8 @@
<s:Boolean x:Key="/Default/Environment/ExcludedFiles/FilesAndFoldersToSkip/=1057AD21_002DBA22_002D4CAB_002DB3FE_002D88C5C9980E6A_002Fd_003AScripts_002Ff_003Ajquery_002D1_002E10_002E2_002Eintellisense_002Ejs/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/Environment/Hierarchy/Build/SolBuilderDuo/UseMsbuildSolutionBuilder/@EntryValue">NewVersion</s:String>
<s:Boolean x:Key="/Default/Environment/Hierarchy/EntityFrameworkOptions/IsAlreadyNotifiedAboutEntityFramework/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/Environment/Highlighting/HighlightingSourceSnapshotLocation/@EntryValue">C:\Users\Thomas\AppData\Local\Temp\JetBrains\ReSharperPlatformVs15\vAny_33007af5\CoverageData\_Common.-1885154465\Snapshot\snapshot.utdcvr</s:String>
@@ -226,6 +226,10 @@
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\Hardware\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\Hardware\WaterMeter\Genesis\DataPackages\DataPackages.csproj">
<Project>{0E524D43-7B66-45CD-AA74-41D51AFC3D99}</Project>
<Name>DataPackages</Name>
@@ -6,6 +6,7 @@ using System.IO;
using System.Text;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -9,6 +9,8 @@ using System.Linq;
using System.Threading;
using Logic.ProductionToProductMapper.Cordonel;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
@@ -1,7 +1,7 @@
using System;
using System.IO.Ports;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig
namespace Xylem.Common.Hardware.Interfaces.Ports.PortCore
{
/// <summary>
/// Collection of port settings
@@ -94,7 +94,10 @@
<Compile Include="EventArguments\ListBytePortDataEventArgs.cs" />
<Compile Include="EventArguments\StringPortDataEventArgs.cs" />
<Compile Include="IPort.cs" />
<Compile Include="PortConfig.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SlotConfig.cs" />
<Compile Include="SlotType.cs" />
<Compile Include="TransmitPortSettings.cs" />
</ItemGroup>
<ItemGroup>
@@ -107,6 +110,7 @@
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\ServiceFwUpdate\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
@@ -1,6 +1,6 @@
using System;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig
namespace Xylem.Common.Hardware.Interfaces.Ports.PortCore
{
/// <summary>
/// Container for port configuration
@@ -0,0 +1,17 @@
namespace Xylem.Common.Hardware.Interfaces.Ports.PortCore
{
/// <summary>
/// Definition of type for slot
/// </summary>
public enum SlotType
{
/// <summary>
/// Cordonel used as DUT with two serial ports
/// </summary>
DutMeter,
/// <summary>
/// Cordonel used as temperature meter with one serial port streaming the temperature
/// </summary>
TemperatureMeter,
}
}
@@ -3,10 +3,10 @@ using System.Collections.Concurrent;
using System.Threading;
using Xylem.Common.CommonCore.ThreadWatcher;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore
namespace Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore
{
/// <inheritdoc />
/// <summary>
@@ -56,7 +56,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore
/// <remarks date="2018-Feb-14" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public void Dispose()
public virtual void Dispose()
{
//Cancel receive tokens
_decodingToken.Cancel();
@@ -70,7 +70,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore
while (_decodingThread.ThreadState != ThreadState.Stopped && timeoutCounter > 0)
{
Thread.Sleep(1);
timeoutCounter = timeoutCounter - 1;
timeoutCounter -= 1;
}
if (_decodingThread.ThreadState != ThreadState.Stopped)
@@ -110,9 +110,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore
{
while (!_decodingToken.IsCancellationRequested)
{
IPortDataEventArgs receivedRecord;
while (_decodingFifo.TryDequeue(out receivedRecord))
while (_decodingFifo.TryDequeue(out var receivedRecord))
{
DecodeRecord(receivedRecord);
}
@@ -1,6 +1,6 @@
using System;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments
namespace Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments
{
/// <inheritdoc />
@@ -1,9 +1,9 @@
using System;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore
namespace Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore
{
/// <inheritdoc />
/// <summary>
@@ -1,7 +1,7 @@
using System.Runtime.InteropServices;
using System.Reflection;
[assembly: AssemblyTitle("Xylem.Common.Hardware.WaterMeter.Protocols.ProtocolCore")]
[assembly: AssemblyTitle("Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore")]
[assembly: AssemblyDescription("")]
[assembly: Guid("1A402949-095C-4039-8AE3-6594A7FB2242")]
@@ -7,8 +7,8 @@
<ProjectGuid>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore</AssemblyName>
<RootNamespace>Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
@@ -51,7 +51,7 @@
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>6</LangVersion>
<DocumentationFile>bin\x86\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.xml</DocumentationFile>
<DocumentationFile>bin\x86\Debug\Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
@@ -174,44 +174,36 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\..\ServiceFwUpdate\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\packages\NLog.4.6.7\lib\net40-client\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\..\..\.shared\SharedAssemblyInfo.cs">
<Compile Include="..\..\..\..\.shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="BaseProtocol.cs" />
<Compile Include="EventArguments\BaseDataEventArgs.cs" />
<Compile Include="IProtocol.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\CommonCore\ThreadWatcher\ThreadWatcher.csproj">
<Project>{94ca71f3-c5d7-4ec6-ba47-fa8eea3c9406}</Project>
<ProjectReference Include="..\..\..\..\CommonCore\ThreadWatcher\ThreadWatcher.csproj">
<Project>{94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}</Project>
<Name>ThreadWatcher</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2e139f63-b6fe-4ea9-a098-85364fe9b26c}</Project>
<ProjectReference Include="..\..\Ports\PortCore\PortCore.csproj">
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\TransmitProtocol\TransmitProtocol.csproj">
<ProjectReference Include="..\TransmitProtocol\TransmitProtocol.csproj">
<Project>{63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}</Project>
<Name>TransmitProtocol</Name>
</ProjectReference>
<ProjectReference Include="..\..\DataPackages\DataPackages.csproj">
<Project>{0e524d43-7b66-45cd-aa74-41d51afc3d99}</Project>
<Name>DataPackages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
@@ -215,13 +215,11 @@
<Compile Include="..\..\..\..\.shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="EventArguments\BaseDataEventArgs.cs" />
<Compile Include="EventArguments\CalibDataEventArgs.cs" />
<Compile Include="EventArguments\FlowDataEventArgs.cs" />
<Compile Include="EventArguments\RegisterUpdateEventArgs.cs" />
<Compile Include="EventArguments\RequestResponseDataEventArgs.cs" />
<Compile Include="MeasurementRecords\CalibrationRecord.cs" />
<Compile Include="MeasurementRecords\MagFluxRecord.cs" />
<Compile Include="MeasurementRecords\FlowTestRecord.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RadioConfigurationParams.cs" />
@@ -246,6 +244,10 @@
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
<Name>Measurements</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\Registers\Registers.csproj">
<Project>{F4AAF7E6-7333-4284-B735-E32DEB076C64}</Project>
<Name>Registers</Name>
@@ -254,6 +256,7 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
@@ -1,6 +1,8 @@
using System;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments
{
/// <inheritdoc />
@@ -1,6 +1,8 @@
using System;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments
{
/// <inheritdoc />
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments
{
@@ -94,10 +94,7 @@
<Compile Include="CommunicationConfig.cs" />
<Compile Include="Const\MeterConfig.cs" />
<Compile Include="ProcessConfig.cs" />
<Compile Include="PortConfig.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SlotConfig.cs" />
<Compile Include="SlotType.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Interfaces\Ports\PortCore\PortCore.csproj">
@@ -1,8 +0,0 @@
namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig
{
public enum SlotType
{
DutMeter,
TemperatureMeter,
}
}
@@ -303,6 +303,10 @@
<Project>{72037E89-4F63-4B3F-BEFF-4138E578CE99}</Project>
<Name>SerialPorts</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\TransmitProtocol\TransmitProtocol.csproj">
<Project>{63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}</Project>
<Name>TransmitProtocol</Name>
@@ -331,10 +335,6 @@
<Project>{AC434B18-4D7B-49BA-9AD5-0527C79E8297}</Project>
<Name>GenesisPwd</Name>
</ProjectReference>
<ProjectReference Include="..\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\Protocols\RequestProtocol\RequestProtocol.csproj">
<Project>{D32ED790-7E1E-435B-8619-9F906C992066}</Project>
<Name>RequestProtocol</Name>
@@ -19,6 +19,8 @@ using Xylem.Common.CommonCore.ThreadWatcher;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Ports.SerialPorts;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol;
using Xylem.Common.Hardware.WaterMeter.Genesis.Applications;
using Xylem.Common.Hardware.WaterMeter.Genesis.Applications.Const;
@@ -27,7 +29,6 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.EventArguments;
@@ -648,7 +649,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
{
var ledTransmit = new LedTransmitProtocol(streamingPort.Value.PortName);
var streamingIdent = $"Slot:{Slot}/{streamingPort.Value.PortName}-Protocol:LED";
var streamingIdent = $"Slot:{Slot}, Port:{streamingPort.Value.PortName}, Protocol:LED";
StreamingPort = new LedSerialPort(streamingIdent, streamingPort.Value.GetSerialPort(),
ledTransmit.GetTransmitPortSettings());
@@ -4,6 +4,7 @@ using System.IO;
using System.IO.Ports;
using System.Linq;
using Newtonsoft.Json;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Properties;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -87,12 +87,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
}
catch (Exception)
{
// ignored
}
WriteRegister("GENESISFLOW_DisplayPow10", (new Byte[] { 0x00, 0x00, 0x00, 0xFA }).Reverse().ToArray());
WriteRegister(Register.Genesisflow.StoreCalibration, 1);
WriteRegister(Register.Genesisflow.StoreConfiguration, 1);
@@ -6,9 +6,10 @@ using System.Threading;
using Xylem.Common.Utils.Logging;
using NLog;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
@@ -234,6 +234,10 @@
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\TransmitProtocol\TransmitProtocol.csproj">
<Project>{63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}</Project>
<Name>TransmitProtocol</Name>
@@ -250,10 +254,6 @@
<Project>{F4AAF7E6-7333-4284-B735-E32DEB076C64}</Project>
<Name>Registers</Name>
</ProjectReference>
<ProjectReference Include="..\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@@ -29,28 +29,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
private const Double AmplitudeToVoltFactor = 1.0 / 0x400000 / 1000.0; // 2^22 100 0000 0000 0000 0000 0000b
private const Double PulseWidthToRelFactor = 1.0 / 0x100; // 2^8
// protocol 'l' MagFlux
private const Double MaxMagFluxVolumeRaw = UInt64.MaxValue;//0x10000000000000000; //2^64
private const Double DefaultMagFluxOverflowVolumeCm = MaxMagFluxVolumeRaw / MilliLitersToCmFactor;
/// <summary>
/// Default data for
/// </summary>
private readonly MagFluxRecord _dataMagFluxDefault = new MagFluxRecord
{
VolumeCm = 0.0,
TimeS = 0.0,
FlowRateCmPh = 0.0,
StatusBits = 0,
UniqueId = "?",
SensorId = "?",
Crc = 0xFFFF,
OverflowVolumeCm = DefaultMagFluxOverflowVolumeCm,
OverflowTimeS = CpuTimeOverflowS,
IsValid = false
};
/// <summary>
/// Default data for
/// Default data for flow tests of Genesis
/// </summary>
private readonly FlowTestRecord _dataDefault = new FlowTestRecord
{
@@ -62,6 +42,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
IsValid = false
};
/// <summary>
/// Default data for calibration of Genesis
/// </summary>
private readonly CalibrationRecord _rawDataDefault = new CalibrationRecord
{
Channel = 0,
@@ -93,7 +76,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
private CalibrationRecord _dataCalibRec;
private FlowTestRecord _dataFlowTestRec;
private MagFluxRecord _dataMagFluxRec;
private readonly Boolean _ignoreCorruptedData;
/// <summary>
@@ -101,7 +83,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
/// </summary>
public StreamingDecoder(Boolean ignoreCorruptedData = true)
{
_dataMagFluxRec = _dataMagFluxDefault;
_dataFlowTestRec = _dataDefault;
_dataCalibRec = _rawDataDefault;
_ignoreCorruptedData = ignoreCorruptedData;
@@ -115,14 +96,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
get; private set;
}
/// <summary>
/// Data of MagFlux
/// </summary>
public MagFluxRecord DataMagFlux
{
get; private set;
}
/// <summary>
/// Flow test data
/// </summary>
@@ -148,11 +121,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
//_rawMsgForCrc = rawMsg;
// extract message and split it to fields
//MagFlux test string from Jan Bennett 2023-03-14_16-16-31_fromTO.log
//rawMsg = "@l 1bd911f 95b8d4 40cf9b5c 0 26004f5232500120373235 0 5863"
//DUT:Debug version, DUT:Vol FWD [mL], DUT:Time [s], DUT:Flow_LPS, DUT:StatusBitsHex, DUT:UniqueId, DUT:SensorId, DUT:CRC
//dec_AT_l, 29200671, 149.7219849, 6.487714767, 0, 4.59406E+25, 0, 22627 (0x5863)
//DN50
//2022-07-21 07:22:06.9871 | @f 8497D 062E4216 9B2A
//2022-07-21 07:22:06.9871 | @h 1 0 0A1F59C4 00017A43 00115C45 72E1596B 00000400 00001998 7D91B652 7D4F37E6 000191E6 0C 062E4A9C 5331
@@ -202,15 +170,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
switch (rawMsgFields[0])
{
case "@l":
_dataMagFluxRec.IsValid = rawRecordIsValid;
if (rawRecordIsValid || !_ignoreCorruptedData)
{
DecodeProtocolL(ref _dataMagFluxRec, rawMsgFields);
DataMagFlux = _dataMagFluxRec;
}
break;
case "@f":
_dataFlowTestRec.IsValid = rawRecordIsValid;
if (rawRecordIsValid || !_ignoreCorruptedData)
@@ -246,41 +205,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
return rawRecordIsValid;
}
/// <summary>
/// Extracting message from string fields for protocol 'l'
/// </summary>
/// <param name="dataMagFluxRec">reference to mag flux record</param>
/// <param name="fields">fields holding the separated values for decoding</param>
/// <remarks date="2023-Mar-09" author="T.Wiedebusch">
/// - Initial.
/// </remarks>
private static void DecodeProtocolL(ref MagFluxRecord dataMagFluxRec, IList<String> fields)
{
// time stamp attachment
dataMagFluxRec.DecodedTime = DateTimeOffset.UtcNow;
// extract received CRC
dataMagFluxRec.Crc = UInt16.Parse(fields[(Int32)ProtLsubString.Crc], NumberStyles.HexNumber);
// build result values, the display volume can be positive or negative!
dataMagFluxRec.VolumeCm = UInt64.Parse(fields[(Int32)ProtLsubString.DisplayVolume],
NumberStyles.AllowHexSpecifier) * MilliLitersToCmFactor;
dataMagFluxRec.TimeS = UInt32.Parse(fields[(Int32)ProtLsubString.CpuTime],
NumberStyles.AllowHexSpecifier) * CpuTimeToSecondsFactor;
// parse the floating point value of the flow rate which is a string containing the hex value as 32 bit
var hex = UInt32.Parse(fields[(Int32)ProtLsubString.FlowRate], NumberStyles.AllowHexSpecifier);
var floatValues = BitConverter.GetBytes(hex);
dataMagFluxRec.FlowRateCmPh = BitConverter.ToSingle(floatValues, 0) *
LitersPerSecondToCmPerHourFactor;
// get status and identifiers
dataMagFluxRec.StatusBits = UInt32.Parse(fields[(Int32)ProtLsubString.StatusBits],
NumberStyles.AllowHexSpecifier);
dataMagFluxRec.UniqueId = fields[(Int32)ProtLsubString.UniqueId];
dataMagFluxRec.SensorId = fields[(Int32)ProtLsubString.SensorId];
}
/// <summary>
/// Extracting message from string fields for protocol 'f'
/// </summary>
@@ -480,19 +404,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
NumberStyles.AllowHexSpecifier) * CpuTimeToSecondsFactor;
}
/// field position in protocol 'l'
private enum ProtLsubString
{
//do not remove this needed for position in record
ProtType,
DisplayVolume,
CpuTime,
FlowRate,
StatusBits,
UniqueId,
SensorId,
Crc
}
/// field position in protocol 'f'
private enum ProtFsubString
{
@@ -1,7 +1,8 @@
using System;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol
{
@@ -228,14 +228,14 @@
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\DataPackages\DataPackages.csproj">
<Project>{0e524d43-7b66-45cd-aa74-41d51afc3d99}</Project>
<Name>DataPackages</Name>
</ProjectReference>
<ProjectReference Include="..\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@@ -0,0 +1,261 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" 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>{BA17D20E-0CEB-4B27-9772-2392BD750ED5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</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>
<Prefer32Bit>false</Prefer32Bit>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.xml</DocumentationFile>
<LangVersion>7.0</LangVersion>
</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>
<Prefer32Bit>false</Prefer32Bit>
<LangVersion>7.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'COM|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\COM\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>7.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\x86\Debug\Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>6</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'COM|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\COM\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'XP32bit|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\XP32bit\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>7.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'XP32bit|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\XP32bit\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'COM|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\COM\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'XP32bit|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\XP32bit\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>false</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PerformTest|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\PerformTest\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>7.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PerformTest|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\PerformTest\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PerformTest|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\PerformTest\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '_MANUAL_CONTROL|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\_MANUAL_CONTROL\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<LangVersion>7.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '_MANUAL_CONTROL|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\_MANUAL_CONTROL\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\x86\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>6</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '_MANUAL_CONTROL|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\_MANUAL_CONTROL\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml</DocumentationFile>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\..\.shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="EventArguments\MagFluxFlowDataEventArgs.cs" />
<Compile Include="EventArguments\RequestResponseDataEventArgs.cs" />
<Compile Include="MeasurementRecords\MagFluxRecord.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\ServiceFwUpdate\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\NLog.4.6.7\lib\net40-client\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\CommonCore\CommonCore.csproj">
<Project>{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}</Project>
<Name>CommonCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Metrology\Measurements\Measurements.csproj">
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
<Name>Measurements</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Genesis\Registers\Registers.csproj">
<Project>{F4AAF7E6-7333-4284-B735-E32DEB076C64}</Project>
<Name>Registers</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -0,0 +1,21 @@
using System;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.MeasurementRecords;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.EventArguments
{
/// <inheritdoc />
public class MagFluxFlowDataEventArgs : BaseDataEventArgs
{
/// <summary>
/// new record from Stream
/// </summary>
public MagFluxRecord NewData;
/// <inheritdoc />
public override Object GetEventData()
{
return NewData;
}
}
}
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.EventArguments
{
/// <inheritdoc />
/// <summary>
/// EventArgs for Request Responses
/// </summary>
public class RequestResponseDataEventArgs : BaseDataEventArgs
{
/// <summary>
/// Request response from meter
/// </summary>
public List<Byte> RequestResponseData;
/// <inheritdoc />
public override Object GetEventData()
{
return RequestResponseData;
}
}
}
@@ -2,7 +2,7 @@
using System.Text;
using Xylem.Common.Metrology.Measurements;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.MeasurementRecords
{
/// <inheritdoc />
/// <summary>
@@ -0,0 +1,10 @@
using System.Runtime.InteropServices;
using System.Reflection;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages")]
[assembly: AssemblyDescription("")]
[assembly: Guid("DBE76882-217A-4446-89BB-8F5E8CD8CB65")]
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
<package id="NLog" version="4.6.7" targetFramework="net40" />
</packages>
@@ -0,0 +1,88 @@
using System;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig
{
/// <summary>
/// Setup of communication timeouts and retries for request and streaming protocol,
/// this timeout starts the retry.
///
/// The individual timings of the hardware will be covert by the
/// <see cref="TransmitPortSettings.ResponseTimeoutMs"/>
/// injected by the different transmit protocols:
/// <see cref="IrdaTransmitProtocol"/>
/// <see cref="LedTransmitProtocol"/>
/// <see cref="RfidTransmitProtocol"/>
/// <see cref="UartTransmitProtocol"/>
/// </summary>
public static class CommunicationConfig
{
private static Int32 _requestRetries = DefaultRequestRetries;
/// <summary>
/// Maximum retries for one command at request protocol
/// at missing response.
/// </summary>
public static Int32 RequestRetries
{
get => _requestRetries;
set => _requestRetries = value > MaxRequestRetries ? MaxRequestRetries : value;
}
/// <summary>
/// Acceptable error code as valid answer to skip retries,
/// this might be 0x0004 for not installed application.
/// </summary>
public const UInt16 SkipRetryErrorCode = 0x0004;
/// <summary>
/// Default retries for one command at request protocol
/// at missing response.
/// </summary>
public const Int32 DefaultRequestRetries = 2;
/// <summary>
/// Limit retries to this value.
/// </summary>
private const Int32 MaxRequestRetries = 6;
/// <summary>
/// Send delay between records in milliseconds before
/// new record is going to be send or between retries,
/// this time is independent of the timeout, it is
/// used to delay the next send record after successful
/// response from meter.
/// </summary>
public const Int32 InterRecordSendDelayMs = 5;
//public const Int32 InterRecordSendDelayMs = 50;
/// <summary>
/// Timeout before retry will be initiated in milliseconds
/// for the response of the request protocol. This is an
/// offset value, the transmission specific timing will be
/// added from the transmit protocol timeout. This timeout
/// will be multiplied with the (retry + 1)!
/// </summary>
public const Int32 ResponseTimeoutMs = 250;
// public const Int32 ResponseTimeoutMs = 100;
/// <summary>
/// Timeout before retry will be initiated if the meter is
/// not ready indicated by a wakeup-message or decoding error.
/// </summary>
public const Int32 BusyTimeoutMs = 500;
// public const Int32 BusyTimeoutMs = 1000;
/// <summary>
/// Time to avoid automatic lock off of genesis device due to
/// missing communication with request protocol in seconds
/// </summary>
public const Int32 KeepSessionTimeS = 60 * 3;
/// <summary>
/// Time to update intermediate record for overflow detection
/// during a measurement and update of short-term measurement
/// in seconds
/// </summary>
public const Int32 MeasurementUpdateTimeS = 10;
}
}
@@ -0,0 +1,24 @@
using System;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig.Const
{
public static class MeterConfig
{
/// <summary>
/// Calibration Factor on init from meter
/// Is also the factor to convert CalibrationFactors to readable number,
/// this is the default if the ProcessConfig.json file cannot be read.
/// </summary>
public const UInt16 CalibrationDefault = 15625;
/// <summary>
/// Channels for calibration
/// </summary>
public const Int32 CalibChannels = 3;
/// <summary>
/// Maximum calibration value in percent
/// </summary>
public const Double DefaultMaxCalibFactorTolerancePercent = 100.0;
}
}
@@ -0,0 +1,56 @@
<?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>{70398B99-B134-4BBD-968B-7399B70C3CE2}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</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>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.12.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="CommunicationConfig.cs" />
<Compile Include="Const\MeterConfig.cs" />
<Compile Include="ProcessConfig.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,121 @@
using System;
using System.ComponentModel;
using System.IO;
using Newtonsoft.Json;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig
{
/// <summary>
/// Configuration of meter
/// </summary>
public class ProcessConfig
{
/// <summary>
/// ctor
/// </summary>
public ProcessConfig()
{
UseRegisterWatchService = false;
UseErrorLogger = false;
AutoUpdateFiles = false;
ProductionMode = true;
}
/// <summary>
/// Load configuration file from AppRoaming or working directory
/// </summary>
/// <param name="file"></param>
public ProcessConfig(String file)
{
// check for AppRoaming
var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
nameof(MagFlux), file);
if (!File.Exists(configFile))
{
// take actual working directory
configFile = Path.Combine(file);
if (!File.Exists(configFile))
{
UseRegisterWatchService = false;
UseErrorLogger = false;
return;
}
}
using (var tr = new StreamReader(configFile))
{
var meterConfig = JsonConvert.DeserializeObject<ProcessConfig>(tr.ReadToEnd());
UseRegisterWatchService = meterConfig.UseRegisterWatchService;
RegisterWatchServiceUrl = meterConfig.RegisterWatchServiceUrl;
UseMinMaxCheck = meterConfig.UseMinMaxCheck;
UseErrorLogger = meterConfig.UseErrorLogger;
ErrorLoggerServiceUrl = meterConfig.ErrorLoggerServiceUrl;
UseCalibrationLogger = meterConfig.UseCalibrationLogger;
CalibrationLoggerServiceUrl = meterConfig.CalibrationLoggerServiceUrl;
AutoUpdateFiles = meterConfig.AutoUpdateFiles;
ProductionMode = meterConfig.ProductionMode;
}
}
/// <summary>
/// Write file to AppRoaming and backup it to actual working directory
/// </summary>
/// <param name="file"></param>
public void Update(String file)
{
var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
nameof(MagFlux), file);
File.WriteAllText(configFile, JsonConvert.SerializeObject(this));
File.WriteAllText(file, JsonConvert.SerializeObject(this));
}
/// <summary>
///
/// </summary>
public Boolean UseRegisterWatchService { get; set; }
/// <summary>
///
/// </summary>
public String RegisterWatchServiceUrl { get; set; }
/// <summary>
///
/// </summary>
public Boolean UseMinMaxCheck { get; set; }
/// <summary>
///
/// </summary>
public Boolean UseErrorLogger { get; set; }
/// <summary>
///
/// </summary>
public String ErrorLoggerServiceUrl { get; set; }
/// <summary>
///
/// </summary>
public Boolean UseCalibrationLogger { get; set; }
/// <summary>
///
/// </summary>
public String CalibrationLoggerServiceUrl { get; set; }
/// <summary>
///
/// </summary>
public Boolean AutoUpdateFiles { get; set; }
[DefaultValue(true)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public Boolean ProductionMode { get; set; } = true;
}
}
@@ -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("Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xylem")]
[assembly: AssemblyProduct("MagFluxConfig")]
[assembly: AssemblyCopyright("Copyright © Xylem 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("70398b99-b134-4bbd-968b-7399b70c3ce2")]
// 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")]
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" />
</packages>
@@ -0,0 +1,136 @@
<?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>{B5DA260C-71CC-45CA-B79E-D1B376AF718C}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</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>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<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="MagFluxMeter.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\..\MJK\Code\C#\modbus_master_csharp\src\modbus_master_csharp\modbus_master_csharp.csproj">
<Project>{f14940f8-3c86-4bb7-a915-b021e4b3052d}</Project>
<Name>modbus_master_csharp</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\CommonCore.Configuration\CommonCore.Configuration.csproj">
<Project>{9eb1f659-6f73-4f65-bcab-4114fd94f5fc}</Project>
<Name>CommonCore.Configuration</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\CommonCore\CommonCore.csproj">
<Project>{1b02c79e-0b19-43e2-8f6b-71ef0c786c97}</Project>
<Name>CommonCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\CommonCore\ThreadWatcher\ThreadWatcher.csproj">
<Project>{94ca71f3-c5d7-4ec6-ba47-fa8eea3c9406}</Project>
<Name>ThreadWatcher</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Metrology\Measurements\Measurements.csproj">
<Project>{6ccdb656-c676-4360-baba-c4596aad175d}</Project>
<Name>Measurements</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\SoftwareAccessHelper\SoftwareAccessHelper.csproj">
<Project>{a33e3c6d-eaae-4a20-a0ee-f9e6922fd029}</Project>
<Name>SoftwareAccessHelper</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Tools\Tools.JsonToXlsHelper\Tools.JsonToXlsHelper.csproj">
<Project>{20f137fd-c25e-42b7-a68f-58c746475897}</Project>
<Name>Tools.JsonToXlsHelper</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Utils\Logging\Logging.csproj">
<Project>{4b88b0d3-e791-4774-9521-eabeacdc420e}</Project>
<Name>Logging</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2e139f63-b6fe-4ea9-a098-85364fe9b26c}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Ports\SerialPorts\SerialPorts.csproj">
<Project>{72037e89-4f63-4b3f-beff-4138e578ce99}</Project>
<Name>SerialPorts</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Interfaces\Protocols\TransmitProtocol\TransmitProtocol.csproj">
<Project>{63e0ac5e-b7c8-4363-a2fe-be489e648ff0}</Project>
<Name>TransmitProtocol</Name>
</ProjectReference>
<ProjectReference Include="..\..\WaterMeterCore\WaterMeterCore.csproj">
<Project>{8203abb8-38e5-472e-a742-33f38b7a74a6}</Project>
<Name>WaterMeterCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\WaterMeterCore\WaterMeterRegisters\WaterMeterRegisters.csproj">
<Project>{26afcf1e-1287-48b8-a506-32b1e8a0dd0e}</Project>
<Name>WaterMeterRegisters</Name>
</ProjectReference>
<ProjectReference Include="..\DataPackages\DataPackages.csproj">
<Project>{BA17D20E-0CEB-4B27-9772-2392BD750ED5}</Project>
<Name>DataPackages</Name>
</ProjectReference>
<ProjectReference Include="..\MagFluxConfig\MagFluxConfig.csproj">
<Project>{70398b99-b134-4bbd-968b-7399b70c3ce2}</Project>
<Name>MagFluxConfig</Name>
</ProjectReference>
<ProjectReference Include="..\Protocols\RequestProtocol\RequestProtocol.csproj">
<Project>{00748F11-4B49-4D8B-93C4-4A11A210CCE2}</Project>
<Name>RequestProtocol</Name>
</ProjectReference>
<ProjectReference Include="..\Protocols\StreamingProtocol\StreamingProtocol.csproj">
<Project>{d6b81c60-2763-4c4d-989f-90822f53b01a}</Project>
<Name>StreamingProtocol</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
File diff suppressed because it is too large Load Diff
@@ -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("MagFluxCore")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xylem")]
[assembly: AssemblyProduct("MagFluxCore")]
[assembly: AssemblyCopyright("Copyright © Xylem 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("b5da260c-71cc-45ca-b79e-d1b376af718c")]
// 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")]
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" />
<package id="NLog" version="4.6.7" targetFramework="net48" />
</packages>
@@ -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("Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.RequestProtocol")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xylem")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright © Xylem 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("00748f11-4b49-4d8b-93c4-4a11a210cce2")]
// 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")]
@@ -0,0 +1,194 @@
using System;
using XYLEM.Device;
using NLog;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Utils.Logging;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.RequestProtocol
{
/// <summary>
/// Wrapper for MagFlux request protocol implemented in <see cref="IMagFluxRequestProtocol"/>
/// </summary>
public class RequestProtocol : BaseProtocol
{
private readonly String _ident;
private readonly ILogger _logger;
private IMagFluxRequestProtocol _magFluxProtocol;
/// <inheritdoc />
public RequestProtocol(String ident) : base(ident)
{
_ident = ident;
_magFluxProtocol = new MagFlux6200();
_logger = NLogHelper.CreateOrGetMultiLogger(ident, "", "RequestProtocol", "MeterBase", "MeterBase");
}
/// <inheritdoc/>>
public override void Dispose()
{
_magFluxProtocol?.CloseConnection();
_magFluxProtocol = null;
base.Dispose();
}
/// <inheritdoc />
public override event EventHandler<BasePortDataEventArgs> OnRecordReadyToSend;
/// <inheritdoc />
public override event EventHandler<BaseDataEventArgs> OnRecordIsDecoded;
public override void DecodeRecord(IPortDataEventArgs data)
{
throw new System.NotImplementedException();
}
/// <summary>
/// Wrapper to connect mag flux
/// </summary>
/// <param name="portName"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean Connect(String portName)
{
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.Connect(portName);
return retVal;
}
/// <summary>
/// Wrapper to set the log location for MagFlux direct raw output
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean SetLogLocation(String path)
{
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.SetLogLocation(path);
return retVal;
}
/// <summary>
/// Wrapper to connect mag flux
/// </summary>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean CloseConnection()
{
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.CloseConnection();
return retVal;
}
/// <summary>
/// Wrapper to connect mag flux
/// </summary>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean IsConnected()
{
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.IsConnected();
return retVal;
}
/// <summary>
/// Wrapper to get FW version
/// </summary>
/// <param name="fwVersion"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetFwVersion(out String fwVersion)
{
fwVersion = "?";
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetFirmwareVersion(out fwVersion);
return retVal;
}
/// <summary>
/// Wrapper to get FW GIT hash
/// </summary>
/// <param name="fwGitHash"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetFwGitHash(out String fwGitHash)
{
fwGitHash = "?";
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetFwGitHash(out fwGitHash);
return retVal;
}
/// <summary>
/// Wrapper to get FW Build Date
/// </summary>
/// <param name="fwBuildDate"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetFwBuildDate(out String fwBuildDate)
{
fwBuildDate = "?";
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetFwBuildDate(out fwBuildDate);
return retVal;
}
/// <summary>
/// Wrapper to get the sensor serial number
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetSensorSerialNo(out String serialNumber)
{
serialNumber = "?";
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetSensorSerialNo(out serialNumber);
return retVal;
}
/// <summary>
/// Wrapper to get unique id referenced as PCBID
/// </summary>
/// <param name="pcbId"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetUniqueId(out String pcbId)
{
pcbId = "?";
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetUniqueId(out pcbId);
return retVal;
}
/// <summary>
/// Wrapper to get meter size in mm
/// </summary>
/// <param name="meterSize"></param>
/// <returns></returns>
/// <remarks date="2023-Mai-04" author="T.Wiedebusch">
/// - Initial
/// </remarks>
public Boolean GetMeterSize_mm(out Int32 meterSize)
{
meterSize = 0;
if (_magFluxProtocol == null) return false;
var retVal = _magFluxProtocol.GetDn_mm(out meterSize);
return retVal;
}
}
}
@@ -0,0 +1,81 @@
<?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>{00748F11-4B49-4D8B-93C4-4A11A210CCE2}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.RequestProtocol</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.RequestProtocol</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</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>
<ItemGroup>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<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="RequestProtocol.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\..\..\MJK\Code\C#\modbus_master_csharp\src\modbus_master_csharp\modbus_master_csharp.csproj">
<Project>{f14940f8-3c86-4bb7-a915-b021e4b3052d}</Project>
<Name>modbus_master_csharp</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\Utils\Logging\Logging.csproj">
<Project>{4B88B0D3-E791-4774-9521-EABEACDC420E}</Project>
<Name>Logging</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\DataPackages\DataPackages.csproj">
<Project>{BA17D20E-0CEB-4B27-9772-2392BD750ED5}</Project>
<Name>DataPackages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.6.7" targetFramework="net48" />
</packages>
@@ -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("Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.StreamingProtocol")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xylem")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright © Xylem 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("d6b81c60-2763-4c4d-989f-90822f53b01a")]
// 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")]
@@ -0,0 +1,193 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.MeasurementRecords;
using Xylem.Common.Utils.Crc16Ccitt;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.StreamingProtocol
{
/// <summary>
/// Data fields and definitions for GENESIS streaming protocol
/// </summary>
public class StreamingDecoder
{
private const Double MilliLitersToCmFactor = 1.0E-6;
private const Double CpuTimeToSecondsFactor = 1.0 / 0x10000;
private const Double CpuTimeOverflowS = 0x100000000 * CpuTimeToSecondsFactor;
private const Double LitersPerSecondToCmPerHourFactor = 3600.0 / 1000.0;
private const Double DefaultVolumeScaleRawPerMl = 1024.0;
private const Double DefaultVolumeFactorRawToCm = MilliLitersToCmFactor / DefaultVolumeScaleRawPerMl;
private const Double MaxGenesisAccuVolumeRaw = UInt32.MaxValue; //0x100000000; //2^32
private const Double DefaultAccuDutOverflowVolumeCm = MaxGenesisAccuVolumeRaw * DefaultVolumeFactorRawToCm;
private const Double DisplayMlSetupDutOverflowVolumeCm = 1000.0; //overflow of LCD if set to ml
private const Double TofToSecondsFactor38Bit = 1.0 / 0x4000000000; // 2^38
private const Double AmplitudeToVoltFactor = 1.0 / 0x400000 / 1000.0; // 2^22 100 0000 0000 0000 0000 0000b
private const Double PulseWidthToRelFactor = 1.0 / 0x100; // 2^8
// protocol 'l' MagFlux
private const Double MaxMagFluxVolumeRaw = UInt64.MaxValue;//0x10000000000000000; //2^64
private const Double DefaultMagFluxOverflowVolumeCm = MaxMagFluxVolumeRaw / MilliLitersToCmFactor;
/// <summary>
/// Default data for
/// </summary>
private readonly MagFluxRecord _dataMagFluxDefault = new MagFluxRecord
{
VolumeCm = 0.0,
TimeS = 0.0,
FlowRateCmPh = 0.0,
StatusBits = 0,
UniqueId = "?",
SensorId = "?",
Crc = 0xFFFF,
OverflowVolumeCm = DefaultMagFluxOverflowVolumeCm,
OverflowTimeS = CpuTimeOverflowS,
IsValid = false
};
private MagFluxRecord _dataMagFluxRec;
private readonly Boolean _ignoreCorruptedData;
/// <summary>
/// Constructor initializes all decoded members with default values
/// </summary>
public StreamingDecoder(Boolean ignoreCorruptedData = true)
{
_dataMagFluxRec = _dataMagFluxDefault;
_ignoreCorruptedData = ignoreCorruptedData;
}
/// <summary>
/// Data of MagFlux
/// </summary>
public MagFluxRecord DataMagFlux
{
get; private set;
}
/// <summary>
/// Decoding the raw message
/// </summary>
/// <param name="rawMsg">message received as one line delimited with LF</param>
/// <returns>true if decoding was successful and data has been validated</returns>
/// <remarks date="2023-Mar-09" author="T.Wiedebusch">
/// - Modified using common CRC check before branching to the protocol specific decoder.
/// </remarks>
public Boolean DecodeMsg(String rawMsg)
{
var rawRecordIsValid = false;
try
{
// save the raw message for CRC calculation before separation to fields
//_rawMsgForCrc = rawMsg;
// extract message and split it to fields
//MagFlux test string from Jan Bennett 2023-03-14_16-16-31_fromTO.log
//rawMsg = "@l 1bd911f 95b8d4 40cf9b5c 0 26004f5232500120373235 0 5863"
//DUT:Debug version, DUT:Vol FWD [mL], DUT:Time [s], DUT:Flow_LPS, DUT:StatusBitsHex, DUT:UniqueId, DUT:SensorId, DUT:CRC
//dec_AT_l, 29200671, 149.7219849, 6.487714767, 0, 4.59406E+25, 0, 22627 (0x5863)
// The received message is a string with a line delimiter.
rawMsg = rawMsg.Replace('\n', ' ');
// The raw message fields are the separated values from the received string with a blank as field separator
var rawMsgFields = rawMsg.Split(' ');
// The last element is the CRC, the CRC can be separated, calculated and validated before trying to decode the content
var rawRecordForCrc = "";
// get all fields excluding the CRC (length - 1)
for (var x = 0; x < rawMsgFields.Length - 1; x++)
{
rawRecordForCrc += rawMsgFields[x];
// add the field delimiter from raw data
rawRecordForCrc += " ";
}
// extract bytes of raw message for CRC calculation each character, CRC field is already removed
var byteArraySize = rawRecordForCrc.Length;
var byteArray = new Byte[byteArraySize];
for (var i = 0; i < byteArraySize; i++)
{
byteArray[i] = (Byte)rawRecordForCrc[i];
}
// calculate the CRC from the received data
var calculatedCrc = Crc16Ccitt.CalculateMsb1021(byteArray);
// extract received CRC
var receivedCrc = UInt16.Parse(rawMsgFields[rawMsgFields.Length - 1], NumberStyles.HexNumber);
// compare received with calculated CRC and remind valid decoding
rawRecordIsValid = calculatedCrc == receivedCrc;
switch (rawMsgFields[0])
{
case "@l":
_dataMagFluxRec.IsValid = rawRecordIsValid;
if (rawRecordIsValid || !_ignoreCorruptedData)
{
DecodeProtocolL(ref _dataMagFluxRec, rawMsgFields);
DataMagFlux = _dataMagFluxRec;
}
break;
}
}
catch (Exception)
{
// ignored
}
return rawRecordIsValid;
}
/// <summary>
/// Extracting message from string fields for protocol 'l'
/// </summary>
/// <param name="dataMagFluxRec">reference to mag flux record</param>
/// <param name="fields">fields holding the separated values for decoding</param>
/// <remarks date="2023-Mar-09" author="T.Wiedebusch">
/// - Initial.
/// </remarks>
private static void DecodeProtocolL(ref MagFluxRecord dataMagFluxRec, IList<String> fields)
{
// time stamp attachment
dataMagFluxRec.DecodedTime = DateTimeOffset.UtcNow;
// extract received CRC
dataMagFluxRec.Crc = UInt16.Parse(fields[(Int32)ProtLsubString.Crc], NumberStyles.HexNumber);
// build result values, the display volume can be positive or negative!
dataMagFluxRec.VolumeCm = UInt64.Parse(fields[(Int32)ProtLsubString.DisplayVolume],
NumberStyles.AllowHexSpecifier) * MilliLitersToCmFactor;
dataMagFluxRec.TimeS = UInt32.Parse(fields[(Int32)ProtLsubString.CpuTime],
NumberStyles.AllowHexSpecifier) * CpuTimeToSecondsFactor;
// parse the floating point value of the flow rate which is a string containing the hex value as 32 bit
var hex = UInt32.Parse(fields[(Int32)ProtLsubString.FlowRate], NumberStyles.AllowHexSpecifier);
var floatValues = BitConverter.GetBytes(hex);
dataMagFluxRec.FlowRateCmPh = BitConverter.ToSingle(floatValues, 0) *
LitersPerSecondToCmPerHourFactor;
// get status and identifiers
dataMagFluxRec.StatusBits = UInt32.Parse(fields[(Int32)ProtLsubString.StatusBits],
NumberStyles.AllowHexSpecifier);
dataMagFluxRec.UniqueId = fields[(Int32)ProtLsubString.UniqueId];
dataMagFluxRec.SensorId = fields[(Int32)ProtLsubString.SensorId];
}
/// field position in protocol 'l'
private enum ProtLsubString
{
//do not remove this needed for position in record
ProtType,
DisplayVolume,
CpuTime,
FlowRate,
StatusBits,
UniqueId,
SensorId,
Crc
}
}
}
@@ -0,0 +1,63 @@
using System;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.EventArguments;
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.StreamingProtocol
{
/// <inheritdoc />
/// <summary>
/// Layer between <see cref="StreamingDecoder" /> CRC16CCITT handler and Events
/// block trashy telegrams
/// </summary>
public class StreamingProtocol : BaseProtocol
{
/// <summary>
/// Decode data and hold results
/// </summary>
private StreamingDecoder _streamingDecode;
private readonly Boolean _ignoreCorruptedData;
/// <inheritdoc />
public override event EventHandler<BaseDataEventArgs> OnRecordIsDecoded;
/// <inheritdoc />
public override void DecodeRecord(IPortDataEventArgs dataArgs)
{
var data = (String)dataArgs.GetData();
//Data decoding
_streamingDecode = new StreamingDecoder(_ignoreCorruptedData);
_streamingDecode.DecodeMsg(data);
//Event for new data
if (_streamingDecode.DataMagFlux != null)
{
_streamingDecode.DataMagFlux.SyncMarkRecord = dataArgs.GetSyncMarkRecord();
_streamingDecode.DataMagFlux.ReceivedTime = dataArgs.GetReceivedTime();
if (_streamingDecode.DataMagFlux.IsValid)
{
OnRecordIsDecoded?.Invoke(this,
new MagFluxFlowDataEventArgs { NewData = _streamingDecode.DataMagFlux, RawData = data });
}
else if (!_ignoreCorruptedData)
{
OnRecordIsDecoded?.Invoke(this,
new MagFluxFlowDataEventArgs { NewData = _streamingDecode.DataMagFlux, RawData = data });
}
}
//toDo: handle trashy telegrams
}
/// <inheritdoc />
public StreamingProtocol(String ident, Boolean ignoreCorruptedData = true) : base(ident)
{
_ignoreCorruptedData = ignoreCorruptedData;
}
}
}
@@ -0,0 +1,75 @@
<?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>{D6B81C60-2763-4C4D-989F-90822F53B01A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.StreamingProtocol</RootNamespace>
<AssemblyName>Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.StreamingProtocol</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</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>
<ItemGroup>
<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="Properties\AssemblyInfo.cs" />
<Compile Include="StreamingDecoder.cs" />
<Compile Include="StreamingProtocol.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\CommonCore\CommonCore.csproj">
<Project>{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}</Project>
<Name>CommonCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\Metrology\Measurements\Measurements.csproj">
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
<Name>Measurements</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\Utils\Crc16Ccitt\Crc16Ccitt.csproj">
<Project>{91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}</Project>
<Name>Crc16Ccitt</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\DataPackages\DataPackages.csproj">
<Project>{BA17D20E-0CEB-4B27-9772-2392BD750ED5}</Project>
<Name>DataPackages</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-9
View File
@@ -1,9 +0,0 @@
<Application x:Class="MagFluxToolBox.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MagFluxToolBox"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
-17
View File
@@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace MagFluxToolBox
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}
-104
View File
@@ -1,104 +0,0 @@
<?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>{FD55E1DE-E2C9-496A-B4E0-DC81A54F8F43}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>MagFluxToolBox</RootNamespace>
<AssemblyName>MagFluxToolBox</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<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="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\MJK\Code\C#\modbus_master_csharp\src\modbus_master_csharp\modbus_master_csharp.csproj">
<Project>{f14940f8-3c86-4bb7-a915-b021e4b3052d}</Project>
<Name>modbus_master_csharp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-12
View File
@@ -1,12 +0,0 @@
<Window x:Class="MagFluxToolBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MagFluxToolBox"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
-28
View File
@@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace MagFluxToolBox
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
@@ -1,55 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 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("MagFluxToolBox")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("MagFluxToolBox")]
[assembly: AssemblyCopyright("Copyright © Microsoft 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)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// 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")]
@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
@@ -20,6 +20,7 @@ using System.Windows.Input;
using System.Windows.Threading;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -12,6 +12,7 @@ using Newtonsoft.Json;
using ProductionUiCordonel.Model;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -315,6 +315,10 @@
<Project>{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}</Project>
<Name>CommonCore</Name>
</ProjectReference>
<ProjectReference Include="..\Hardware\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\Hardware\WaterMeter\Genesis\Applications\Applications.csproj">
<Project>{315E94B8-B82F-4B25-B5BD-297DF3BC1D54}</Project>
<Name>Applications</Name>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
@@ -8,6 +8,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -10,6 +10,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
namespace Xylem.Common.Ui.GenesisToolBox
+1
View File
@@ -4,6 +4,7 @@ using System.IO;
using System.Text;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
@@ -11,7 +11,7 @@ using System.Windows.Forms;
using Newtonsoft.Json;
using NLog;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
+8 -10
View File
@@ -75,6 +75,7 @@
<LangVersion>7.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>14673934DFE995F28E9579F4A18DBDA05F7C1AFE</ManifestCertificateThumbprint>
@@ -115,6 +116,7 @@
<LangVersion>7.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
@@ -125,6 +127,7 @@
<LangVersion>7.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PerformTest|x64'">
<DebugSymbols>true</DebugSymbols>
@@ -146,6 +149,7 @@
<LangVersion>7.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
@@ -605,6 +609,10 @@
<Project>{72037e89-4f63-4b3f-beff-4138e578ce99}</Project>
<Name>SerialPorts</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\Applications\Applications.csproj">
<Project>{315e94b8-b82f-4b25-b5bd-297df3bc1d54}</Project>
<Name>Applications</Name>
@@ -625,18 +633,10 @@
<Project>{2c6378c6-6ba1-4cee-8992-8404d8369a90}</Project>
<Name>GenesisFile</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\GenesisPwd\GenesisPwd.csproj">
<Project>{ac434b18-4d7b-49ba-9ad5-0527c79e8297}</Project>
<Name>GenesisPwd</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\GenesisStatus\GenesisStatus.csproj">
<Project>{0F646872-D8DC-4EE5-989F-D4C73F0ACE3F}</Project>
<Name>GenesisStatus</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\Protocols\RequestProtocol\RequestProtocol.csproj">
<Project>{d32ed790-7e1e-435b-8619-9f906c992066}</Project>
<Name>RequestProtocol</Name>
@@ -710,8 +710,6 @@
<Content Include="RegAsm4.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="Resources\SensusLogoXylem2.JPG" />
<None Include="Resources\SensusLogoXylem1.JPG" />
<None Include="Resources\SensusLogoXylem.JPG" />
</ItemGroup>
<ItemGroup>
+1 -2
View File
@@ -1,5 +1,4 @@
using GenesisToolBox;
using System;
using System;
using System.Windows.Forms;
namespace Xylem.Common.Ui.GenesisToolBox
+1 -1
View File
@@ -19,7 +19,7 @@ namespace Xylem.Common.Ui.GenesisToolBox.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
+1 -1
View File
@@ -12,7 +12,7 @@ namespace Xylem.Common.Ui.GenesisToolBox.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+2 -1
View File
@@ -8,7 +8,8 @@ using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
@@ -15,6 +15,7 @@ using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisStatus;
+1
View File
@@ -11,6 +11,7 @@ using System.Threading;
using System.Windows.Forms;
using System.Xml.Linq;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Ports.SerialPorts;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
+1
View File
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments;
using Xylem.Common.Hardware.Interfaces.Ports.SerialPorts;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
@@ -186,6 +186,14 @@
<Project>{D0C8D887-ED52-40AB-A069-90BCE0E801E2}</Project>
<Name>CordonelPreadjustmentUi</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2E139F63-B6FE-4EA9-A098-85364FE9B26C}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\DataPackages\DataPackages.csproj">
<Project>{0E524D43-7B66-45CD-AA74-41D51AFC3D99}</Project>
<Name>DataPackages</Name>
@@ -198,10 +206,6 @@
<Project>{04201e95-90a0-4b73-a72f-379739b2a3ae}</Project>
<Name>GenesisCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\Protocols\ProtocolCore\ProtocolCore.csproj">
<Project>{8BDD2789-96D4-43EA-AAD7-0F49D0347998}</Project>
<Name>ProtocolCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\Genesis\Protocols\RequestProtocol\RequestProtocol.csproj">
<Project>{D32ED790-7E1E-435B-8619-9F906C992066}</Project>
<Name>RequestProtocol</Name>
@@ -10,6 +10,7 @@ using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
using Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters;
using Xylem.Common.Utils.Logging;
@@ -9,6 +9,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
@@ -10,6 +10,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
+338
View File
@@ -0,0 +1,338 @@
namespace Xylem.Common.Ui.MagFluxToolBox
{
partial class FrmSetup
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnReload = new System.Windows.Forms.Button();
this.btnStore = new System.Windows.Forms.Button();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.lblGlobalCurrentPath = new System.Windows.Forms.Label();
this.btnGlobalSearch = new System.Windows.Forms.Button();
this.btnGlobalDefaultLan = new System.Windows.Forms.Button();
this.btnGlobalDefaultLocal = new System.Windows.Forms.Button();
this.label6 = new System.Windows.Forms.Label();
this.lblLocalCurrentPath = new System.Windows.Forms.Label();
this.btnLocalSearch = new System.Windows.Forms.Button();
this.btnLocalDefaultLan = new System.Windows.Forms.Button();
this.btnLocalDefaultLocal = new System.Windows.Forms.Button();
this.lblLocalPath = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.btnAddRow = new System.Windows.Forms.Button();
this.dgvConfig = new System.Windows.Forms.DataGridView();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.cbxSlot = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.cbxRequestPort = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.cbxStreamingPort = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.tabPage4.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvConfig)).BeginInit();
this.tabControl1.SuspendLayout();
this.SuspendLayout();
//
// btnReload
//
this.btnReload.Location = new System.Drawing.Point(12, 12);
this.btnReload.Name = "btnReload";
this.btnReload.Size = new System.Drawing.Size(140, 43);
this.btnReload.TabIndex = 1;
this.btnReload.Text = "Reload Setup";
this.btnReload.UseVisualStyleBackColor = true;
this.btnReload.Click += new System.EventHandler(this.BtnReload_Click);
//
// btnStore
//
this.btnStore.Location = new System.Drawing.Point(158, 12);
this.btnStore.Name = "btnStore";
this.btnStore.Size = new System.Drawing.Size(140, 43);
this.btnStore.TabIndex = 2;
this.btnStore.Text = "Save Setup";
this.btnStore.UseVisualStyleBackColor = true;
this.btnStore.Click += new System.EventHandler(this.BtnStore_Click);
//
// tabPage4
//
this.tabPage4.Controls.Add(this.lblGlobalCurrentPath);
this.tabPage4.Controls.Add(this.btnGlobalSearch);
this.tabPage4.Controls.Add(this.btnGlobalDefaultLan);
this.tabPage4.Controls.Add(this.btnGlobalDefaultLocal);
this.tabPage4.Controls.Add(this.label6);
this.tabPage4.Controls.Add(this.lblLocalCurrentPath);
this.tabPage4.Controls.Add(this.btnLocalSearch);
this.tabPage4.Controls.Add(this.btnLocalDefaultLan);
this.tabPage4.Controls.Add(this.btnLocalDefaultLocal);
this.tabPage4.Controls.Add(this.lblLocalPath);
this.tabPage4.Controls.Add(this.label4);
this.tabPage4.Controls.Add(this.label3);
this.tabPage4.Controls.Add(this.label2);
this.tabPage4.Location = new System.Drawing.Point(4, 22);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Size = new System.Drawing.Size(760, 361);
this.tabPage4.TabIndex = 3;
this.tabPage4.Text = "Logging";
this.tabPage4.UseVisualStyleBackColor = true;
this.tabPage4.Enter += new System.EventHandler(this.tabPage4_Click);
//
// lblGlobalCurrentPath
//
this.lblGlobalCurrentPath.AutoSize = true;
this.lblGlobalCurrentPath.Location = new System.Drawing.Point(132, 211);
this.lblGlobalCurrentPath.Name = "lblGlobalCurrentPath";
this.lblGlobalCurrentPath.Size = new System.Drawing.Size(10, 13);
this.lblGlobalCurrentPath.TabIndex = 12;
this.lblGlobalCurrentPath.Text = "-";
//
// btnGlobalSearch
//
this.btnGlobalSearch.Location = new System.Drawing.Point(52, 307);
this.btnGlobalSearch.Name = "btnGlobalSearch";
this.btnGlobalSearch.Size = new System.Drawing.Size(314, 29);
this.btnGlobalSearch.TabIndex = 11;
this.btnGlobalSearch.Text = "Search";
this.btnGlobalSearch.UseVisualStyleBackColor = true;
this.btnGlobalSearch.Click += new System.EventHandler(this.btnGlobalSearch_Click);
//
// btnGlobalDefaultLan
//
this.btnGlobalDefaultLan.Location = new System.Drawing.Point(52, 272);
this.btnGlobalDefaultLan.Name = "btnGlobalDefaultLan";
this.btnGlobalDefaultLan.Size = new System.Drawing.Size(314, 29);
this.btnGlobalDefaultLan.TabIndex = 10;
this.btnGlobalDefaultLan.Text = "\\\\sla12buma\\MagFlux$\\${machinename}";
this.btnGlobalDefaultLan.UseVisualStyleBackColor = true;
this.btnGlobalDefaultLan.Click += new System.EventHandler(this.btnGlobalDefaultLan_Click);
//
// btnGlobalDefaultLocal
//
this.btnGlobalDefaultLocal.Location = new System.Drawing.Point(52, 237);
this.btnGlobalDefaultLocal.Name = "btnGlobalDefaultLocal";
this.btnGlobalDefaultLocal.Size = new System.Drawing.Size(314, 29);
this.btnGlobalDefaultLocal.TabIndex = 9;
this.btnGlobalDefaultLocal.Text = "C:\\MagFluxLog\\";
this.btnGlobalDefaultLocal.UseVisualStyleBackColor = true;
this.btnGlobalDefaultLocal.Click += new System.EventHandler(this.btnGlobalDefaultLocal_Click);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(49, 211);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(66, 13);
this.label6.TabIndex = 8;
this.label6.Text = "CurrentPath:";
//
// lblLocalCurrentPath
//
this.lblLocalCurrentPath.AutoSize = true;
this.lblLocalCurrentPath.Location = new System.Drawing.Point(132, 57);
this.lblLocalCurrentPath.Name = "lblLocalCurrentPath";
this.lblLocalCurrentPath.Size = new System.Drawing.Size(10, 13);
this.lblLocalCurrentPath.TabIndex = 7;
this.lblLocalCurrentPath.Text = "-";
//
// btnLocalSearch
//
this.btnLocalSearch.Location = new System.Drawing.Point(52, 153);
this.btnLocalSearch.Name = "btnLocalSearch";
this.btnLocalSearch.Size = new System.Drawing.Size(314, 29);
this.btnLocalSearch.TabIndex = 6;
this.btnLocalSearch.Text = "Search";
this.btnLocalSearch.UseVisualStyleBackColor = true;
this.btnLocalSearch.Click += new System.EventHandler(this.btnLocalSearch_Click);
//
// btnLocalDefaultLan
//
this.btnLocalDefaultLan.Location = new System.Drawing.Point(52, 118);
this.btnLocalDefaultLan.Name = "btnLocalDefaultLan";
this.btnLocalDefaultLan.Size = new System.Drawing.Size(314, 29);
this.btnLocalDefaultLan.TabIndex = 5;
this.btnLocalDefaultLan.Text = "\\\\sla12buma\\MagFlux$\\${machinename}";
this.btnLocalDefaultLan.UseVisualStyleBackColor = true;
this.btnLocalDefaultLan.Click += new System.EventHandler(this.btnLocalDefaultLan_Click);
//
// btnLocalDefaultLocal
//
this.btnLocalDefaultLocal.Location = new System.Drawing.Point(52, 83);
this.btnLocalDefaultLocal.Name = "btnLocalDefaultLocal";
this.btnLocalDefaultLocal.Size = new System.Drawing.Size(314, 29);
this.btnLocalDefaultLocal.TabIndex = 4;
this.btnLocalDefaultLocal.Text = "C:\\MagFluxLog\\";
this.btnLocalDefaultLocal.UseVisualStyleBackColor = true;
this.btnLocalDefaultLocal.Click += new System.EventHandler(this.btnLocalDefaultLocal_Click);
//
// lblLocalPath
//
this.lblLocalPath.AutoSize = true;
this.lblLocalPath.Location = new System.Drawing.Point(121, 57);
this.lblLocalPath.Name = "lblLocalPath";
this.lblLocalPath.Size = new System.Drawing.Size(0, 13);
this.lblLocalPath.TabIndex = 3;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(49, 57);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(66, 13);
this.label4.TabIndex = 2;
this.label4.Text = "CurrentPath:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(13, 190);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(37, 13);
this.label3.TabIndex = 1;
this.label3.Text = "Global";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(13, 32);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(103, 13);
this.label2.TabIndex = 0;
this.label2.Text = "Local (only ToolBox)";
//
// tabPage1
//
this.tabPage1.Controls.Add(this.btnAddRow);
this.tabPage1.Controls.Add(this.dgvConfig);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(760, 361);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Slots";
this.tabPage1.UseVisualStyleBackColor = true;
//
// btnAddRow
//
this.btnAddRow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnAddRow.Location = new System.Drawing.Point(6, 255);
this.btnAddRow.Name = "btnAddRow";
this.btnAddRow.Size = new System.Drawing.Size(199, 29);
this.btnAddRow.TabIndex = 5;
this.btnAddRow.Text = "Add Slot";
this.btnAddRow.UseVisualStyleBackColor = true;
this.btnAddRow.Click += new System.EventHandler(this.btnAddRow_Click);
//
// dgvConfig
//
this.dgvConfig.AllowUserToAddRows = false;
this.dgvConfig.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dgvConfig.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvConfig.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.cbxSlot,
this.cbxRequestPort,
this.cbxStreamingPort});
this.dgvConfig.Location = new System.Drawing.Point(6, 6);
this.dgvConfig.Name = "dgvConfig";
this.dgvConfig.Size = new System.Drawing.Size(746, 243);
this.dgvConfig.TabIndex = 4;
this.dgvConfig.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DgvConfig_CellContentClick);
this.dgvConfig.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dgvConfig_DataError);
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage4);
this.tabControl1.Location = new System.Drawing.Point(12, 74);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(768, 387);
this.tabControl1.TabIndex = 17;
//
// cbxSlot
//
this.cbxSlot.HeaderText = "Slot";
this.cbxSlot.Name = "cbxSlot";
//
// cbxRequestPort
//
this.cbxRequestPort.HeaderText = "RequestPort";
this.cbxRequestPort.Name = "cbxRequestPort";
//
// cbxStreamingPort
//
this.cbxStreamingPort.HeaderText = "StreamingPort";
this.cbxStreamingPort.Name = "cbxStreamingPort";
//
// FrmSetup
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(780, 671);
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.btnStore);
this.Controls.Add(this.btnReload);
this.MinimumSize = new System.Drawing.Size(755, 410);
this.Name = "FrmSetup";
this.Text = "Setup";
this.Load += new System.EventHandler(this.FrmSetup_Load);
this.tabPage4.ResumeLayout(false);
this.tabPage4.PerformLayout();
this.tabPage1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvConfig)).EndInit();
this.tabControl1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnReload;
private System.Windows.Forms.Button btnStore;
private System.Windows.Forms.TabPage tabPage4;
private System.Windows.Forms.Label lblGlobalCurrentPath;
private System.Windows.Forms.Button btnGlobalSearch;
private System.Windows.Forms.Button btnGlobalDefaultLan;
private System.Windows.Forms.Button btnGlobalDefaultLocal;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label lblLocalCurrentPath;
private System.Windows.Forms.Button btnLocalSearch;
private System.Windows.Forms.Button btnLocalDefaultLan;
private System.Windows.Forms.Button btnLocalDefaultLocal;
private System.Windows.Forms.Label lblLocalPath;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.Button btnAddRow;
private System.Windows.Forms.DataGridView dgvConfig;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.DataGridViewTextBoxColumn cbxSlot;
private System.Windows.Forms.DataGridViewComboBoxColumn cbxRequestPort;
private System.Windows.Forms.DataGridViewComboBoxColumn cbxStreamingPort;
}
}
+421
View File
@@ -0,0 +1,421 @@
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;
using Xylem.Common.CommonCore.Consts;
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
using Xylem.Common.Hardware.Interfaces.Ports.SerialPorts;
using Xylem.Common.Utils.Logging;
namespace Xylem.Common.Ui.MagFluxToolBox
{
/// <summary>
/// Setup of GTB
/// </summary>
public partial class FrmSetup : Form
{
private const String RequestPortString = "RequestPort";
private const String StreamingPortString = "StreamingPort";
private const String SlotString = "Slot";
private const String ValueString = "Value";
private const String TextString = "Text";
private String _fileString;
private readonly String _serialConfigFile;
private readonly DataTable _slotConfigDataTable = new DataTable();
/// <summary>
/// Ctor
/// </summary>
public FrmSetup()
{
_serialConfigFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"MagFlux", ProgramConfig.SerialConfigFileName);
//build header of data table for reference by name
_slotConfigDataTable.Columns.Add(SlotString, typeof(String));
_slotConfigDataTable.Columns.Add(StreamingPortString, typeof(String));
_slotConfigDataTable.Columns.Add(RequestPortString, typeof(String));
InitializeComponent();
cbxSlot.Name = SlotString;
cbxRequestPort.Name = RequestPortString;
cbxStreamingPort.Name = StreamingPortString;
cbxSlot.HeaderText = SlotString;
cbxRequestPort.HeaderText = RequestPortString;
cbxStreamingPort.HeaderText = StreamingPortString;
LoadFromFile();
}
private void BtnReload_Click(Object sender, EventArgs e)
{
LoadFromFile();
}
private void BtnStore_Click(Object sender, EventArgs e)
{
StoreToPc();
}
private void StoreToPc()
{
var newFileContent = new List<SlotConfig>();
for (var row = 0; row < dgvConfig.Rows.Count; row++)
{
var slotStr = (String)dgvConfig.Rows[row].Cells[SlotString].Value;
int.TryParse(slotStr, out var slot);
var requestPort = new PortConfig()
{
PortName = (String)dgvConfig.Rows[row].Cells[RequestPortString].Value,
Type = typeof(UartSerialPort).FullName
};
var streamingPort = new PortConfig()
{
PortName = (String)dgvConfig.Rows[row].Cells[StreamingPortString].Value,
Type = typeof(UartSerialPort).FullName
};
if (!string.IsNullOrEmpty(slotStr))
{
newFileContent.Add(new SlotConfig()
{
Slot = slot, Request = requestPort, Streaming = streamingPort
});
}
}
var text = JsonConvert.SerializeObject(newFileContent);
// Overwrite only on changed content
if (text == _fileString)
{
LoadFromFile();
return;
}
//save file only on changed content
if (File.Exists(_serialConfigFile))
{
var backupSerialConfigFile = $"{Path.GetDirectoryName(_serialConfigFile)}" +
$"\\Backup_{DateTime.Now:yyyyMMdd}_{DateTime.Now:HHmmss}" +
$"_{ProgramConfig.SerialConfigFileName}";
File.Move(_serialConfigFile, backupSerialConfigFile);
}
File.WriteAllText(_serialConfigFile, text);
LoadFromFile();
}
private void LoadFromFile()
{
_slotConfigDataTable.Clear();
dgvConfig.Rows.Clear();
if (!File.Exists(_serialConfigFile))
{
return;
}
SlotConfig[] meterConfigList;
using (var tr = new StreamReader(_serialConfigFile))
{
_fileString = tr.ReadToEnd();
meterConfigList = JsonConvert.DeserializeObject<SlotConfig[]>(_fileString);
}
foreach (var item in meterConfigList)
{
var row = _slotConfigDataTable.NewRow();
row[SlotString] = item.Slot;
row[RequestPortString] = item.Request.PortName;
row[StreamingPortString] = item.Streaming.PortName;
_slotConfigDataTable.Rows.Add(row);
}
foreach (DataRow row in _slotConfigDataTable.Rows)
{
dgvConfig.Rows.Add(AddRowToGrid(row));
}
}
private DataGridViewRow AddRowToGrid(DataRow row = null)
{
var newRow = new DataGridViewRow();
var slotCell = new DataGridViewTextBoxCell();
newRow.Cells.Add(slotCell);
var requestPortCell = new DataGridViewComboBoxCell
{
DataSource = GetPorts(),
DisplayMember = TextString,
ValueMember = ValueString
};
newRow.Cells.Add(requestPortCell);
var streamingPortCell = new DataGridViewComboBoxCell
{
DataSource = GetPorts(),
DisplayMember = TextString,
ValueMember = ValueString
};
newRow.Cells.Add(streamingPortCell);
if (row == null)
{
return newRow;
}
slotCell.Value = row[SlotString];
streamingPortCell.Value = row[StreamingPortString];
requestPortCell.Value = row[RequestPortString];
return newRow;
}
private DataTable GetPorts()
{
var ret = new DataTable();
ret.Columns.Add(ValueString);
ret.Columns.Add(TextString);
var portList = SerialPort.GetPortNames().ToList();
foreach (var item in portList)
{
ret.Rows.Add(item, item);
}
foreach (DataRow row in _slotConfigDataTable.Rows)
{
if (portList.All(pl => pl != (String)row[StreamingPortString]))
{
ret.Rows.Add(row[StreamingPortString].ToString(), BaseSerialPort.PortNotAssigned);
}
if (portList.All(pl => pl != (String)row[RequestPortString]))
{
ret.Rows.Add(row[RequestPortString].ToString(), BaseSerialPort.PortNotAssigned);
}
}
return ret;
}
private static DataTable GetTypes()
{
var ret = new DataTable();
ret.Columns.Add(ValueString);
ret.Columns.Add(TextString);
ret.Rows.Add(typeof(UartSerialPort).FullName, nameof(UartSerialPort));
//ret.Rows.Add(typeof(RfidSerialPort).FullName, nameof(RfidSerialPort));
//ret.Rows.Add(typeof(IrdaSerialPort).FullName, nameof(IrdaSerialPort));
return ret;
}
private ConcurrentBag<String> _countRawData = new ConcurrentBag<String>();
private void DgvConfig_CellContentClick(Object sender, DataGridViewCellEventArgs e)
{
//if (!dgvConfig.Columns[e.ColumnIndex].Name.Contains(StreamingDetectString) &&
// !dgvConfig.Columns[e.ColumnIndex].Name.Contains(RequestDetectString))
//{
// return;
//}
//StoreToPc();
//var slotString = (String)dgvConfig.Rows[e.RowIndex].Cells[SlotString].Value;
//int.TryParse(slotString, out var slot);
//using (var mb = new MeterBatch())
//{
// using (var meter = new GenesisMeter())
// {
// meter.SetupFromConfigFile(slot, false);
// mb.AddMeter(meter);
// const String checkMark = "\u2714";
// if (dgvConfig.Columns[e.ColumnIndex].Name.Contains(StreamingDetectString))
// {
// _countRawData = new ConcurrentBag<String>();
// meter.StreamingPort.OnRawRecordReceived += delegate (Object o, BasePortDataEventArgs rawMsg)
// {
// _countRawData.Add((String)rawMsg.GetData());
// };
// Thread.Sleep(500);
// if (_countRawData.Any())
// {
// var text = $"SUCCESS\nSlot: {slot}\nStreaming port: {meter.StreamingPort.GetPortName()}\n\n{checkMark}";
// MessageBox.Show(text, @"SUCCESS", MessageBoxButtons.OK);
// dgvConfig.Rows[e.RowIndex].Cells[StreamingDetectString].Style.BackColor = Color.Green;
// }
// else
// {
// var text = $"FAILED\nSlot: {slot}\nStreaming port: {meter.StreamingPort.GetPortName()}";
// MessageBox.Show(text, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
// dgvConfig.Rows[e.RowIndex].Cells[StreamingDetectString].Style.BackColor = Color.Red;
// }
// _countRawData = new ConcurrentBag<String>();
// }
// else
// {
// meter.Logout();
// var pcbId = meter.GetPcbId();
// if (string.IsNullOrEmpty(pcbId))
// {
// var text = $"FAILED\nSlot: {slot}\nRequest port: {meter.RequestPort.GetPortName()}";
// MessageBox.Show(text, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
// dgvConfig.Rows[e.RowIndex].Cells[RequestDetectString].Style.BackColor = Color.Red;
// }
// else
// {
// var text = $"SUCCESS\nSlot: {slot}\nRequest port: {meter.RequestPort.GetPortName()}\n\n{checkMark}";
// MessageBox.Show(text, @"SUCCESS", MessageBoxButtons.OK);
// dgvConfig.Rows[e.RowIndex].Cells[RequestDetectString].Style.BackColor = Color.Green;
// }
// }
// }
//}
}
private void dgvConfig_DataError(Object sender, DataGridViewDataErrorEventArgs e)
{
}
private void FrmSetup_Load(Object sender, EventArgs e)
{
}
private void tabPage4_Click(Object sender, EventArgs e)
{
try
{
var path = NLogHelper.GetCurrentApplicationFolder();
var a = XElement.Load(path);
lblLocalCurrentPath.Text = a.Elements().First(
s => s.Name.LocalName == "variable").Attributes().First(
s => s.Value == "BasePath").NextAttribute.Value;
}
catch (Exception ex)
{
lblLocalCurrentPath.Text = ex.Message;
}
try
{
var path = NLogHelper.GetApplicationDataPath();
var b = XElement.Load(path);
lblGlobalCurrentPath.Text = b.Elements().First(
s => s.Name.LocalName == "variable").Attributes().First(
s => s.Value == "BasePath").NextAttribute.Value;
}
catch (Exception ex)
{
lblGlobalCurrentPath.Text = ex.Message;
}
}
private void Add(String path, String newDest)
{
try
{
var a = XElement.Load(path);
var firstIsVariable = a.Elements().First();
if (firstIsVariable.Name.LocalName != "variable")
{
var newElm = new XElement("variable", null);
newElm.SetAttributeValue("name", "BasePath");
newElm.SetAttributeValue("value", newDest);
a.AddFirst(newElm);
}
else if (a.Elements().First(b => b.Name.LocalName == "variable").Attributes()
.All(s => s.Value != "BasePath"))
{
var newElm = new XElement("variable", null);
newElm.SetAttributeValue("name", "BasePath");
newElm.SetAttributeValue("value", newDest);
a.AddFirst(newElm);
}
else
{
a.Elements().First(b => b.Name.LocalName == "variable").Attributes()
.First(s => s.Value == "BasePath").NextAttribute.Value = newDest;
}
a.Save(path);
tabPage4_Click(this, null);
}
catch (Exception)
{
// ignore;
}
}
private void btnLocalDefaultLocal_Click(Object sender, EventArgs e)
{
Add(NLogHelper.GetCurrentApplicationFolder(), "C:\\MagFluxLog\\");
}
private void btnLocalDefaultLan_Click(Object sender, EventArgs e)
{
//Add(NLogHelper.GetCurrentApplicationFolder(), "\\\\sla12buma\\cordonelds$\\${machinename}");
}
private void btnGlobalDefaultLocal_Click(Object sender, EventArgs e)
{
Add(NLogHelper.GetApplicationDataPath(), "C:\\MagFluxLog\\");
}
private void btnGlobalDefaultLan_Click(Object sender, EventArgs e)
{
//Add(NLogHelper.GetApplicationDataPath(), "\\\\sla12buma\\cordonelds$\\${{machinename}}");
}
private void btnGlobalSearch_Click(Object sender, EventArgs e)
{
var dia = new FolderBrowserDialog();
dia.ShowDialog();
Add(NLogHelper.GetApplicationDataPath(), dia.SelectedPath);
}
private void btnLocalSearch_Click(Object sender, EventArgs e)
{
var dia = new FolderBrowserDialog();
dia.ShowDialog();
Add(NLogHelper.GetCurrentApplicationFolder(), dia.SelectedPath);
}
private void btnAddRow_Click(Object sender, EventArgs e)
{
dgvConfig.Rows.Add(AddRowToGrid());
}
}
}
+129
View File
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="cbxSlot.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="cbxRequestPort.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="cbxStreamingPort.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+525
View File
@@ -0,0 +1,525 @@
namespace Xylem.Common.Ui.MagFluxToolBox
{
partial class FrmTest
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.grpSetup = new System.Windows.Forms.GroupBox();
this.btnConnect = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.cbComSlot = new System.Windows.Forms.ComboBox();
this.lblSensorNo = new System.Windows.Forms.Label();
this.tbxSensorNo = new System.Windows.Forms.TextBox();
this.lblWaitingForMeterResponse = new System.Windows.Forms.Label();
this.lblOverall = new System.Windows.Forms.Label();
this.barSingleProgressUpdate = new System.Windows.Forms.ProgressBar();
this.lblActualProcess = new System.Windows.Forms.Label();
this.barOverallProgressUpdate = new System.Windows.Forms.ProgressBar();
this.tmrProgressUpdate = new System.Windows.Forms.Timer(this.components);
this.dlgOpenLuFile = new System.Windows.Forms.OpenFileDialog();
this.lblFwUpdateInfo = new System.Windows.Forms.Label();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.label9 = new System.Windows.Forms.Label();
this.lblUpdateTime = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.picLogo = new System.Windows.Forms.PictureBox();
this.grpMeasurements = new System.Windows.Forms.GroupBox();
this.tbxVolume = new System.Windows.Forms.TextBox();
this.tbxFlowRate = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.tbxUniqueId = new System.Windows.Forms.TextBox();
this.lblUniqueId = new System.Windows.Forms.Label();
this.grpInfo = new System.Windows.Forms.GroupBox();
this.lblSensorId = new System.Windows.Forms.Label();
this.tbxStatus = new System.Windows.Forms.TextBox();
this.lblStatus = new System.Windows.Forms.Label();
this.lblFwVersion = new System.Windows.Forms.Label();
this.tbxFwVersion = new System.Windows.Forms.TextBox();
this.lblFwBuildDate = new System.Windows.Forms.Label();
this.tbxFwBuildDate = new System.Windows.Forms.TextBox();
this.lblFwGitHash = new System.Windows.Forms.Label();
this.tbxFwGitHash = new System.Windows.Forms.TextBox();
this.lblMeterSize = new System.Windows.Forms.Label();
this.tbxMeterSize = new System.Windows.Forms.TextBox();
this.grpSetup.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.picLogo)).BeginInit();
this.grpMeasurements.SuspendLayout();
this.grpInfo.SuspendLayout();
this.SuspendLayout();
//
// grpSetup
//
this.grpSetup.Controls.Add(this.btnConnect);
this.grpSetup.Controls.Add(this.label2);
this.grpSetup.Controls.Add(this.cbComSlot);
this.grpSetup.Controls.Add(this.lblSensorNo);
this.grpSetup.Location = new System.Drawing.Point(100, -1);
this.grpSetup.Name = "grpSetup";
this.grpSetup.Size = new System.Drawing.Size(214, 102);
this.grpSetup.TabIndex = 24;
this.grpSetup.TabStop = false;
this.grpSetup.Text = "Setup";
//
// btnConnect
//
this.btnConnect.Location = new System.Drawing.Point(86, 71);
this.btnConnect.Name = "btnConnect";
this.btnConnect.Size = new System.Drawing.Size(116, 25);
this.btnConnect.TabIndex = 24;
this.btnConnect.Text = "Connect";
this.btnConnect.UseVisualStyleBackColor = true;
this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(9, 77);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(28, 13);
this.label2.TabIndex = 20;
this.label2.Text = "Slot:";
//
// cbComSlot
//
this.cbComSlot.FormattingEnabled = true;
this.cbComSlot.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20"});
this.cbComSlot.Location = new System.Drawing.Point(43, 73);
this.cbComSlot.Name = "cbComSlot";
this.cbComSlot.Size = new System.Drawing.Size(37, 21);
this.cbComSlot.TabIndex = 5;
this.cbComSlot.Text = "1";
this.cbComSlot.SelectedIndexChanged += new System.EventHandler(this.cbComSlot_SelectedIndexChanged);
//
// lblSensorNo
//
this.lblSensorNo.AutoSize = true;
this.lblSensorNo.Location = new System.Drawing.Point(9, 20);
this.lblSensorNo.Name = "lblSensorNo";
this.lblSensorNo.Size = new System.Drawing.Size(33, 13);
this.lblSensorNo.TabIndex = 23;
this.lblSensorNo.Text = "NOT ";
//
// tbxSensorNo
//
this.tbxSensorNo.Location = new System.Drawing.Point(103, 45);
this.tbxSensorNo.Name = "tbxSensorNo";
this.tbxSensorNo.ReadOnly = true;
this.tbxSensorNo.Size = new System.Drawing.Size(116, 20);
this.tbxSensorNo.TabIndex = 32;
//
// lblWaitingForMeterResponse
//
this.lblWaitingForMeterResponse.AutoSize = true;
this.lblWaitingForMeterResponse.ForeColor = System.Drawing.Color.Red;
this.lblWaitingForMeterResponse.Location = new System.Drawing.Point(529, 351);
this.lblWaitingForMeterResponse.Name = "lblWaitingForMeterResponse";
this.lblWaitingForMeterResponse.Size = new System.Drawing.Size(182, 13);
this.lblWaitingForMeterResponse.TabIndex = 18;
this.lblWaitingForMeterResponse.Text = "WAITING FOR METER RESPONSE";
//
// lblOverall
//
this.lblOverall.AutoSize = true;
this.lblOverall.Location = new System.Drawing.Point(18, 388);
this.lblOverall.Name = "lblOverall";
this.lblOverall.Size = new System.Drawing.Size(80, 13);
this.lblOverall.TabIndex = 7;
this.lblOverall.Text = "Overall process";
//
// barSingleProgressUpdate
//
this.barSingleProgressUpdate.Location = new System.Drawing.Point(9, 367);
this.barSingleProgressUpdate.Name = "barSingleProgressUpdate";
this.barSingleProgressUpdate.Size = new System.Drawing.Size(702, 18);
this.barSingleProgressUpdate.TabIndex = 6;
this.barSingleProgressUpdate.Visible = false;
//
// lblActualProcess
//
this.lblActualProcess.AutoSize = true;
this.lblActualProcess.Location = new System.Drawing.Point(18, 351);
this.lblActualProcess.Name = "lblActualProcess";
this.lblActualProcess.Size = new System.Drawing.Size(76, 13);
this.lblActualProcess.TabIndex = 4;
this.lblActualProcess.Text = "Process status";
//
// barOverallProgressUpdate
//
this.barOverallProgressUpdate.Location = new System.Drawing.Point(9, 404);
this.barOverallProgressUpdate.Name = "barOverallProgressUpdate";
this.barOverallProgressUpdate.Size = new System.Drawing.Size(702, 18);
this.barOverallProgressUpdate.TabIndex = 3;
this.barOverallProgressUpdate.Visible = false;
//
// tmrProgressUpdate
//
this.tmrProgressUpdate.Interval = 200;
this.tmrProgressUpdate.Tick += new System.EventHandler(this.tmrProgressUpdate_Tick);
//
// dlgOpenLuFile
//
this.dlgOpenLuFile.Filter = "metrology lookup tables (*.lut)|*.lut";
//
// lblFwUpdateInfo
//
this.lblFwUpdateInfo.AutoSize = true;
this.lblFwUpdateInfo.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblFwUpdateInfo.Location = new System.Drawing.Point(623, 66);
this.lblFwUpdateInfo.Name = "lblFwUpdateInfo";
this.lblFwUpdateInfo.Size = new System.Drawing.Size(72, 13);
this.lblFwUpdateInfo.TabIndex = 27;
this.lblFwUpdateInfo.Text = "Version: 0.0.0";
//
// openFileDialog1
//
this.openFileDialog1.FileName = "openFileDialog1";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(247, 351);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(101, 13);
this.label9.TabIndex = 30;
this.label9.Text = "UpdateTime [min:s]:";
//
// lblUpdateTime
//
this.lblUpdateTime.AutoSize = true;
this.lblUpdateTime.Location = new System.Drawing.Point(354, 351);
this.lblUpdateTime.Name = "lblUpdateTime";
this.lblUpdateTime.Size = new System.Drawing.Size(28, 13);
this.lblUpdateTime.TabIndex = 31;
this.lblUpdateTime.Text = "0:00";
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pictureBox1.Image = global::Xylem.Common.Ui.MagFluxToolBox.Properties.Resources.MagFluxVerySmall;
this.pictureBox1.Location = new System.Drawing.Point(9, 5);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(85, 96);
this.pictureBox1.TabIndex = 33;
this.pictureBox1.TabStop = false;
//
// picLogo
//
this.picLogo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.picLogo.Image = global::Xylem.Common.Ui.MagFluxToolBox.Properties.Resources.MjK_LogoSmall;
this.picLogo.InitialImage = null;
this.picLogo.Location = new System.Drawing.Point(620, 5);
this.picLogo.Name = "picLogo";
this.picLogo.Size = new System.Drawing.Size(91, 58);
this.picLogo.TabIndex = 34;
this.picLogo.TabStop = false;
//
// grpMeasurements
//
this.grpMeasurements.Controls.Add(this.tbxStatus);
this.grpMeasurements.Controls.Add(this.lblStatus);
this.grpMeasurements.Controls.Add(this.tbxVolume);
this.grpMeasurements.Controls.Add(this.tbxFlowRate);
this.grpMeasurements.Controls.Add(this.label7);
this.grpMeasurements.Controls.Add(this.label11);
this.grpMeasurements.Location = new System.Drawing.Point(320, -1);
this.grpMeasurements.Name = "grpMeasurements";
this.grpMeasurements.Size = new System.Drawing.Size(203, 102);
this.grpMeasurements.TabIndex = 37;
this.grpMeasurements.TabStop = false;
this.grpMeasurements.Text = "Measurements";
//
// tbxVolume
//
this.tbxVolume.Location = new System.Drawing.Point(114, 17);
this.tbxVolume.Name = "tbxVolume";
this.tbxVolume.ReadOnly = true;
this.tbxVolume.Size = new System.Drawing.Size(68, 20);
this.tbxVolume.TabIndex = 31;
//
// tbxFlowRate
//
this.tbxFlowRate.Location = new System.Drawing.Point(114, 47);
this.tbxFlowRate.Name = "tbxFlowRate";
this.tbxFlowRate.ReadOnly = true;
this.tbxFlowRate.Size = new System.Drawing.Size(68, 20);
this.tbxFlowRate.TabIndex = 29;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(6, 50);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(89, 13);
this.label7.TabIndex = 27;
this.label7.Text = "Flow Rate [m²/h]:";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(6, 20);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(65, 13);
this.label11.TabIndex = 25;
this.label11.Text = "Volume [m²]:";
//
// tbxUniqueId
//
this.tbxUniqueId.Location = new System.Drawing.Point(103, 20);
this.tbxUniqueId.Name = "tbxUniqueId";
this.tbxUniqueId.ReadOnly = true;
this.tbxUniqueId.Size = new System.Drawing.Size(190, 20);
this.tbxUniqueId.TabIndex = 34;
//
// lblUniqueId
//
this.lblUniqueId.AutoSize = true;
this.lblUniqueId.Location = new System.Drawing.Point(3, 23);
this.lblUniqueId.Name = "lblUniqueId";
this.lblUniqueId.Size = new System.Drawing.Size(58, 13);
this.lblUniqueId.TabIndex = 35;
this.lblUniqueId.Text = "Unique ID:";
//
// grpInfo
//
this.grpInfo.Controls.Add(this.lblMeterSize);
this.grpInfo.Controls.Add(this.tbxMeterSize);
this.grpInfo.Controls.Add(this.lblFwGitHash);
this.grpInfo.Controls.Add(this.tbxFwGitHash);
this.grpInfo.Controls.Add(this.lblFwBuildDate);
this.grpInfo.Controls.Add(this.tbxFwBuildDate);
this.grpInfo.Controls.Add(this.lblFwVersion);
this.grpInfo.Controls.Add(this.tbxFwVersion);
this.grpInfo.Controls.Add(this.lblSensorId);
this.grpInfo.Controls.Add(this.tbxUniqueId);
this.grpInfo.Controls.Add(this.tbxSensorNo);
this.grpInfo.Controls.Add(this.lblUniqueId);
this.grpInfo.Location = new System.Drawing.Point(9, 107);
this.grpInfo.Name = "grpInfo";
this.grpInfo.Size = new System.Drawing.Size(305, 232);
this.grpInfo.TabIndex = 25;
this.grpInfo.TabStop = false;
this.grpInfo.Text = "Info";
//
// lblSensorId
//
this.lblSensorId.AutoSize = true;
this.lblSensorId.Location = new System.Drawing.Point(4, 48);
this.lblSensorId.Name = "lblSensorId";
this.lblSensorId.Size = new System.Drawing.Size(57, 13);
this.lblSensorId.TabIndex = 36;
this.lblSensorId.Text = "Sensor ID:";
//
// tbxStatus
//
this.tbxStatus.Location = new System.Drawing.Point(114, 74);
this.tbxStatus.Name = "tbxStatus";
this.tbxStatus.ReadOnly = true;
this.tbxStatus.Size = new System.Drawing.Size(68, 20);
this.tbxStatus.TabIndex = 33;
//
// lblStatus
//
this.lblStatus.AutoSize = true;
this.lblStatus.Location = new System.Drawing.Point(6, 77);
this.lblStatus.Name = "lblStatus";
this.lblStatus.Size = new System.Drawing.Size(40, 13);
this.lblStatus.TabIndex = 32;
this.lblStatus.Text = "Status:";
//
// lblFwVersion
//
this.lblFwVersion.AutoSize = true;
this.lblFwVersion.Location = new System.Drawing.Point(4, 73);
this.lblFwVersion.Name = "lblFwVersion";
this.lblFwVersion.Size = new System.Drawing.Size(65, 13);
this.lblFwVersion.TabIndex = 38;
this.lblFwVersion.Text = "FW Version:";
//
// tbxFwVersion
//
this.tbxFwVersion.Location = new System.Drawing.Point(103, 70);
this.tbxFwVersion.Name = "tbxFwVersion";
this.tbxFwVersion.ReadOnly = true;
this.tbxFwVersion.Size = new System.Drawing.Size(116, 20);
this.tbxFwVersion.TabIndex = 37;
//
// lblFwBuildDate
//
this.lblFwBuildDate.AutoSize = true;
this.lblFwBuildDate.Location = new System.Drawing.Point(4, 98);
this.lblFwBuildDate.Name = "lblFwBuildDate";
this.lblFwBuildDate.Size = new System.Drawing.Size(79, 13);
this.lblFwBuildDate.TabIndex = 40;
this.lblFwBuildDate.Text = "FW Build Date:";
//
// tbxFwBuildDate
//
this.tbxFwBuildDate.Location = new System.Drawing.Point(103, 95);
this.tbxFwBuildDate.Name = "tbxFwBuildDate";
this.tbxFwBuildDate.ReadOnly = true;
this.tbxFwBuildDate.Size = new System.Drawing.Size(116, 20);
this.tbxFwBuildDate.TabIndex = 39;
//
// lblFwGitHash
//
this.lblFwGitHash.AutoSize = true;
this.lblFwGitHash.Location = new System.Drawing.Point(6, 123);
this.lblFwGitHash.Name = "lblFwGitHash";
this.lblFwGitHash.Size = new System.Drawing.Size(76, 13);
this.lblFwGitHash.TabIndex = 42;
this.lblFwGitHash.Text = "FW GIT Hash:";
//
// tbxFwGitHash
//
this.tbxFwGitHash.Location = new System.Drawing.Point(103, 120);
this.tbxFwGitHash.Name = "tbxFwGitHash";
this.tbxFwGitHash.ReadOnly = true;
this.tbxFwGitHash.Size = new System.Drawing.Size(116, 20);
this.tbxFwGitHash.TabIndex = 41;
//
// lblMeterSize
//
this.lblMeterSize.AutoSize = true;
this.lblMeterSize.Location = new System.Drawing.Point(4, 148);
this.lblMeterSize.Name = "lblMeterSize";
this.lblMeterSize.Size = new System.Drawing.Size(85, 13);
this.lblMeterSize.TabIndex = 44;
this.lblMeterSize.Text = "Meter Size [DN]:";
//
// tbxMeterSize
//
this.tbxMeterSize.Location = new System.Drawing.Point(103, 145);
this.tbxMeterSize.Name = "tbxMeterSize";
this.tbxMeterSize.ReadOnly = true;
this.tbxMeterSize.Size = new System.Drawing.Size(116, 20);
this.tbxMeterSize.TabIndex = 43;
//
// FrmTest
//
this.AccessibleRole = System.Windows.Forms.AccessibleRole.Sound;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(723, 432);
this.Controls.Add(this.grpInfo);
this.Controls.Add(this.grpMeasurements);
this.Controls.Add(this.picLogo);
this.Controls.Add(this.lblUpdateTime);
this.Controls.Add(this.label9);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.lblWaitingForMeterResponse);
this.Controls.Add(this.lblOverall);
this.Controls.Add(this.lblFwUpdateInfo);
this.Controls.Add(this.barSingleProgressUpdate);
this.Controls.Add(this.lblActualProcess);
this.Controls.Add(this.grpSetup);
this.Controls.Add(this.barOverallProgressUpdate);
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(739, 500);
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(739, 405);
this.Name = "FrmTest";
this.Text = "MagFlux Test";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmTest_FormClosing);
this.Load += new System.EventHandler(this.FrmTest_Load);
this.grpSetup.ResumeLayout(false);
this.grpSetup.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.picLogo)).EndInit();
this.grpMeasurements.ResumeLayout(false);
this.grpMeasurements.PerformLayout();
this.grpInfo.ResumeLayout(false);
this.grpInfo.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.GroupBox grpSetup;
private System.Windows.Forms.Button btnConnect;
private System.Windows.Forms.Label lblSensorNo;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cbComSlot;
private System.Windows.Forms.ProgressBar barOverallProgressUpdate;
private System.Windows.Forms.Timer tmrProgressUpdate;
private System.Windows.Forms.Label lblActualProcess;
private System.Windows.Forms.Label lblOverall;
private System.Windows.Forms.ProgressBar barSingleProgressUpdate;
private System.Windows.Forms.OpenFileDialog dlgOpenLuFile;
private System.Windows.Forms.Label lblFwUpdateInfo;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Label lblWaitingForMeterResponse;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label lblUpdateTime;
private System.Windows.Forms.TextBox tbxSensorNo;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox picLogo;
private System.Windows.Forms.GroupBox grpMeasurements;
private System.Windows.Forms.TextBox tbxVolume;
private System.Windows.Forms.TextBox tbxFlowRate;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox tbxUniqueId;
private System.Windows.Forms.Label lblUniqueId;
private System.Windows.Forms.GroupBox grpInfo;
private System.Windows.Forms.Label lblSensorId;
private System.Windows.Forms.TextBox tbxStatus;
private System.Windows.Forms.Label lblStatus;
private System.Windows.Forms.Label lblMeterSize;
private System.Windows.Forms.TextBox tbxMeterSize;
private System.Windows.Forms.Label lblFwGitHash;
private System.Windows.Forms.TextBox tbxFwGitHash;
private System.Windows.Forms.Label lblFwBuildDate;
private System.Windows.Forms.TextBox tbxFwBuildDate;
private System.Windows.Forms.Label lblFwVersion;
private System.Windows.Forms.TextBox tbxFwVersion;
}
}
+576
View File
@@ -0,0 +1,576 @@
using System;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Xylem.Common.Hardware.WaterMeter.MagFlux.DataPackages.EventArguments;
using Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
using Xylem.Common.Utils.ProcessExec.EventArguments;
namespace Xylem.Common.Ui.MagFluxToolBox
{
/// <summary>
/// Test form for MagFlux operation
/// </summary>
public partial class FrmTest : Form
{
#region Variables
private readonly MeterBatch _meterBatch = new MeterBatch();
private MagFluxMeter _magFluxMeter;
private const String StrConnecting = "Connecting to PCB";
private const String StrNotConnected = "NOT CONNECTED";
private const String StrOverallProcess = "Overall Process";
private String _lastState;
private Int32 _lastSingleProgress;
private DateTimeOffset _startTime;
private Boolean _resetTimeMeasurement;
private readonly Boolean _updateGui = true;
private Boolean _tryConnectPcb;
// external update remarks form
// private readonly FrmHistory _frmHistory = new FrmHistory();
private readonly Version _version;
// marker for initial connection to update information just needed once
private Boolean _initialConnect;
// status information
private static readonly Color ColorDefault = Color.Black;
private static readonly Color ColorSuccess = Color.Green;
private static readonly Color ColorProcessFailed = Color.Red;
//private static readonly Color ColorOngoingProcess = Color.Blue;
//private static readonly Color ColorUnknownStatus = Color.Gray;
//private const String SuccessSign = @"✔";
//private const String FailedSign = @"✘";
private const String StrSeparator = "-----------------------------------------------------" +
"-----------------------------------------------------";
#endregion
#region FormControls
/// <summary>
/// Ctor FW update
/// </summary>
public FrmTest()
{
InitializeComponent();
var cultureInfo = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
_version = Assembly.GetExecutingAssembly().GetName().Version;
}
/// <summary>
/// Clear data table and set genesis to not connected
/// </summary>
private void Init()
{
ProcessViewControl(false);
lblSensorNo.Text = StrNotConnected;
lblSensorNo.ForeColor = Color.Red;
lblWaitingForMeterResponse.Visible = false;
btnConnect.Enabled = true;
SetControlDownloadsLocked();
_initialConnect = true;
}
private void FrmTest_Load(Object sender, EventArgs e)
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
lblFwUpdateInfo.Text = $@"Version: {version.Major}.{version.Minor}.{version.Build}";
_resetTimeMeasurement = true;
Init();
LogText($"MagFluxToolBox: {_version.Major}.{_version.Minor}.{_version.Build}");
LogText(StrSeparator);
}
private void FrmTest_FormClosing(Object sender, FormClosingEventArgs e)
{
_magFluxMeter.OnStreamingRecordDecoded -= StreamingCatcher_OnStreamingRecordDecoded;
_magFluxMeter?.Logout();
_magFluxMeter?.StopStreamingCatcher();
_meterBatch?.RemoveAllMeters();
_meterBatch?.Dispose();
Dispose();
}
private void cbComSlot_SelectedIndexChanged(Object sender, EventArgs e)
{
_resetTimeMeasurement = true;
Init();
}
#endregion
#region ActivationControls
private void SetControlDownloadsLocked()
{
btnConnect.Enabled = true;
}
private void SetControlsDownloadIsOngoing()
{
btnConnect.Enabled = false;
}
private void SetControlsDownloadIsFinished()
{
btnConnect.Enabled = true;
}
private void SetControlsDownloadEnabled()
{
btnConnect.Enabled = true;
}
#endregion
#region BoardControls
/// <summary>
/// Cyclic execution of catcher on incoming events.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StreamingCatcher_OnStreamingRecordDecoded(Object sender, MagFluxFlowDataEventArgs e)
{
Invoke(new Action(() =>
{
tbxVolume.Text = $@"{e.NewData.VolumeCm:F3}";
tbxFlowRate.Text = $@"{e.NewData.FlowRateCmPh:F3}";
tbxStatus.Text = $@"0x{e.NewData.StatusBits:X8}";
}));
}
private void Connect()
{
try
{
Init();
if (string.IsNullOrEmpty(cbComSlot.SelectedItem.ToString()) ||
!int.TryParse(cbComSlot.SelectedItem.ToString(), out var slotNr))
{
return;
}
//lblOverall.Text = @"Establish data base connection..";
Task.Factory.StartNew(() =>
{
ViewProgressPcb(true);
_magFluxMeter?.DisposeMeter();
//dispose old meter
_meterBatch.RemoveAllMeters();
_magFluxMeter = null;
Thread.Sleep(200);
//assign new meter and assign meter to FW update file if this exists
_magFluxMeter = new MagFluxMeter();
_magFluxMeter.SetupFromConfigFile(slotNr);
_meterBatch.AddMeter(_magFluxMeter);
_magFluxMeter.Configuration.UseRegisterWatchService = false;
_magFluxMeter.Configuration.UseMinMaxCheck = false;
_magFluxMeter.OnStreamingRecordDecoded += StreamingCatcher_OnStreamingRecordDecoded;
_meterBatch.MetersLogin();
Invoke(new Action(() =>
{
if (_magFluxMeter != null && _magFluxMeter.IsLoggedOn)
{
lblSensorNo.Text = "";
tbxUniqueId.Text = _magFluxMeter.PcbId;
tbxSensorNo.Text = _magFluxMeter.SerialNumber;
tbxFwVersion.Text = _magFluxMeter.FwVersion;
tbxFwBuildDate.Text = _magFluxMeter.FwBuildDate;
tbxFwGitHash.Text = _magFluxMeter.FwGitHash;
tbxMeterSize.Text = _magFluxMeter.MeterSize_mm.ToString();
lblSensorNo.ForeColor = Color.Green;
CheckUpdateEnabled();
_magFluxMeter.StartStreamingCatcher();
_magFluxMeter.Logout();
LogInstalledMeterFw();
}
}));
}).ContinueWith(delegate
{
ViewProgressPcb(false);
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
LogErrorText(ex.Message);
}
}
#endregion
#region ProcessControls
private void ViewProgressPcb(Boolean isActive)
{
if (_updateGui)
{
if (isActive)
{
Invoke(new Action(() =>
{
_tryConnectPcb = true;
ProcessViewControl(true);
lblActualProcess.Text = StrConnecting;
lblOverall.Text = StrOverallProcess;
}));
}
else
{
Invoke(new Action(() =>
{
_tryConnectPcb = false;
ProcessViewControl(false);
}));
}
}
}
/// <summary>
/// View all process bars and labels
/// </summary>
private void ProcessViewControl(Boolean view)
{
if (view)
{
lblActualProcess.Visible = true;
lblOverall.Visible = true;
barOverallProgressUpdate.Visible = true;
barSingleProgressUpdate.Visible = true;
_lastState = "";
tmrProgressUpdate.Enabled = true;
}
else
{
lblActualProcess.Visible = false;
lblOverall.Visible = false;
barOverallProgressUpdate.Visible = false;
barSingleProgressUpdate.Visible = false;
tmrProgressUpdate.Enabled = false;
_lastState = "";
lblWaitingForMeterResponse.Visible = false;
lblActualProcess.Text = "";
lblOverall.Text = "";
}
//common actions and settings
lblActualProcess.Update();
lblOverall.Update();
barOverallProgressUpdate.Value = 0;
barOverallProgressUpdate.Update();
barSingleProgressUpdate.Value = 0;
barSingleProgressUpdate.Update();
Update();
}
private void StartStopDownload(Boolean isActive)
{
if (isActive)
{
Invoke(new Action(() =>
{
ProcessViewControl(true);
tmrProgressUpdate.Enabled = true;
}));
}
else
{
Invoke(new Action(() =>
{
ProcessViewControl(false);
SetControlsDownloadIsFinished();
//// update the display of the meter size, LUT CRC and region
//tbxMeterFw.Text = _magFluxMeter.FwVersion;
//tbxMeterMeterSize.Text = _magFluxMeter.MeterSize_mm;
//tbxMeterLutCrc.Text = _magFluxMeter.LutCrc;
//tbxRegion.Text = _magFluxMeter.Region;
//if (!_lutFileSuccessfulWritten)
//{
// lblLutFileLoadedInfo.ForeColor = Color.Red;
// lblLutFileLoadedInfo.Text = StrUpdateErrorMessage;
// var txt = StrUpdateErrorMessage;
// if (!string.IsNullOrEmpty(_meterLutUpdate?.ErrorMessage))
// {
// txt += "\n";
// txt += _meterLutUpdate?.ErrorMessage;
// }
// LogErrorText(txt);
// MessageBoxShow(txt, @"FAILED",
// MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
//else
//{
// LogSuccessText(StrUpdateSuccessMessage);
// MessageBoxShow(StrUpdateSuccessMessage, @"SUCCESS",
// MessageBoxButtons.OK, MessageBoxIcon.Information);
//}
}));
}
}
/// <summary>
/// Display installed meter FW.
/// </summary>
/// <remarks date="2022-Mar-25" author="Thomas Wiedebusch">
/// - Init.
/// </remarks>
private void LogInstalledMeterFw()
{
//if (_magFluxMeter == null)
// return;
//LogText(StrSeparator);
//LogText($"PCB ID: {_magFluxMeter.PcbId}");
//LogText($"Core Version: {GenesisMeter.BuildFwVersionString(_magFluxMeter.CoreRevision)}");
//LogText("");
//LogText("Installed Applications:");
//foreach (var app in _magFluxMeter.MeterAppListVersion)
//{
// var versionString = app.IsInstalled ? $"V: {app.StrVersion} - CRC: 0x{app.Crc:X4}" :
// "App NOT Installed";
// LogText($"AppId: 0x{app.AppId:X2} - {versionString} - " + $"AppName: {app.AppName}");
// if (app.IsInstalled)
// {
// var appVersion = new CordonelAppVersion(app.AppId, app.StrVersion);
// // Copy metrology update permission
// if (app.AppName == MeterFwUpdateCapability.MetrologyName &&
// _magFluxMeter.MetrologyUpgradePermission != MeterFwUpdateCapability.MetrologyUpgradePermitted)
// {
// appVersion.IsUpdateable = false;
// }
// }
//}
//LogText(StrSeparator);
}
/// <summary>
/// Output exclusively to user update remarks text window.
/// </summary>
/// <remarks date="2021-Apr-26" author="Thomas Wiedebusch">
/// - Color added.
/// </remarks>
private void LogText(String txtHistory)
{
InfoWindowColoredText(txtHistory, ColorDefault);
}
/// <summary>
/// Output exclusively to user update remarks text window.
/// </summary>
private void LogErrorText(String txtHistory)
{
InfoWindowColoredText(txtHistory, ColorProcessFailed);
}
/// <summary>
/// Output exclusively to user update remarks text window.
/// </summary>
private void LogSuccessText(String txtHistory)
{
InfoWindowColoredText(txtHistory, ColorSuccess);
}
/// <summary>
/// Output exclusively to user update remarks text window.
/// </summary>
private void InfoWindowColoredText(String txtHistory, Color color)
{
//if (_frmHistory?.rtbHistory == null)
// return;
//Invoke(new Action(() =>
//{
// _frmHistory.rtbHistory.SuspendLayout();
// _frmHistory.rtbHistory.SelectionStart = _frmHistory.rtbHistory.Text.Length;
// _frmHistory.rtbHistory.SelectionLength = 0;
// _frmHistory.rtbHistory.SelectionColor = color;
// _frmHistory.rtbHistory.AppendText($"{txtHistory}{Environment.NewLine}");
// _frmHistory.rtbHistory.SelectionColor = _frmHistory.rtbHistory.ForeColor;
// _frmHistory.rtbHistory.ScrollToCaret();
// _frmHistory.rtbHistory.ResumeLayout();
//}));
}
#endregion
#region Checks
private void CheckUpdateEnabled()
{
//this check has been placed here to force display update
if (_magFluxMeter != null)
{
SetControlsDownloadEnabled();
return;
}
SetControlDownloadsLocked();
}
#endregion
#region Events
/// <summary>
/// Process update event for displaying messages in history window
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <remarks date="2020-Dec-10" author="Thomas Wiedebusch">
/// - Initial
/// </remarks>
public virtual void ProcessUpdate_Event(Object sender, ProcessExecEventArgs e)
{
LogText(e.OverallProcessMessage);
}
#endregion
#region TimerControls
private void tmrProgressUpdate_Tick(Object sender, EventArgs e)
{
//cbxManualControl.Visible = true;
if (_tryConnectPcb)
{
barOverallProgressUpdate.Value = barOverallProgressUpdate.Value + 1 > 100 ? 0 :
barOverallProgressUpdate.Value + 1;
barSingleProgressUpdate.Value = barSingleProgressUpdate.Value + 4 > 100 ? 0 :
barSingleProgressUpdate.Value + 4;
lblOverall.Text = StrOverallProcess;
}
else
{
//lblOverall.Text = _meterLutUpdate?.GetLutUpdateStateOperation();
//lblActualProcess.Text = _meterLutUpdate?.GetActualOperation();
//var overallProgress = (Int32)(_meterLutUpdate?.OverallProcessCtrPercent ?? 0);
//if (overallProgress < 0)
// overallProgress = 0;
//barOverallProgressUpdate.Value = overallProgress > 100 ? 100 : overallProgress;
//barOverallProgressUpdate.Update();
//var singleProgress = (Int32)(_meterLutUpdate?.SingleFileProcessCtrPercent ?? 0);
//if (_meterLutUpdate?.GetActualOperation() != _lastState)
//{
// _lastState = _meterLutUpdate?.GetActualOperation();
// lblWaitingForMeterResponse.Visible = false;
//}
//else
//{
// //if the communication gets frozen
// lblWaitingForMeterResponse.Visible = _lastSingleProgress == singleProgress;
//}
//barSingleProgressUpdate.Value = singleProgress > 100 ? 100 : singleProgress;
//_lastSingleProgress = singleProgress;
//barSingleProgressUpdate.Update();
}
SetTimeDisplay();
Update();
}
private void SetTimeDisplay()
{
var time = DateTimeOffset.UtcNow;
var timeSpan = time - _startTime;
lblUpdateTime.Text = $@"{(UInt32)timeSpan.TotalMinutes}:{timeSpan.Seconds:00}";
}
#endregion
#region Buttons
private void btnConnect_Click(Object sender, EventArgs e)
{
if (_resetTimeMeasurement)
{
_startTime = DateTimeOffset.UtcNow;
_resetTimeMeasurement = false;
}
Connect();
}
/// <summary>
/// Download calibration to MagFlux
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDownloadCalibration_Click(Object sender, EventArgs e)
{
if (_magFluxMeter == null)
{
return;
}
SetControlsDownloadIsOngoing();
StartStopDownload(true);
_startTime = DateTimeOffset.UtcNow;
_resetTimeMeasurement = false;
}
#endregion
#region ExternalCalls
/// <summary>
///
/// </summary>
public MsgEventArgs LastMsgEvent;
/// <inheritdoc />
public class MsgEventArgs : EventArgs
{
/// <summary>
/// Text to display
/// </summary>
public String Text;
/// <summary>
/// Headline
/// </summary>
public String Caption;
/// <summary>
/// Buttons
/// </summary>
public MessageBoxButtons Buttons;
/// <summary>
/// Icon
/// </summary>
public MessageBoxIcon Icon;
}
/// <summary>
/// Message pop up event handler
/// </summary>
public event EventHandler<MsgEventArgs> OnMsgPopUp;
private void MessageBoxShow(String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
if (_updateGui)
{
MessageBox.Show(text, caption, buttons, icon);
}
else
{
LastMsgEvent = new MsgEventArgs() { Text = text, Caption = caption, Buttons = buttons, Icon = icon };
OnMsgPopUp?.Invoke(this, LastMsgEvent);
}
}
#endregion
}
}
+129
View File
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tmrProgressUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>274, 17</value>
</metadata>
<metadata name="dlgOpenLuFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>144, 17</value>
</metadata>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>432, 17</value>
</metadata>
</root>
@@ -0,0 +1,176 @@
<?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>{A5E7CE52-3101-4E9B-B896-C2C0FADE4812}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Xylem.Common.Ui.MagFluxToolBox</RootNamespace>
<AssemblyName>MagFluxToolBox</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</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>
<Prefer32Bit>false</Prefer32Bit>
</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>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FrmTest.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmTest.Designer.cs">
<DependentUpon>FrmTest.cs</DependentUpon>
</Compile>
<Compile Include="FrmMainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmMainForm.Designer.cs">
<DependentUpon>FrmMainForm.cs</DependentUpon>
</Compile>
<Compile Include="FrmSetup.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmSetup.Designer.cs">
<DependentUpon>FrmSetup.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmTest.resx">
<DependentUpon>FrmTest.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FrmMainForm.resx">
<DependentUpon>FrmMainForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FrmSetup.resx">
<DependentUpon>FrmSetup.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\CommonCore\CommonCore.csproj">
<Project>{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}</Project>
<Name>CommonCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\Interfaces\Ports\PortCore\PortCore.csproj">
<Project>{2e139f63-b6fe-4ea9-a098-85364fe9b26c}</Project>
<Name>PortCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\Interfaces\Ports\SerialPorts\SerialPorts.csproj">
<Project>{72037e89-4f63-4b3f-beff-4138e578ce99}</Project>
<Name>SerialPorts</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\MagFlux\DataPackages\DataPackages.csproj">
<Project>{BA17D20E-0CEB-4B27-9772-2392BD750ED5}</Project>
<Name>DataPackages</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\MagFlux\MagFluxConfig\MagFluxConfig.csproj">
<Project>{70398b99-b134-4bbd-968b-7399b70c3ce2}</Project>
<Name>MagFluxConfig</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\MagFlux\MagFluxCore\MagFluxCore.csproj">
<Project>{b5da260c-71cc-45ca-b79e-d1b376af718c}</Project>
<Name>MagFluxCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Hardware\WaterMeter\WaterMeterCore\WaterMeterCore.csproj">
<Project>{8203abb8-38e5-472e-a742-33f38b7a74a6}</Project>
<Name>WaterMeterCore</Name>
</ProjectReference>
<ProjectReference Include="..\..\Metrology\Measurements\Measurements.csproj">
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
<Name>Measurements</Name>
</ProjectReference>
<ProjectReference Include="..\..\SoftwareAccessHelper\SoftwareAccessHelper.csproj">
<Project>{a33e3c6d-eaae-4a20-a0ee-f9e6922fd029}</Project>
<Name>SoftwareAccessHelper</Name>
</ProjectReference>
<ProjectReference Include="..\..\Utils\Logging\Logging.csproj">
<Project>{4B88B0D3-E791-4774-9521-EABEACDC420E}</Project>
<Name>Logging</Name>
</ProjectReference>
<ProjectReference Include="..\..\Utils\ProcessExec\ProcessExec.csproj">
<Project>{2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}</Project>
<Name>ProcessExec</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="NlogConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="Resources\MagFluxVerySmall.jpg" />
<None Include="Resources\MagFluxSmall.jpg" />
<None Include="Resources\MjK-LogoSmall.jpg" />
<None Include="Resources\MjK-Logo.JPG" />
<None Include="Resources\MJK Logo.bmp" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+74
View File
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="BasePath" value="C:\MagFluxLog\"/>
<targets>
<!--CalibrationHelper-->
<target name="CalibrationHelper" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\CalibrationHelper.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_CalibrationHelper.log" />
<!--LedRawData-->
<target xsi:type="BufferingWrapper"
name="TargetLedRawDataBase"
bufferSize="10000"
flushTimeout="-1"
slidingTimeout="true"
>
<target name="LedRawDataBase" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\LedRawData_BASE.log" CreateDirs="True" layout ="${longdate} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_LedRawData_BASE.log" />
</target>
<!--MeterBatch-->
<target name="MeterBatch" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\Meter_BASE.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_Meter_BASE.log" />
<!--Meter-->
<target name="MeterBase" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\Meter_BASE.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_Meter_BASE.log" />
<target name="Slot:0" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\Meter_SlotSlot:0.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_Meter_SlotSlot:0.log" />
<!--COM-->
<target name="COMBase" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\COM_BASE.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_COM_BASE.log" />
<!--MagFluxToolBox-->
<target name="MagFluxToolBox" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\MagFluxToolBox.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_ServiceFwUpdateBuilder.log" />
<!--default-->
<target name="default" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\default.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_default.log" />
<target name="PreAdjWr" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\PreAdjWr.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" />
<target name="ctlBatch" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\ctlBatch.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" archiveAboveSize="50000000" archiveFileName="C:\MagFluxLog\${shortdate}\${processname}\{##}_ctlBatch.log" />
<target name="StreamingQualityFile" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\StreamingQuality.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" />
<target name="ProductionUIFile" xsi:type="File" fileName="${BasePath}\${shortdate}\${processname}\ProductionUIFile.log" CreateDirs="True" layout ="${longdate} | ${level} | ${message} ${exception:format=toString}" />
</targets>
<rules>
<!--MagFluxToolBox-->
<logger name="MagFluxToolBox" minLevel="Trace" appendTo="MagFluxToolBox"/>
<!--CalibrationHelper-->
<logger name="CalibrationHelper" minLevel="Trace" appendTo="CalibrationHelper"/>
<!--LedRawData-->
<logger name="LedRawDataBase" minLevel="Trace" appendTo="TargetLedRawDataBase"/>
<!--MeterBatch-->
<logger name="MeterBatch" minLevel="Trace" appendTo="MeterBatch"/>
<!--Meter-->
<logger name="MeterBase" minLevel="Trace" appendTo="MeterBase"/>
<logger name="Slot:0" minLevel="Trace" appendTo="Slot:0"/>
<logger name="GenesisRequestProtocolBase" minLevel="Trace" appendTo="MeterBase"/>
<logger name="MeasurementBase" minLevel="Trace" appendTo="MeterBase"/>
<!--COM-->
<logger name="SerialComPortBase" minLevel="Trace" appendTo="COMBase"/>
<logger name="IrdaBase" minLevel="Trace" appendTo="COMBase"/>
<logger name="RfidBase" minLevel="Trace" appendTo="COMBase"/>
<logger name="TransmitProtocolBase" minLevel="Trace" appendTo="COMBase"/>
<!--default-->
<logger name="*" minLevel="Debug" appendTo="default"/>
<!--Ui logger-->
<logger name="ctlBatch" minLevel="Trace" appendTo="ctlBatch"/>
<logger name="StreamingQuality" minLevel="Trace" appendTo="StreamingQualityFile"/>
<logger name="PreAdjWr" minLevel="Trace" appendTo="PreAdjWr"/>
<logger name="ProductionUI" minLevel="Trace" appendTo="ProductionUIFile"/>
</rules>
</nlog>
+19
View File
@@ -0,0 +1,19 @@
using System;
using System.Windows.Forms;
namespace Xylem.Common.Ui.MagFluxToolBox
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmMainForm());
}
}
}
@@ -0,0 +1,35 @@
using System.Reflection;
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("MagFluxToolBox")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xylem")]
[assembly: AssemblyProduct("MagFluxToolBox")]
[assembly: AssemblyCopyright("Copyright © Xylem 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("a5e7ce52-3101-4e9b-b896-c2c0fade4812")]
// 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")]
@@ -8,8 +8,8 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace MagFluxToolBox.Properties
{
namespace Xylem.Common.Ui.MagFluxToolBox.Properties {
using System;
/// <summary>
@@ -19,32 +19,27 @@ namespace MagFluxToolBox.Properties
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MagFluxToolBox.Properties.Resources", typeof(Resources).Assembly);
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xylem.Common.Ui.MagFluxToolBox.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
@@ -56,16 +51,33 @@ namespace MagFluxToolBox.Properties
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap MagFluxVerySmall {
get {
object obj = ResourceManager.GetObject("MagFluxVerySmall", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap MjK_LogoSmall {
get {
object obj = ResourceManager.GetObject("MjK_LogoSmall", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
@@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,6 +60,7 @@
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
@@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
@@ -85,9 +87,10 @@
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
@@ -109,9 +112,16 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="MagFluxVerySmall" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MagFluxVerySmall.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MjK_LogoSmall" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MjK-LogoSmall.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
@@ -8,21 +8,17 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace MagFluxToolBox.Properties
{
namespace Xylem.Common.Ui.MagFluxToolBox.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
public static Settings Default {
get {
return defaultInstance;
}
}
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Some files were not shown because too many files have changed in this diff Show More