GTB 2.2.2.2
ReSharper run on GenesisMeter.cs
This commit is contained in:
@@ -103,5 +103,13 @@
|
||||
<Name>CommonCore</Name>
|
||||
</ProjectReference>
|
||||
</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>
|
||||
</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="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -202,8 +202,6 @@ namespace Xylem.Common.Hardware.Interfaces.Ports.SerialPorts
|
||||
//Run thread again to notice CancellationToken has changed
|
||||
_onSyncReceiveThread.Set();
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -215,6 +215,9 @@
|
||||
<Compile Include="UartSerialPort.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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -97,6 +97,9 @@
|
||||
<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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -60,6 +60,9 @@
|
||||
<OutputPath>bin\x64\_MANUAL_CONTROL\</OutputPath>
|
||||
</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="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
@@ -88,6 +91,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.de.resx">
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -228,6 +228,9 @@
|
||||
<Compile Include="TempTofCalc.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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -71,7 +71,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
}
|
||||
|
||||
public ProcessConfig _configuration = new ProcessConfig();
|
||||
/// <summary>
|
||||
/// Process configuration
|
||||
/// </summary>
|
||||
public ProcessConfig Configuration = new ProcessConfig();
|
||||
|
||||
/// <summary>
|
||||
/// Transmit protocol access for underlie objects to change response timeout
|
||||
@@ -128,7 +131,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <see cref="T:Xylem.Sensus.WaterMeter.Genesis.Logic.Domain.Genesis.DataPackages.MeterRegister" /> but never less is
|
||||
/// is the identification of the meter it has a separate Property
|
||||
/// </summary>
|
||||
public String SerialNumber { get { return _serialNumber; } set { _serialNumber = value; SetLogger(); } }
|
||||
public String SerialNumber { get => _serialNumber;
|
||||
set { _serialNumber = value; SetLogger(); } }
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -166,7 +170,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <summary>
|
||||
/// Enable use of registers that are not valid (last version not match the current app)
|
||||
/// </summary>
|
||||
public Boolean IsDevelopmentUsage { get; set; } = false;
|
||||
public Boolean IsDevelopmentUsage { get; set; }
|
||||
|
||||
|
||||
|
||||
@@ -202,9 +206,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// </summary>
|
||||
public StreamingProtocol StreamingProtocol;
|
||||
/// <summary>
|
||||
/// to reduce the IrdA communication in test bench, preparation will be done once (when SkipPrepearationForTestBench is true)
|
||||
/// to reduce the IrdA communication in test bench, preparation will be done once (when SkipPreparationForTestBench is true)
|
||||
/// </summary>
|
||||
public bool SkipPrepearationForTestBench { get; set; } = false;
|
||||
public Boolean SkipPreparationForTestBench { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Response received after request for record
|
||||
@@ -223,7 +227,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
try
|
||||
{
|
||||
var addGenesisApplication = (ApplicationDefinition)add;
|
||||
var addGenesisApplication = add;
|
||||
|
||||
if (addGenesisApplication != null)
|
||||
{
|
||||
@@ -269,7 +273,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
try
|
||||
{
|
||||
_logger.Trace($"Slot:{Slot} - Registers definitions loaded from {configFilePath}");
|
||||
if (_configuration.AutoUpdateFiles)
|
||||
if (Configuration.AutoUpdateFiles)
|
||||
{
|
||||
_logger.Trace($"Slot:{Slot} - Check for updates of {configFilePath}");
|
||||
var fi = new FileInfo(configFilePath);
|
||||
@@ -282,7 +286,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
var baseFile = JsonConvert.DeserializeObject<BaseFile>(str);
|
||||
_logger.Trace($"Slot:{Slot} - Updated register definitions File");
|
||||
File.WriteAllText(configFilePath, baseFile.FileContent);
|
||||
File.SetCreationTime(configFilePath, baseFile.UploadDate.Value.UtcDateTime);
|
||||
if (baseFile.UploadDate != null)
|
||||
File.SetCreationTime(configFilePath, baseFile.UploadDate.Value.UtcDateTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -606,7 +611,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
ledTransmit.GetTransmitPortSettings());
|
||||
StreamingProtocol = new StreamingProtocol(streamingIdent, ignoreCorruptedData);
|
||||
}
|
||||
_configuration = new ProcessConfig(ProgramConfig.ConfigFileName);
|
||||
Configuration = new ProcessConfig(ProgramConfig.ConfigFileName);
|
||||
_logger.Debug($"Slot:{Slot} - Setup done");
|
||||
}
|
||||
|
||||
@@ -723,7 +728,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <summary>
|
||||
/// call this if session is expired and you need an re-authorization
|
||||
/// </summary>
|
||||
public EventHandler<AuthorizationRequiredEventArgs> OnAuthorizationRequired;
|
||||
public EventHandler<AuthorizationRequiredEventArgs> AuthorizationRequired;
|
||||
|
||||
/// <summary>
|
||||
/// A helper to invoke events only if someone is listening, otherwise nothing will happen
|
||||
@@ -913,7 +918,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
var firstPcbId = GetPcbId();
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Count() < 8)
|
||||
{
|
||||
if (firstPcbId.Count() < 8)
|
||||
if (firstPcbId != null && firstPcbId.Count() < 8)
|
||||
{
|
||||
|
||||
Thread.Sleep(250);
|
||||
@@ -949,7 +954,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
_logger.Info($"Slot:{Slot} - Cannot get password from GenesisPasswordService, " +
|
||||
$"URL({url}), Error({ex.Message})");
|
||||
var listOfOfflinePasswords = JsonConvert.DeserializeObject<List<OfflinePasswordItem>>(File.ReadAllText(ProgramConfig.OfflineInfoFile));
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId)?.Password;
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId).Password;
|
||||
if (!string.IsNullOrEmpty(autoPassword))
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Got password from password file!");
|
||||
@@ -960,7 +965,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <remarks date="2018JAN08" author="drabesch">
|
||||
/// Get password from server
|
||||
/// </remarks>
|
||||
@@ -971,9 +975,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
//without PCB ID it is not possible to login
|
||||
var firstPcbId = GetPcbId();
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Count() < 8)
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Length < 8)
|
||||
{
|
||||
if (firstPcbId.Count() < 8)
|
||||
if (firstPcbId != null && firstPcbId.Length < 8)
|
||||
{
|
||||
|
||||
Thread.Sleep(250);
|
||||
@@ -984,7 +988,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
}
|
||||
|
||||
url = url + PcbId;
|
||||
url += PcbId;
|
||||
try
|
||||
{
|
||||
//use
|
||||
@@ -1009,7 +1013,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
_logger.Info($"Slot:{Slot} - Cannot get password from GenesisPasswordService, " +
|
||||
$"URL({url}), Error({ex.Message})");
|
||||
var listOfOfflinePasswords = JsonConvert.DeserializeObject<List<OfflinePasswordItem>>(File.ReadAllText(ProgramConfig.OfflineInfoFile));
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId)?.Password;
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId).Password;
|
||||
if (!string.IsNullOrEmpty(autoPassword))
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Got password from password file!");
|
||||
@@ -1052,6 +1056,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <param name="password">password string to login</param>
|
||||
/// <param name="runImmediately"> true = process command; false = add command to list. call
|
||||
/// <see cref="RequestProtocolProcess()"></see> to process login command </param>
|
||||
/// <param name="quickLogin"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks date="2019JAN01" author="drabesch">
|
||||
/// pass runImmediately for auto login
|
||||
@@ -1059,7 +1064,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <remarks date="2021-Feb-02" author="Thomas Wiedebusch">
|
||||
/// - Avoid retries during login, a retry will lock the Genesis for 2s, 4s, 8s, 16s and so on.
|
||||
/// </remarks>
|
||||
private Boolean Login(String password, Boolean runImmediately, bool quickLogin = false)
|
||||
private Boolean Login(String password, Boolean runImmediately, Boolean quickLogin = false)
|
||||
{
|
||||
|
||||
var backupRetries = CommunicationConfig.RequestRetries;
|
||||
@@ -1095,7 +1100,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
|
||||
|
||||
if (_configuration != null && !_configuration.ProductionMode)
|
||||
if (Configuration != null && !Configuration.ProductionMode)
|
||||
{
|
||||
IsDevelopmentUsage = true;
|
||||
}
|
||||
@@ -1197,14 +1202,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
var recount = 4;
|
||||
while (recount > 0)
|
||||
{
|
||||
recount = recount - 1;
|
||||
recount -= 1;
|
||||
|
||||
if (WriteRegister(Register.System.CheckFwPresence, appVersionToRead.AppId))
|
||||
{
|
||||
|
||||
|
||||
//read version, skip retries on SYSTEM 0x04-> FW nor present is a valid feedback
|
||||
var readFwVersionBytes = ReadRegister(Register.System.CheckFwPresence, 4, 0x04);
|
||||
var readFwVersionBytes = ReadRegister(Register.System.CheckFwPresence, 4);
|
||||
|
||||
//the FW version as Uint32 will be used for comparison with the configuration.json
|
||||
if (readFwVersionBytes != null && readFwVersionBytes.Length > 0)
|
||||
@@ -1277,7 +1282,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
// ignored
|
||||
}
|
||||
|
||||
|
||||
@@ -1323,10 +1328,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
foreach (var registerToCheck in tempConfigRegisters)
|
||||
{
|
||||
var currentGroup = MeterAppListVersion.First(f => f.AppId == registerToCheck.Key.AppAddress);
|
||||
if (currentGroup == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!registerToCheck.Key.RegisterDetail.Version.First.HasValue &&
|
||||
!registerToCheck.Key.RegisterDetail.Version.Last.HasValue)
|
||||
@@ -1373,23 +1374,23 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
if (IsDevelopmentUsage)
|
||||
{
|
||||
List<RegisterDefinition> RegisterToPotentialAdd = new List<RegisterDefinition>();
|
||||
var registerToPotentialAdd = new List<RegisterDefinition>();
|
||||
foreach (var allRegisterItem in tempConfigRegisters)
|
||||
{
|
||||
if (!_configRegister.MeterRegisterDic.Any(a => a.Key.GetIdent() == allRegisterItem.Key.GetIdent()))
|
||||
if (_configRegister.MeterRegisterDic.All(a => a.Key.GetIdent() != allRegisterItem.Key.GetIdent()))
|
||||
{
|
||||
RegisterToPotentialAdd.Add(allRegisterItem.Key);
|
||||
registerToPotentialAdd.Add(allRegisterItem.Key);
|
||||
}
|
||||
}
|
||||
if (RegisterToPotentialAdd.Any())
|
||||
if (registerToPotentialAdd.Any())
|
||||
{
|
||||
|
||||
|
||||
var RegisterAddForOldConfis = RegisterToPotentialAdd.GroupBy(item => item.GetIdent())
|
||||
var registerAddForOldConfigs = registerToPotentialAdd.GroupBy(item => item.GetIdent())
|
||||
.Select(grp => grp.Aggregate((max, cur) =>
|
||||
(max == null || cur.RegisterDetail.Version.Last > max.RegisterDetail.Version.Last) ? cur : max));
|
||||
|
||||
foreach (var registerAddOldConfig in RegisterAddForOldConfis)
|
||||
foreach (var registerAddOldConfig in registerAddForOldConfigs)
|
||||
{
|
||||
registerAddOldConfig.IsAvailable = false;
|
||||
_configRegister.MeterRegisterDic.TryAdd(registerAddOldConfig, null);
|
||||
@@ -1584,9 +1585,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
if (val > 0)
|
||||
{
|
||||
i = i + (1 << cReg);
|
||||
i += (1 << cReg);
|
||||
}
|
||||
cReg = cReg + 1;
|
||||
cReg += 1;
|
||||
}
|
||||
|
||||
var fullAlarm = (Alarm)i;
|
||||
@@ -1602,9 +1603,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
WriteRegister(Register.Customer.TriggerAlarmCancel, clear.GetHashCode());
|
||||
}
|
||||
/// <summary>
|
||||
/// Alarm messages
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum Alarm
|
||||
{
|
||||
// ReSharper disable InconsistentNaming
|
||||
#pragma warning disable CS1591
|
||||
REBOOT = 1 << 0,
|
||||
LOW_BATTERY = 1 << 1,
|
||||
EMPTY_PIPE = 1 << 4,
|
||||
@@ -1620,6 +1626,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
METROLOGY_MEASURE = 1 << 15,
|
||||
|
||||
ALL = 0xFFFFFF,
|
||||
#pragma warning restore CS1591
|
||||
// ReSharper restore InconsistentNaming
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1627,7 +1635,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// Read Privilege is always needed to BUGFIX read access to PCB ID
|
||||
/// </summary>
|
||||
/// <returns>PCB ID</returns>
|
||||
public String GetPcbId(Int32 expectedLength = 12, int retyLeft = 2)
|
||||
public String GetPcbId(Int32 expectedLength = 12, Int32 retriesLeft = 2)
|
||||
{
|
||||
|
||||
if (RequestPort == null)
|
||||
@@ -1636,29 +1644,28 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
// Read Privilege is always needed to BUGFIX read access to PCB ID
|
||||
_logger.Info($"Slot:{Slot} - Get privilege level");
|
||||
var readoutpri = ReadRegister(Register.Configexchange.Privilege);
|
||||
ReadRegister(Register.Configexchange.Privilege);
|
||||
|
||||
|
||||
|
||||
_logger.Info($"Slot:{Slot} - Get PCB identification old{PcbId}");
|
||||
var listPcb = new List<byte>();
|
||||
var listPcb = new List<Byte>();
|
||||
|
||||
var HasZero = false;
|
||||
var hasZero = false;
|
||||
var maxReads = 4;
|
||||
while (!HasZero)
|
||||
while (!hasZero)
|
||||
{
|
||||
var chunk = ReadRegister(Register.Configexchange.PCBSerialNumber, 4);
|
||||
maxReads = maxReads - 1;
|
||||
maxReads -= 1;
|
||||
if (chunk == null)
|
||||
{
|
||||
HasZero = true;
|
||||
break;
|
||||
}
|
||||
listPcb.AddRange(chunk);
|
||||
|
||||
if (listPcb.Contains(0))
|
||||
{
|
||||
HasZero = true;
|
||||
hasZero = true;
|
||||
}
|
||||
if (maxReads == 0)
|
||||
{
|
||||
@@ -1667,27 +1674,25 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
|
||||
|
||||
_logger.Info($"First read ");
|
||||
_logger.Info("First read ");
|
||||
if (listPcb.Any())
|
||||
{
|
||||
var response = listPcb.ToArray();
|
||||
PcbId = Encoding.ASCII.GetString(response).Split('\0')[0];
|
||||
|
||||
if (PcbId.Length < 8 && retyLeft >= 1)
|
||||
if (PcbId.Length < 8 && retriesLeft >= 1)
|
||||
{
|
||||
return GetPcbId(expectedLength, retyLeft - 1);
|
||||
return GetPcbId(expectedLength, retriesLeft - 1);
|
||||
}
|
||||
|
||||
return PcbId;
|
||||
}
|
||||
else
|
||||
|
||||
if (retriesLeft >= 1)
|
||||
{
|
||||
if (retyLeft >= 1)
|
||||
{
|
||||
return GetPcbId(expectedLength, retyLeft - 1);
|
||||
}
|
||||
return string.Empty;
|
||||
return GetPcbId(expectedLength, retriesLeft - 1);
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1861,7 +1866,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
IsLoggedOn = false;
|
||||
if (Login(_password, false))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// //removed because this stops all processing which is critical on FW-Update!
|
||||
@@ -1918,14 +1922,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
Logout();
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
|
||||
// ignored
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Run thread again to notice CancellationToken has changed
|
||||
_onSyncKeepSessionThread?.Set();
|
||||
|
||||
@@ -1936,7 +1938,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
while (_keepSessionThread.ThreadState != ThreadState.Stopped && timeoutCounter > 0)
|
||||
{
|
||||
Thread.Sleep(1);
|
||||
timeoutCounter = timeoutCounter - 1;
|
||||
timeoutCounter -= 1;
|
||||
}
|
||||
|
||||
if (_keepSessionThread.ThreadState != ThreadState.Stopped)
|
||||
@@ -1980,20 +1982,20 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
public void LogRawData(Boolean on)
|
||||
{
|
||||
_enableRawDataLogging = on;
|
||||
if (StreamingPort != null && StreamingPort is LedSerialPort)
|
||||
if (StreamingPort is LedSerialPort port)
|
||||
{
|
||||
((LedSerialPort)StreamingPort).RecordStreamingRawData = _enableRawDataLogging;
|
||||
port.RecordStreamingRawData = _enableRawDataLogging;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void SetProcessState(DisplayCodes newState, Boolean webRequest = true)
|
||||
public void SetProcessState(DisplayCodes newState, Boolean webRequest)
|
||||
{
|
||||
|
||||
if (webRequest)
|
||||
{
|
||||
var url = ServiceUrls.MeterProcessStateUrl();
|
||||
url = url + $"setState?PcbID={PcbId}&code={newState.GetHashCode()}&version={Assembly.GetExecutingAssembly().GetName().Version.ToString()}";
|
||||
url += $"setState?PcbID={PcbId}&code={newState.GetHashCode()}&version={Assembly.GetExecutingAssembly().GetName().Version}";
|
||||
try
|
||||
{
|
||||
LocalWebRequest.PostRequestAsync(url);
|
||||
@@ -2013,7 +2015,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
var url = ServiceUrls.MeterProcessStateUrl();
|
||||
|
||||
url = url + $"GetLastState?PcbID={PcbId}";
|
||||
url += $"GetLastState?PcbID={PcbId}";
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2117,29 +2119,38 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
|
||||
|
||||
public void PushProgress(string ProgressName, string Version)
|
||||
/// <summary>
|
||||
/// Upload app list to data base
|
||||
/// </summary>
|
||||
/// <param name="progressName"></param>
|
||||
/// <param name="version"></param>
|
||||
public void PushProgress(String progressName, String version)
|
||||
{
|
||||
var apps = new List<CordonelAppVersion>();
|
||||
foreach (var item in MeterAppListVersion)
|
||||
{
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, (item.AppId != 15 ? true : false)));
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, item.AppId != 15));
|
||||
}
|
||||
|
||||
apps.Add(new CordonelAppVersion(-1, CoreRevision, false));
|
||||
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={PcbId}&ProgressName={ProgressName}&version={Version}";
|
||||
var a = LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={PcbId}&ProgressName={progressName}&version={version}";
|
||||
LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Backup current register dictionary to data base
|
||||
/// </summary>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public void StoreCurrentRegisterDic()
|
||||
{
|
||||
try
|
||||
{
|
||||
var url = ServiceUrls.RegisterWatchServiceUrl();
|
||||
if (!string.IsNullOrEmpty(_configuration?.RegisterWatchServiceUrl))
|
||||
if (!string.IsNullOrEmpty(Configuration?.RegisterWatchServiceUrl))
|
||||
{
|
||||
url = _configuration.RegisterWatchServiceUrl;
|
||||
url = Configuration.RegisterWatchServiceUrl;
|
||||
}
|
||||
|
||||
var d = new List<RegisterToDb>();
|
||||
@@ -2150,11 +2161,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
d.Add(new RegisterToDb(a.Key.RegisterAddress, a.Value));
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception )
|
||||
{
|
||||
|
||||
// ignored
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2181,7 +2191,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <param name="value"></param>
|
||||
private void PostRegisterRead(RegisterDefinition reg, Byte[] value)
|
||||
{
|
||||
if (_configuration.UseRegisterWatchService)
|
||||
if (Configuration.UseRegisterWatchService)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -2192,7 +2202,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
valuestring = BitConverter.ToString(value);
|
||||
}
|
||||
|
||||
var url = $"{_configuration.RegisterWatchServiceUrl}RegisterWrite?PcbID={PcbId}&Address={BitConverter.ToString(reg.RegisterAddress)}&value={valuestring}";
|
||||
var url = $"{Configuration.RegisterWatchServiceUrl}RegisterWrite?PcbID={PcbId}&Address={BitConverter.ToString(reg.RegisterAddress)}&value={valuestring}";
|
||||
|
||||
var result = LocalWebRequest.PostRequestAsync(url, 1500, string.Empty);
|
||||
|
||||
@@ -2218,12 +2228,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <param name="calibrationFactor3"></param>
|
||||
public void LogCalibrationData(UInt16 calibrationFactor1, UInt16 calibrationFactor2, UInt16 calibrationFactor3)
|
||||
{
|
||||
if (_configuration.UseCalibrationLogger)
|
||||
if (Configuration.UseCalibrationLogger)
|
||||
{
|
||||
try
|
||||
{
|
||||
var request = (HttpWebRequest)WebRequest.Create(
|
||||
$"{_configuration.CalibrationLoggerServiceUrl}PostCalibrationResult?PcbID={PcbId}" +
|
||||
$"{Configuration.CalibrationLoggerServiceUrl}PostCalibrationResult?PcbID={PcbId}" +
|
||||
$"&flowCalibrationPath1={calibrationFactor1}&flowCalibrationPath2={calibrationFactor2}" +
|
||||
$"&flowCalibrationPath3={calibrationFactor3}");
|
||||
|
||||
@@ -2256,6 +2266,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Set the process state
|
||||
/// </summary>
|
||||
/// <param name="newState"></param>
|
||||
public void SetProcessState(DisplayCodes newState)
|
||||
{
|
||||
SetProcessState(newState, true);
|
||||
|
||||
@@ -184,9 +184,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
// configuration has to be set BEFORE adding meter to batch to avoid e.g. auto update files
|
||||
// from network and therefore have a long network request timeout before the task starts
|
||||
_currentGenesis._configuration.UseRegisterWatchService = false;
|
||||
_currentGenesis._configuration.UseMinMaxCheck = false;
|
||||
_currentGenesis._configuration.AutoUpdateFiles = false;
|
||||
_currentGenesis.Configuration.UseRegisterWatchService = false;
|
||||
_currentGenesis.Configuration.UseMinMaxCheck = false;
|
||||
_currentGenesis.Configuration.AutoUpdateFiles = false;
|
||||
_meterBatch.AddMeter(_currentGenesis);
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
private void PreMeasurement()
|
||||
{
|
||||
//if (!SkipPrepearationForTestBench)
|
||||
//if (!SkipPreparationForTestBench)
|
||||
//{
|
||||
|
||||
//TODO set display unit
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<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>..\..\..\..\..\ServiceFwUpdate\packages\NLog.4.6.7\lib\net40-client\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
@@ -741,7 +741,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
}
|
||||
|
||||
_genesisMeter?.ReLogin();
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, false);
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, webRequest: false);
|
||||
|
||||
if (_genesisMeter == null || !_genesisMeter.IsLoggedOn || _meterFile == null)
|
||||
return false;
|
||||
@@ -1048,7 +1048,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
}
|
||||
|
||||
_genesisMeter?.ReLogin();
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, false);
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, webRequest: false);
|
||||
|
||||
if (_genesisMeter == null || !_genesisMeter.IsLoggedOn ||
|
||||
FileApps == null || _meterFile == null)
|
||||
|
||||
@@ -369,7 +369,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
if (_meterFile != null)
|
||||
_meterFile.OnProcessUpdate += ProcessUpdate_Event;
|
||||
_genesisMeter?.ReLogin();
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, false);
|
||||
_genesisMeter?.SetProcessState(DisplayCodes.FwUpdateActive, webRequest: false);
|
||||
|
||||
if (_genesisMeter == null || !_genesisMeter.IsLoggedOn)
|
||||
{
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -53,6 +53,9 @@
|
||||
<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="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -65,5 +68,8 @@
|
||||
<Compile Include="MeterPwdDb.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</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="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -174,6 +174,9 @@
|
||||
<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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -256,6 +256,9 @@
|
||||
</ProjectReference>
|
||||
</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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
+3
@@ -238,6 +238,9 @@
|
||||
</ProjectReference>
|
||||
</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>
|
||||
|
||||
@@ -1,4 +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>
|
||||
@@ -278,6 +278,9 @@
|
||||
</ProjectReference>
|
||||
</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>
|
||||
|
||||
+6
@@ -77,6 +77,9 @@
|
||||
<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.5.6\lib\net40-client\NLog.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -94,6 +97,9 @@
|
||||
<Compile Include="MeterTypeRegisters.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</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.
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
7ac73abb7afd9e6ddc0520a1568581c7ed0afd36
|
||||
1a3d4919c9c702245832d925951f2b7cb72fc333
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -1,4 +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>
|
||||
Reference in New Issue
Block a user