Merge branch 'main' of https://slm.sms-esaap.com/la_operations/laa_production
This commit is contained in:
@@ -155,7 +155,7 @@
|
||||
</site>
|
||||
<site name="MeterProcessState" id="2">
|
||||
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
||||
<virtualDirectory path="/" physicalPath="D:\Projekte\SENSUS_GitLab\laa_production\Common\Service\MeterProcessState" />
|
||||
<virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\Repo\lab\la_operations\laa_production\Common\Service\MeterProcessState" />
|
||||
</application>
|
||||
<bindings>
|
||||
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Eventing.Reader;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CordonelPreadjustmentUi.Processes.Itinerary;
|
||||
using System.Threading;
|
||||
using static CordonelPreadjustmentUi.PreAdjustmentControl;
|
||||
using System.Threading.Tasks;
|
||||
using CordonelPreadjustmentUi.Const;
|
||||
using CordonelPreadjustmentUi.Helper;
|
||||
using CordonelPreadjustmentUi.Const;
|
||||
using CordonelPreadjustmentUi.Helper.Extensions;
|
||||
using CordonelPreadjustmentUi.Processes.Itinerary;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
using static CordonelPreadjustmentUi.PreAdjustmentControl;
|
||||
|
||||
namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
{
|
||||
@@ -35,8 +33,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
{
|
||||
listOfProcessTask.Add(new Task<bool>(() =>
|
||||
{
|
||||
|
||||
pp.DebugMessage($"Performing {ProcessName} procedure", null , "CC");
|
||||
|
||||
pp.DebugMessage($"Performing {ProcessName} procedure", null, "CC");
|
||||
|
||||
#region Definitions and initializations
|
||||
const Int32 FirstHitShiftValue = 4;
|
||||
@@ -49,7 +47,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
var TofAvgMean = new MultiPathDataLogContainer<Double>(pp.Setting.NumberOfPaths);
|
||||
var OptimalPoint = new MultiPathDataLogContainer<Int32>(pp.Setting.NumberOfPaths);
|
||||
var TofAvgMeanTotal = new MultiPathDataLogContainer<List<Double>>(pp.Setting.NumberOfPaths);
|
||||
TofAvgMeanTotal.Update(null,new List<Double>());
|
||||
TofAvgMeanTotal.Update(null, new List<Double>());
|
||||
|
||||
Boolean Ok = false;
|
||||
#endregion
|
||||
@@ -61,10 +59,10 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
meterctl.Meter.DataLog(Header);
|
||||
//GenesisZeroFlow._GenesisZeroFlow.SetLoggingPathAmplitudeTest(this.MeterNumber, $"{DataLogging.DefaultPath}AmplitudeTest_RawData_{TempPcbID}_{time}.txt");
|
||||
meterctl.Meter.logAmpTest = true;
|
||||
pp.DebugMessage($" Start logging", meterctl.Meter.Slot, "DC",meterctl.Meter.PcbId);
|
||||
pp.DebugMessage($" Start logging", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
Ok = false;
|
||||
|
||||
@@ -128,54 +126,95 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
Ok = RecordData(pp, meterctl, Ok, FirstHitLevelPercentage);
|
||||
|
||||
bool retryRecord = false;
|
||||
|
||||
for (UInt16 Path = 0; Path < meterctl.Meter.listOfTotalTimeOfFlightSPerPath.GetPathCount(); Path++)
|
||||
if (true)
|
||||
{
|
||||
if (!meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(Path).Any())
|
||||
if (!meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(1).Any())
|
||||
{
|
||||
pp.StatusLabel = $"No Data for Path {Path}. Start one recollect";
|
||||
pp.StatusLabel = $"No Data for Path {1}. Start one recollect";
|
||||
|
||||
retryRecord = true;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
for (UInt16 Path = 0; Path < meterctl.Meter.listOfTotalTimeOfFlightSPerPath.GetPathCount(); Path++)
|
||||
{
|
||||
if (!meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(Path).Any())
|
||||
{
|
||||
pp.StatusLabel = $"No Data for Path {Path}. Start one recollect";
|
||||
|
||||
retryRecord = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (retryRecord)
|
||||
{
|
||||
Ok = RecordData(pp, meterctl, Ok, FirstHitLevelPercentage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
pp.StatusLabel = $"{PredefinedMessages.WaitUntilPercentageSweepFinished(pp.Setting.Culture)} {FirstHitLevelPercentage.ToString(pp.Setting.Culture)}/{ pp.Setting.AmpTestPercentageStop.ToString(pp.Setting.Culture)}; 0s";
|
||||
Ok = true;
|
||||
#endregion
|
||||
#region Calculate mean value
|
||||
|
||||
|
||||
for (UInt16 Path = 0; Path < meterctl.Meter.listOfTotalTimeOfFlightSPerPath.GetPathCount(); Path++)
|
||||
if (true)
|
||||
{
|
||||
var meanVal = meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(Path).ToList().Mean();
|
||||
pp.DebugMessage($"Calculate mean value {meanVal} at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
var meanVal = meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(1).ToList().Mean();
|
||||
pp.DebugMessage($"Calculate mean value {meanVal} at {meterctl.Meter.Slot}; PATH{(1 + 1).ToString(pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
//earlier TofAvgMeanTotal
|
||||
//TofAvgMean.Update(Path, meanVal);
|
||||
|
||||
if (meanVal == 0)
|
||||
{
|
||||
pp.DebugMessage($"Mean value is zero at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
pp.DebugMessage($"Mean value is zero at {meterctl.Meter.Slot}; PATH{(1 + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
meterctl.Meter.calibrationResult.AddAdditionalLog($"" +
|
||||
$"PATH {Path + 1}", Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture));
|
||||
$"PATH {1 + 1}", Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture));
|
||||
|
||||
if (CheckAbort(false, meterctl)) { return false; }
|
||||
}
|
||||
|
||||
pp.DebugMessage($"Mean value at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
pp.DebugMessage($"Mean value at {meterctl.Meter.Slot}; PATH{(1 + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
|
||||
meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test Mean value PATH {Path + 1}", $"at {FirstHitLevelPercentage}={Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}");
|
||||
var cTofAvgMeanTotal = TofAvgMeanTotal.Get(Path).ToList();
|
||||
meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test Mean value PATH {1 + 1}", $"at {FirstHitLevelPercentage}={Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}");
|
||||
var cTofAvgMeanTotal = TofAvgMeanTotal.Get(1).ToList();
|
||||
|
||||
cTofAvgMeanTotal.Add(meanVal);
|
||||
TofAvgMeanTotal.Update(Path, cTofAvgMeanTotal);
|
||||
TofAvgMeanTotal.Update(1, cTofAvgMeanTotal);
|
||||
//meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Update(Path,new List<Double>());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
for (UInt16 Path = 0; Path < meterctl.Meter.listOfTotalTimeOfFlightSPerPath.GetPathCount(); Path++)
|
||||
{
|
||||
var meanVal = meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Get(Path).ToList().Mean();
|
||||
pp.DebugMessage($"Calculate mean value {meanVal} at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
//earlier TofAvgMeanTotal
|
||||
//TofAvgMean.Update(Path, meanVal);
|
||||
|
||||
if (meanVal == 0)
|
||||
{
|
||||
pp.DebugMessage($"Mean value is zero at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
meterctl.Meter.calibrationResult.AddAdditionalLog($"" +
|
||||
$"PATH {Path + 1}", Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture));
|
||||
|
||||
if (CheckAbort(false, meterctl)) { return false; }
|
||||
}
|
||||
|
||||
pp.DebugMessage($"Mean value at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
|
||||
meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test Mean value PATH {Path + 1}", $"at {FirstHitLevelPercentage}={Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}");
|
||||
var cTofAvgMeanTotal = TofAvgMeanTotal.Get(Path).ToList();
|
||||
|
||||
cTofAvgMeanTotal.Add(meanVal);
|
||||
TofAvgMeanTotal.Update(Path, cTofAvgMeanTotal);
|
||||
//meterctl.Meter.listOfTotalTimeOfFlightSPerPath.Update(Path,new List<Double>());
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
@@ -213,8 +252,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
var tmpOptimalPoint = 0;
|
||||
var tmpDistanceLeft = 0.0;
|
||||
var tmpDistanceRight = 0.0;
|
||||
|
||||
var r = CalculateOptimalPoint(pp, meterctl.Meter.Slot, TofAvgMeanTotal.Get(Path).ToList(),out tmpDistanceLeft, out tmpDistanceRight, out tmpOptimalPoint);
|
||||
|
||||
var r = CalculateOptimalPoint(pp, meterctl.Meter.Slot, TofAvgMeanTotal.Get(Path).ToList(), out tmpDistanceLeft, out tmpDistanceRight, out tmpOptimalPoint);
|
||||
OptimalPoint.Update(Path, tmpOptimalPoint);
|
||||
DistanceLeft.Update(Path, tmpDistanceLeft);
|
||||
DistanceRight.Update(Path, tmpDistanceRight);
|
||||
@@ -241,8 +280,10 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
Boolean OptimalPointOK = true;
|
||||
for (UInt16 Path = 0; Path < OptimalPoint.GetPathCount(); Path++)
|
||||
{
|
||||
if (!this.CheckOptimalPoint(pp,OptimalPoint.Get(Path), out DebugMessage, meterctl.Meter.Slot))
|
||||
if (!this.CheckOptimalPoint(pp, OptimalPoint.Get(Path), out DebugMessage, meterctl.Meter.Slot))
|
||||
{
|
||||
OptimalPointOK = false;
|
||||
}
|
||||
|
||||
pp.DebugMessage($"{DebugMessage}, PATH{Path + 1}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
}
|
||||
@@ -253,8 +294,10 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
Boolean CheckDistOK = true;
|
||||
for (UInt16 Path = 0; Path < DistanceLeft.GetPathCount(); Path++)
|
||||
{
|
||||
if (!this.CheckDistance(pp,DistanceLeft.Get(Path), DistanceRight.Get(Path), out DebugMessage, meterctl.Meter.Slot ))
|
||||
if (!this.CheckDistance(pp, DistanceLeft.Get(Path), DistanceRight.Get(Path), out DebugMessage, meterctl.Meter.Slot))
|
||||
{
|
||||
CheckDistOK = false;
|
||||
}
|
||||
|
||||
pp.DebugMessage($"{DebugMessage}, PATH{Path + 1}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId);
|
||||
}
|
||||
@@ -367,7 +410,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
return Ok;
|
||||
}
|
||||
|
||||
private Boolean CalculateOptimalPoint(ProcessProgress pp,int Slot, List<Double> TofAvg, out Double left, out Double right, out Int32 xAtOptimalPoint)
|
||||
private Boolean CalculateOptimalPoint(ProcessProgress pp, int Slot, List<Double> TofAvg, out Double left, out Double right, out Int32 xAtOptimalPoint)
|
||||
{
|
||||
|
||||
List<Double> ValuesLeft = new List<Double>();
|
||||
@@ -378,8 +421,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
left = 0;
|
||||
right = 0;
|
||||
|
||||
ValuesLeft = this.CalculateNearestDistanceLeft(pp,TofAvg, out left);
|
||||
ValuesRight = this.CalculateNearestDistanceRight(pp,TofAvg, out right);
|
||||
ValuesLeft = this.CalculateNearestDistanceLeft(pp, TofAvg, out left);
|
||||
ValuesRight = this.CalculateNearestDistanceRight(pp, TofAvg, out right);
|
||||
|
||||
for (UInt16 i = 0; i < ValuesLeft.Count(); i++)
|
||||
{
|
||||
@@ -408,7 +451,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
{
|
||||
Maximum = MinDistance.ElementAt(i);
|
||||
xAtOptimalPoint = (Int32)i + pp.Setting.AmpTestPercentageStart;
|
||||
;
|
||||
;
|
||||
SubError = false;
|
||||
}
|
||||
}
|
||||
@@ -423,7 +466,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
Boolean Detected = false;
|
||||
left = 0;
|
||||
|
||||
for (Int32 Percentage = pp.Setting.AmpTestFirstHitLevelPropMin; Percentage <= pp.Setting.AmpTestFirstHitLevelPropMax ; Percentage++)
|
||||
for (Int32 Percentage = pp.Setting.AmpTestFirstHitLevelPropMin; Percentage <= pp.Setting.AmpTestFirstHitLevelPropMax; Percentage++)
|
||||
{
|
||||
Detected = false;
|
||||
for (Int32 PercentageFollowing = Percentage; PercentageFollowing <= pp.Setting.AmpTestFirstHitLevelPropMax; PercentageFollowing++)
|
||||
@@ -436,7 +479,9 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
}
|
||||
}
|
||||
if (!Detected)
|
||||
{
|
||||
NearestDistance = pp.Setting.AmpTestFirstHitLevelPropMax - Percentage;
|
||||
}
|
||||
|
||||
Distance.Add(NearestDistance);
|
||||
}
|
||||
@@ -472,7 +517,9 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
}
|
||||
|
||||
if (!Detected)
|
||||
{
|
||||
NearestDistance = Percentage - pp.Setting.AmpTestFirstHitLevelPropMin;
|
||||
}
|
||||
|
||||
Distance.Add(NearestDistance);
|
||||
}
|
||||
@@ -510,7 +557,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
|
||||
return Ok;
|
||||
}
|
||||
private Boolean CheckDistance(ProcessProgress pp,Double left, Double right, out String debugMessage, int Slot)
|
||||
private Boolean CheckDistance(ProcessProgress pp, Double left, Double right, out String debugMessage, int Slot)
|
||||
{
|
||||
Boolean Ok = true;
|
||||
debugMessage = $"Distance check successful at {Slot}";
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.ProtocolCore
|
||||
/// </remarks>
|
||||
protected BaseProtocol(String ident)
|
||||
{
|
||||
Ident = ident;
|
||||
Ident = ident;
|
||||
//assign thread to loop
|
||||
_decodingThread = new Thread(DecodingThreadLoop) { Name = $"{Ident} Decoding thread" };
|
||||
//start DecodingThread
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
bf6bb8fceb3db5a9977dadc407cf576684bf7127
|
||||
c43c40a030005a8f189e6179faf40a6d42bfef5c
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Xylem.Common.Hardware.WaterMeter.ERegister.DataPackages</RootNamespace>
|
||||
<AssemblyName>Xylem.Common.Hardware.WaterMeter.ERegister.DataPackages</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
@@ -37,7 +37,14 @@
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\NLog.5.2.8\lib\net35\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=105.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\RestSharp.105.0.0\lib\net4\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" requireReinstallation="true" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" />
|
||||
<package id="NLog" version="5.2.8" targetFramework="net40" />
|
||||
<package id="RestSharp" version="105.0.0" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -7,11 +7,12 @@
|
||||
<ProjectGuid>{B6A19B80-0F0F-434C-A754-A7712FC208B2}</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>
|
||||
<RootNamespace>Xylem.Common.Hardware.WaterMeter.eRegister.Protocols.StreamingProtocol</RootNamespace>
|
||||
<AssemblyName>Xylem.Common.Hardware.WaterMeter.eRegister.Protocols.StreamingProtocol</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -32,10 +33,13 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\..\packages\NLog.5.2.2\lib\net46\NLog.dll</HintPath>
|
||||
<HintPath>..\..\..\..\packages\NLog.5.2.8\lib\net35\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=105.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\RestSharp.105.0.0\lib\net4\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
<package id="NLog" version="5.2.2" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" />
|
||||
<package id="NLog" version="5.2.8" targetFramework="net40" />
|
||||
<package id="RestSharp" version="105.0.0" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -9,7 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Xylem.Common.Hardware.WaterMeter.eRegister.eRegisterCore</RootNamespace>
|
||||
<AssemblyName>Xylem.Common.Hardware.WaterMeter.eRegister.eRegisterCore</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
@@ -38,7 +38,10 @@
|
||||
<HintPath>..\..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\NLog.5.2.2\lib\net35\NLog.dll</HintPath>
|
||||
<HintPath>..\..\..\..\packages\NLog.5.2.8\lib\net35\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=105.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\RestSharp.105.0.0\lib\net4\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" requireReinstallation="true" />
|
||||
<package id="NLog" version="5.2.2" targetFramework="net40" requireReinstallation="true" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" />
|
||||
<package id="NLog" version="5.2.8" targetFramework="net40" />
|
||||
<package id="RestSharp" version="105.0.0" targetFramework="net40" />
|
||||
</packages>
|
||||
@@ -155,7 +155,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
var pwString = o["JsonObject"][searchKey].ToString();
|
||||
//FE081F0 E5250E5D084FA024 00 04 80 00 70 03 48 9E
|
||||
//0x 0413F059069BEB24
|
||||
|
||||
//FE081F0 D1 B1 FF 63 07 75 74 24 00 04 80 00 70 03 48 9E
|
||||
//pwString = "FE081F0 F2 30 F0 59 03 66 10 24 00 04 80 00 70 03 48 9A";
|
||||
//pwString = "FE081F0 16 31 F0 59 06 9B EB 24 00 04 80 00 70 03 48 9A";
|
||||
//pwString = "FE081F0 B3 F3 0D 5C 05 C3 9B 24 00 04 80 00 70 03 48 9E";
|
||||
@@ -163,6 +163,9 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
//E79E9F08AFBE
|
||||
var pId = Convert.ToUInt64(pwString.Replace(" ", "").Substring(7, 16), 16);
|
||||
|
||||
//FE081F0 D1 B1 FF 63 07 75 74 24 00 04 80 00 70 03 48 9E
|
||||
//FE081F0 36 BB FF 63 08 19 F3 24 00 04 80 00 70 03 48 9E -> "3DFB7AF7D8C9"
|
||||
//FE081F0 D1 B1 FF 63 07 75 74 24 00 04 80 00 70 03 48 9E -> 517316F8D22E
|
||||
var s = BuildSkeletonKey(pId);
|
||||
var r = "";
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ namespace TempFlansh
|
||||
//Application.EnableVisualStyles();
|
||||
//Application.SetCompatibleTextRenderingDefault(false);
|
||||
//Application.Run(new Form1());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
247396738e2c5d26ac00f9df05c0cc5c61d7f33a
|
||||
65d75c3322f8a137c69963cfdc0cb6f1ffacf62a
|
||||
|
||||
+17
-1
@@ -70,6 +70,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
||||
this.timer3 = new System.Windows.Forms.Timer(this.components);
|
||||
this.mainMenuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.txtComport = new System.Windows.Forms.TextBox();
|
||||
this.automaticCalibrationTabControl.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
@@ -81,7 +82,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 5000;
|
||||
this.timer1.Interval = 60000;
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// timer2
|
||||
@@ -138,6 +139,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.txtComport);
|
||||
this.tabPage2.Controls.Add(this.lblCheck);
|
||||
this.tabPage2.Controls.Add(this.label9);
|
||||
this.tabPage2.Controls.Add(this.btnCheck);
|
||||
@@ -522,6 +524,19 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
this.mainMenuStrip.TabIndex = 57;
|
||||
this.mainMenuStrip.Text = "menuStrip1";
|
||||
//
|
||||
// txtComport
|
||||
//
|
||||
this.txtComport.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtComport.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.txtComport.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.txtComport.Location = new System.Drawing.Point(77, 24);
|
||||
this.txtComport.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.txtComport.MinimumSize = new System.Drawing.Size(2, 25);
|
||||
this.txtComport.Name = "txtComport";
|
||||
this.txtComport.Size = new System.Drawing.Size(318, 25);
|
||||
this.txtComport.TabIndex = 55;
|
||||
//
|
||||
// FrmTempMeter
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -588,5 +603,6 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button saveSettingsBtn;
|
||||
private System.Windows.Forms.TabPage tabPage4;
|
||||
private System.Windows.Forms.TextBox txtComport;
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using TempFlansh;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
@@ -165,34 +165,34 @@
|
||||
private String GetLutsText(String PcbId)
|
||||
{
|
||||
var ret = new StringBuilder();
|
||||
//var resp = LocalWebRequest.GetRequest($"http://10.49.40.25/MeterProcessState/api/TempFlange/GetLut?PcbId={PcbId}");
|
||||
var resp = LocalWebRequest.GetRequest($"http://10.49.40.25/MeterProcessState/api/TempFlange/GetLut?PcbId={PcbId}");
|
||||
|
||||
//ret.AppendLine($"Ref Temp C°\t|\t AvgTof");
|
||||
ret.AppendLine($"Ref Temp C°\t|\t AvgTof");
|
||||
|
||||
//var CurrentReqRequierd = new List<RefTempRange>();
|
||||
//CurrentReqRequierd.AddRange(reftempRangeReq);
|
||||
//try
|
||||
//{
|
||||
// cordonelTempLut = JsonConvert.DeserializeObject<List<CordonelTempLut>>(resp);
|
||||
var CurrentReqRequierd = new List<RefTempRange>();
|
||||
CurrentReqRequierd.AddRange(reftempRangeReq);
|
||||
try
|
||||
{
|
||||
cordonelTempLut = JsonConvert.DeserializeObject<List<CordonelTempLut>>(resp);
|
||||
|
||||
// foreach (var item in cordonelTempLut.OrderBy(a => a.RefTempC))
|
||||
// {
|
||||
// CurrentReqRequierd.RemoveAll(rem => item.RefTempC >= rem.Min && item.RefTempC <= rem.Max);
|
||||
// ret.AppendLine($"{item.RefTempC.ToString("n8")}\t|\t{item.AvgTof}");
|
||||
// }
|
||||
//}
|
||||
//catch (Exception)
|
||||
//{
|
||||
foreach (var item in cordonelTempLut.OrderBy(a => a.RefTempC))
|
||||
{
|
||||
CurrentReqRequierd.RemoveAll(rem => item.RefTempC >= rem.Min && item.RefTempC <= rem.Max);
|
||||
ret.AppendLine($"{item.RefTempC.ToString("n8")}\t|\t{item.AvgTof}");
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
// ret.AppendLine($"No entrys");
|
||||
//}
|
||||
ret.AppendLine($"No entrys");
|
||||
}
|
||||
|
||||
//lutIsMissing = false;
|
||||
//foreach (var item in CurrentReqRequierd)
|
||||
//{
|
||||
// lutIsMissing = true;
|
||||
// ret.AppendLine($"{item.Min}-{item.Max}\t|\t Missing");
|
||||
//}
|
||||
lutIsMissing = false;
|
||||
foreach (var item in CurrentReqRequierd)
|
||||
{
|
||||
lutIsMissing = true;
|
||||
ret.AppendLine($"{item.Min}-{item.Max}\t|\t Missing");
|
||||
}
|
||||
return ret.ToString();
|
||||
}
|
||||
|
||||
@@ -226,11 +226,23 @@
|
||||
|
||||
SetEnabled(ProgrammState.Connected);
|
||||
}
|
||||
|
||||
TempHelper helper;
|
||||
private void btnCheck_Click(Object sender, EventArgs e)
|
||||
{
|
||||
if (btnCheck.Text == "Start Check")
|
||||
{
|
||||
short port = 0;
|
||||
if (short.TryParse(txtComport.Text, out port))
|
||||
{
|
||||
helper = new TempHelper();
|
||||
TempHelper.UniversalOpenCom((port), 4800, 8, 0, 0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
currentGenesis.StartRecordData();
|
||||
timer1.Enabled = true;
|
||||
|
||||
@@ -315,7 +327,12 @@
|
||||
// do nothing
|
||||
}
|
||||
|
||||
lblCheck.Text = checkTempMeter.ToString();
|
||||
var refTemp = helper.ReadCurrentDisplayValue().ToString();
|
||||
|
||||
File.AppendAllLines("Check.txt", new List<string> { $"{currentGenesis.PcbId },{checkTempMeter.ToString()},{refTemp.ToString()} " });
|
||||
lblCheck.Text = "DUT:" + checkTempMeter.ToString() + "vs Ref:" + refTemp.ToString();
|
||||
|
||||
//
|
||||
|
||||
}
|
||||
else
|
||||
@@ -461,7 +478,7 @@
|
||||
if (i > 0)
|
||||
{
|
||||
|
||||
|
||||
|
||||
avgTof = avgTof / i;
|
||||
if (!double.IsNaN(avgTof))
|
||||
{
|
||||
@@ -494,7 +511,7 @@
|
||||
{
|
||||
jsonData = $",{jsonData}";
|
||||
}
|
||||
|
||||
|
||||
File.AppendAllText(fiName, jsonData);
|
||||
}
|
||||
|
||||
@@ -507,7 +524,7 @@
|
||||
MergeToAutoFile();
|
||||
}
|
||||
|
||||
private Double generateTof(Random r , Double temp)
|
||||
private Double generateTof(Random r, Double temp)
|
||||
{
|
||||
var tmp = r.Next(1, 5);
|
||||
var retrn = temp / 9000 - Math.Pow(temp, 1.6) / 100_000;
|
||||
@@ -529,7 +546,7 @@
|
||||
//plateau
|
||||
while (needUp >= 0)
|
||||
{
|
||||
|
||||
|
||||
var temp = rramp.NextDouble() / (needUp * 100); // +0
|
||||
needUp = needUp - temp;
|
||||
refTemp = refTemp + temp;
|
||||
@@ -542,7 +559,7 @@
|
||||
for (Int32 platI = 0; platI < tillI; platI++)
|
||||
{
|
||||
|
||||
|
||||
|
||||
var temp = r.NextDouble() / 5;
|
||||
refTempss.Add(new TempTofCalc() { RefDate = sDate.AddSeconds(refTempss.Count), RefTemp = refTemp + temp, Tof = generateTof(rtof, refTemp) });
|
||||
}
|
||||
@@ -640,7 +657,7 @@
|
||||
this.mainMenuStrip.Items.Add(this.disconnectBtn);
|
||||
this.mainMenuStrip.Items.Add(this.testBtn);
|
||||
|
||||
this.automaticCalibrationTabControl.GotFocus += (Object sender, EventArgs e) =>
|
||||
this.automaticCalibrationTabControl.GotFocus += (Object sender, EventArgs e) =>
|
||||
{
|
||||
this.GMHPort.Text = Appsettings.GMHPort.ToString();
|
||||
this.messurementStepMS.Text = Appsettings.MessurementStep.ToString();
|
||||
@@ -754,7 +771,7 @@
|
||||
private void StopAutomaticBtn_Clicked(object sender, EventArgs args)
|
||||
{
|
||||
this.automatic = false;
|
||||
|
||||
|
||||
this.automaticCalibration.StopMessuring();
|
||||
|
||||
this.MergeToAutoFile();
|
||||
@@ -765,7 +782,7 @@
|
||||
this.stopAutomaticBtn.Enabled = false;
|
||||
}
|
||||
|
||||
const int TAKE_LINES = 50;
|
||||
private const int TAKE_LINES = 50;
|
||||
|
||||
public void AddMessage(string message)
|
||||
{
|
||||
@@ -819,7 +836,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
public void StartRecording()
|
||||
public void StartRecording()
|
||||
=> this.currentGenesis
|
||||
?.StartRecordData();
|
||||
|
||||
@@ -838,7 +855,7 @@
|
||||
.Average(x => x.TotalTimeOfFlightS);
|
||||
}
|
||||
|
||||
protected override void OnFormClosed(FormClosedEventArgs e)
|
||||
protected override void OnFormClosed(FormClosedEventArgs e)
|
||||
=> this.BtnDisconnect_Click(default(object), EventArgs.Empty);
|
||||
|
||||
private void SaveSettingsBtn_Click(Object sender, EventArgs e)
|
||||
|
||||
@@ -129,4 +129,7 @@
|
||||
<metadata name="mainMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>278, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>120</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -171,7 +171,9 @@
|
||||
<Reference Include="QRCoder, Version=1.4.3.0, Culture=neutral, PublicKeyToken=c4ed5b9ae8358a28, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\packages\QRCoder.1.4.3\lib\net40\QRCoder.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=105.0.0.0, Culture=neutral, PublicKeyToken=null" />
|
||||
<Reference Include="RestSharp, Version=105.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\packages\RestSharp.105.0.0\lib\net4\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
|
||||
@@ -428,7 +428,7 @@ namespace GenesisToolBox
|
||||
container.meterTestSettings[i].FlowTesting = true;
|
||||
container.meterTestSettings[i].PreAdjustment = false;
|
||||
container.meterTestSettings[i].SerialNr = $"450000{slotNr}";
|
||||
container.meterTestSettings[i].meterType = MeterTypes.eRegister;
|
||||
container.meterTestSettings[i].meterType = MeterTypes.MagFlux;
|
||||
|
||||
}
|
||||
i++;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
<package id="NLog" version="5.2.2" targetFramework="net48" />
|
||||
<package id="QRCoder" version="1.4.3" targetFramework="net40" />
|
||||
<package id="RestSharp" version="105.0.0" targetFramework="net48" />
|
||||
<package id="System.DirectoryServices.AccountManagement" version="7.0.0" targetFramework="net48" />
|
||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
|
||||
</packages>
|
||||
@@ -44,6 +44,7 @@ namespace XylemCommonUiLegacyGenCtl
|
||||
void Init(int v);
|
||||
|
||||
void Start();
|
||||
void LedOff();
|
||||
|
||||
bool GetAllInfos(out string oPcbId, out string oSerialNumber, out bool oHasPreajustment, out bool oHasWarnings, out string oLUT);
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
this.lblLed.Size = new System.Drawing.Size(46, 22);
|
||||
this.lblLed.TabIndex = 7;
|
||||
this.lblLed.Text = "LED";
|
||||
this.lblLed.Click += new System.EventHandler(this.lblLed_Click);
|
||||
//
|
||||
// lblDataOverall
|
||||
//
|
||||
|
||||
@@ -376,11 +376,112 @@ namespace XylemCommonUiLegacyGenCtl
|
||||
|
||||
private CancellationTokenSource CancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
|
||||
|
||||
public void LedOff()
|
||||
{
|
||||
|
||||
this.BackColor = Color.LightYellow;
|
||||
var t = new Task(() =>
|
||||
{
|
||||
|
||||
using (var overallMeterBatch = new MeterBatch("Start ctlRdy"))
|
||||
{
|
||||
using (var meter = new GenesisMeter())
|
||||
{
|
||||
var ctlCancellationToken = CancellationTokenSource.Token;
|
||||
try
|
||||
{
|
||||
|
||||
var settingsToUse = new DefaultSettings();
|
||||
|
||||
|
||||
meter.SetupFromConfigFile(meterSlot, false, true, true);
|
||||
|
||||
overallMeterBatch.AddMeter(meter);
|
||||
changeCurrentSlotState(TaskState.SetPcbId);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
changeCurrentSlotState(TaskState.Fatal);
|
||||
}
|
||||
isBusy = true;
|
||||
changeCurrentSlotState(TaskState.SetPcbId);
|
||||
setMeterInfo("-", null, null);
|
||||
if (ctlCancellationToken.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
|
||||
if (currentState != TaskState.Fatal)
|
||||
{
|
||||
FlowState = MeterReadyResults.NotStarted;
|
||||
Path1State = MeterReadyResults.NotStarted;
|
||||
Path2State = MeterReadyResults.NotStarted;
|
||||
Path3State = MeterReadyResults.NotStarted;
|
||||
|
||||
if (string.IsNullOrEmpty(meter.PcbId))
|
||||
{
|
||||
PcbId = meter.GetPcbId();
|
||||
}
|
||||
else
|
||||
{
|
||||
PcbId = meter.PcbId;
|
||||
}
|
||||
if (ctlCancellationToken.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
changeCurrentSlotState(TaskState.LoginInProgress);
|
||||
if (ctlCancellationToken.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(meter.PcbId) && meter.Login())
|
||||
{
|
||||
changeCurrentSlotState(TaskState.LoginDone);
|
||||
|
||||
meter.WriteRegister("GENESISFLOW_LedMode", 0, true, true);
|
||||
meter.WriteRegister("GENESISFLOW_SampleRate", 2, true, true);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
changeCurrentSlotState(TaskState.LoginFailed);
|
||||
DetectIsDone = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
PcbId = "";
|
||||
DetectIsDone = true;
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
isBusy = false;
|
||||
|
||||
meter?.Dispose();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
t.Start();
|
||||
}
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Start(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Start(bool forceDisplayClear)
|
||||
{
|
||||
|
||||
@@ -749,5 +850,10 @@ namespace XylemCommonUiLegacyGenCtl
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void lblLed_Click(Object sender, EventArgs e)
|
||||
{
|
||||
LedOff();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user