Fix parmeter bug when lenght sammler then 3
This commit is contained in:
parent
2c927aa46e
commit
aa906b1bdb
@ -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" />
|
||||
|
||||
@ -225,6 +225,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.UI.SIRTBroadcaster",
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Hardware.Interfaces.Protocols.SIRT", "Hardware\Interfaces\Protocols\Common.Hardware.Interfaces.Protocols.SIRT\Common.Hardware.Interfaces.Protocols.SIRT.csproj", "{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCore.UnitTest", "GenesisCore.UnitTest\GenesisCore.UnitTest.csproj", "{88995CF2-4E8B-4347-AB79-7D2796E59E7C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
Utils\DateTimeServerShared\DateTimeServerShared.projitems*{4806d89a-fbfb-41bc-aaa7-2242444bf55a}*SharedItemsImports = 4
|
||||
@ -5443,6 +5445,70 @@ Global
|
||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C}.XP32bit|x64.Build.0 = Release|Any CPU
|
||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C}.XP32bit|x86.ActiveCfg = Release|Any CPU
|
||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C}.XP32bit|x86.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.COM|x86.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.GenesisDisplayTool_V01|x86.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.PerformTest|x86.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|x64.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|x64.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.ReleaseTest|x86.Build.0 = Release|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|Any CPU.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|x64.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|x64.Build.0 = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|x86.ActiveCfg = Debug|Any CPU
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C}.XP32bit|x86.Build.0 = Debug|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -5545,6 +5611,7 @@ Global
|
||||
{B23BFAF9-08AE-4311-8C08-FB2BB49EA2AD} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
|
||||
{8D3B1C46-B23E-46CC-9B59-24E34DE60510} = {03D4F23E-7E4A-4091-BC96-036C996D351A}
|
||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C} = {EC10DAFE-88CF-42D5-99E7-D247938B6430}
|
||||
{88995CF2-4E8B-4347-AB79-7D2796E59E7C} = {B5F43F61-4448-4992-85B5-7EDFB82FD643}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}
|
||||
|
||||
@ -10,25 +10,97 @@
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="10*" />
|
||||
<ColumnDefinition Width="40*"/>
|
||||
<ColumnDefinition Width="80*"/>
|
||||
<ColumnDefinition Width="40*"/>
|
||||
<ColumnDefinition Width="10*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="21*"/>
|
||||
<RowDefinition Height="200*"/>
|
||||
<RowDefinition Height="200*"/>
|
||||
<RowDefinition Height="100*"/>
|
||||
<RowDefinition Height="21*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label x:Name="FileName" >
|
||||
|
||||
</Label>
|
||||
<Button Click="Button_Click" Grid.Row="0" Grid.Column="2" >File</Button>
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot1" Grid.Row="1" Grid.Column="1" />
|
||||
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot2" Grid.Row="2" Grid.Column="1" />
|
||||
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot3" Grid.Row="2" Grid.Column="2" />
|
||||
|
||||
|
||||
<Grid Grid.Column="2" Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="10*" />
|
||||
<ColumnDefinition Width="40*"/>
|
||||
<ColumnDefinition Width="40*"/>
|
||||
<ColumnDefinition Width="10*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="10*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="40*"/>
|
||||
<RowDefinition Height="100*"/>
|
||||
<RowDefinition Height="10*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="1">Serialnr</TextBlock>
|
||||
<TextBlock Grid.Row="2" Grid.Column="1">TestRunNr</TextBlock>
|
||||
<TextBlock Grid.Row="3" Grid.Column="1">TestBenchNr</TextBlock>
|
||||
<TextBlock Grid.Row="4" Grid.Column="1">Date</TextBlock>
|
||||
<TextBlock Grid.Row="5" Grid.Column="1">MeterSize</TextBlock>
|
||||
<TextBlock Grid.Row="6" Grid.Column="1">AirTempC</TextBlock>
|
||||
<TextBlock Grid.Row="7" Grid.Column="1">AirPressure</TextBlock>
|
||||
<TextBlock Grid.Row="8" Grid.Column="1">AirHumanity</TextBlock>
|
||||
<TextBlock Grid.Row="9" Grid.Column="1">WaterTempC</TextBlock>
|
||||
<TextBlock Grid.Row="10" Grid.Column="1">TotalMeters</TextBlock>
|
||||
<TextBlock Grid.Row="11" Grid.Column="1">Remark</TextBlock>
|
||||
|
||||
</Label><Button Click="Button_Click" Grid.Row="0" Grid.Column="2" >File</Button>
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot1" Grid.Row="1" Grid.Column="1" />
|
||||
<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding Path=testBenchresults.Serialnr }"/>
|
||||
<TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding Path=testBenchresults.TestRunNr}"/>
|
||||
<TextBlock Grid.Row="3" Grid.Column="2" Text="{Binding Path=testBenchresults.TestBenchNr}"/>
|
||||
<TextBlock Grid.Row="4" Grid.Column="2" Text="{Binding Path=testBenchresults.Date}"/>
|
||||
<TextBlock Grid.Row="5" Grid.Column="2" Text="{Binding Path=testBenchresults.MeterSize}"/>
|
||||
<TextBlock Grid.Row="6" Grid.Column="2" Text="{Binding Path=testBenchresults.AirTempC}"/>
|
||||
<TextBlock Grid.Row="7" Grid.Column="2" Text="{Binding Path=testBenchresults.AirPressure}"/>
|
||||
<TextBlock Grid.Row="8" Grid.Column="2" Text="{Binding Path=testBenchresults.AirHumanity}"/>
|
||||
<TextBlock Grid.Row="9" Grid.Column="2" Text="{Binding Path=testBenchresults.WaterTempC}"/>
|
||||
<TextBlock Grid.Row="10" Grid.Column="2" Text="{Binding Path=testBenchresults.TotalMeters}"/>
|
||||
<TextBlock Grid.Row="11" Grid.Column="2" Text="{Binding Path=testBenchresults.Remark}"/>
|
||||
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot2" Grid.Row="1" Grid.Column="2" />
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot3" Grid.Row="2" Grid.Column="1" />
|
||||
<ScottPlot:WpfPlot x:Name="WpfPlot4" Grid.Row="2" Grid.Column="2" />
|
||||
<TextBlock Grid.Row="12" Grid.Column="2" ></TextBlock>
|
||||
<DataGrid
|
||||
x:Name="dataGrid"
|
||||
Grid.Row="12"
|
||||
Grid.Column="1" Grid.ColumnSpan="2" SelectedCellsChanged="DataGrid_SelectedCellsChanged" />
|
||||
|
||||
|
||||
</Grid>
|
||||
|
||||
|
||||
<!--DataContext="{Binding testBenchresults}">
|
||||
|
||||
|
||||
|
||||
<TextBlock Text="testpoint"
|
||||
Grid.Row="0"
|
||||
Margin="9,-7,0,0" ></TextBlock>
|
||||
|
||||
<TextBlock Text="{Binding TestRunNr}"
|
||||
Grid.Row="1"
|
||||
Margin="9,-7,0,0" />-->
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@ -2,11 +2,12 @@
|
||||
using ScottPlot.WPF;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Xylem.Common.CommonCore.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.TestResults;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
@ -18,8 +19,29 @@ namespace CordoPlot
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
public partial class MainWindow : Window , INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
protected void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
private PlotableTestResults _testBenchresults;
|
||||
|
||||
public PlotableTestResults testBenchresults
|
||||
{
|
||||
get { return _testBenchresults; }
|
||||
set
|
||||
{
|
||||
if (value != _testBenchresults)
|
||||
{
|
||||
_testBenchresults = value;
|
||||
OnPropertyChanged("testBenchresults");
|
||||
}
|
||||
}
|
||||
}
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -45,16 +67,19 @@ namespace CordoPlot
|
||||
//lade testresult from webservise
|
||||
// Open document
|
||||
string filename = dialog.FileName;
|
||||
PlotableTestResults testBenchresults = new PlotableTestResults();
|
||||
testBenchresults = new PlotableTestResults();
|
||||
var AllLines = File.ReadAllLines(filename);
|
||||
|
||||
//LedRawData__Slot_7_SN24712962_PG2016079130.log
|
||||
if (filename.Contains("_SN") && filename.Contains("_PG"))
|
||||
{
|
||||
var sn = filename.Substring(filename.LastIndexOf("_SN") +3, filename.LastIndexOf("_PG") - filename.LastIndexOf("_SN") - 3);
|
||||
var pg = filename.Substring(filename.LastIndexOf("_PG") +3, filename.LastIndexOf(".log") - filename.LastIndexOf("_PG") - 3);
|
||||
var sn = filename.Substring(filename.LastIndexOf("_SN") + 3, filename.LastIndexOf("_PG") - filename.LastIndexOf("_SN") - 3);
|
||||
var pg = filename.Substring(filename.LastIndexOf("_PG") + 3, filename.LastIndexOf(".log") - filename.LastIndexOf("_PG") - 3);
|
||||
testBenchresults = JsonConvert.DeserializeObject<PlotableTestResults>(LocalWebRequest.GetRequest($"http://10.49.40.25/MeterProcessState/api/TestBench/GetTestResults?SerialNr={sn}&TestRunNr={pg}"));
|
||||
testBenchresults.HasResults = true;
|
||||
|
||||
dataGrid.ItemsSource = testBenchresults.TestPointsMain;
|
||||
dataGrid.Items.Refresh();
|
||||
}
|
||||
|
||||
var listOfData = new List<List<IMeasurementRecord>>();
|
||||
@ -65,8 +90,10 @@ namespace CordoPlot
|
||||
var decoder = new StreamingDecoder();
|
||||
var currentSyncmark = SyncMarkRecord.DecodeEveryPackage;
|
||||
//DecodeMsg
|
||||
var linecounter = 0;
|
||||
foreach (var line in AllLines)
|
||||
{
|
||||
linecounter = linecounter + 1;
|
||||
decoder = new StreamingDecoder();
|
||||
|
||||
if (line.Contains("|"))
|
||||
@ -89,15 +116,17 @@ namespace CordoPlot
|
||||
{
|
||||
decoder.DataCalib.ReceivedTime = recived;
|
||||
decoder.DataCalib.SyncMarkRecord = currentSyncmark;
|
||||
recordToAdd = decoder.DataCalib;
|
||||
listOfData[recordToAdd.GetChannel()].Add(recordToAdd);
|
||||
var n = new PlotCalibrationRecord(decoder.DataCalib, linecounter);
|
||||
|
||||
listOfData[n.GetChannel()].Add(n);
|
||||
}
|
||||
else if (decoder.DataFlowTest != null && decoder.DataFlowTest.IsValid)
|
||||
{
|
||||
decoder.DataFlowTest.ReceivedTime = recived;
|
||||
decoder.DataFlowTest.SyncMarkRecord = currentSyncmark;
|
||||
recordToAdd = decoder.DataFlowTest;
|
||||
listOfData[0].Add(recordToAdd);
|
||||
var n = new PlotFlowTestRecord(decoder.DataFlowTest, linecounter);
|
||||
listOfData[n.GetChannel()].Add(n);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -151,6 +180,12 @@ namespace CordoPlot
|
||||
Lines.Add(new List<double>());
|
||||
|
||||
|
||||
var ChnlHelper = new List<Tuple<int, WpfPlot, int?>>();
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(0, WpfPlot1, null));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(1, WpfPlot1, null));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(2, WpfPlot1, null));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(3, WpfPlot1, null));
|
||||
Plot(ChnlHelper);
|
||||
//List<List<ushort>> Errors = new List<List<ushort>>();
|
||||
//Errors.Add(new List<ushort>());
|
||||
//Errors.Add(new List<ushort>());
|
||||
@ -189,64 +224,6 @@ namespace CordoPlot
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
List<Tuple<ScottPlot.Color, ScottPlot.Color>> colors = new List<Tuple<ScottPlot.Color, ScottPlot.Color>>();
|
||||
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Blue, ScottPlot.Colors.DarkBlue));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Brown, ScottPlot.Colors.DarkGoldenRod));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Yellow, ScottPlot.Colors.DarkKhaki));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Violet, ScottPlot.Colors.DarkViolet));
|
||||
|
||||
List<List<double>> FinLines = new List<List<double>>();
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
|
||||
|
||||
|
||||
var ChnlHelper = new List<Tuple<int, WpfPlot>>();
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot>(0, WpfPlot1));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot>(1, WpfPlot2));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot>(2, WpfPlot3));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot>(3, WpfPlot4));
|
||||
|
||||
|
||||
var Plotresults = new List<PlotResult>();
|
||||
foreach (var item in ChnlHelper)
|
||||
{
|
||||
var volLines = testBenchresults.Plot( item.Item1, null);
|
||||
volLines.Color = colors[item.Item1].Item1;
|
||||
Plotresults.Add(volLines);
|
||||
|
||||
//foreach (var item in Errors[i])
|
||||
//{
|
||||
|
||||
// if (item != 0)
|
||||
// {
|
||||
// WpfPlot1.Plot.Add.Marker(Linescale[cordHelp], FinLines[i][cordHelp], ScottPlot.MarkerShape.Cross, 10, colors[1].Item2);
|
||||
// }
|
||||
// cordHelp = cordHelp + 1;
|
||||
//}
|
||||
|
||||
}
|
||||
var maxScale = Plotresults.Max(p => p.ScaleLine.Count);
|
||||
var AddScale = Plotresults.First(p => p.ScaleLine.Count == maxScale);
|
||||
var srtExport = new System.Text.StringBuilder();
|
||||
|
||||
foreach (var item in ChnlHelper)
|
||||
{
|
||||
Plotresults[item.Item1].ScaleUp(AddScale.ScaleLine);
|
||||
item.Item2.Plot.Add.Scatter(Plotresults[item.Item1].ScaleLine.ToArray(), Plotresults[item.Item1].VolumeLine.ToArray(), Plotresults[item.Item1].Color);
|
||||
var exprLine = 0;
|
||||
srtExport.AppendLine($"Chnl {item.Item1} ;Scale; Vol;");
|
||||
foreach (var exprHelpLine in Plotresults[item.Item1].ScaleLine)
|
||||
{
|
||||
srtExport.AppendLine($"{exprHelpLine};{Plotresults[item.Item1].VolumeLine[exprLine]};");
|
||||
exprLine = exprLine + 1;
|
||||
}
|
||||
item.Item2.Plot.Axes.AutoScale();
|
||||
item.Item2.Refresh();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -280,6 +257,109 @@ namespace CordoPlot
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void Plot(List<Tuple<int, WpfPlot, int?>> ChnlHelper)
|
||||
{
|
||||
WpfPlot1.Reset();
|
||||
WpfPlot2.Reset();
|
||||
WpfPlot3.Reset();
|
||||
List<Tuple<ScottPlot.Color, ScottPlot.Color>> colors = new List<Tuple<ScottPlot.Color, ScottPlot.Color>>();
|
||||
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Blue, ScottPlot.Colors.DarkBlue));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Brown, ScottPlot.Colors.DarkGoldenRod));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Yellow, ScottPlot.Colors.DarkKhaki));
|
||||
colors.Add(new Tuple<ScottPlot.Color, ScottPlot.Color>(ScottPlot.Colors.Violet, ScottPlot.Colors.DarkViolet));
|
||||
|
||||
List<List<double>> FinLines = new List<List<double>>();
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
FinLines.Add(new List<double>());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var Plotresults = new List<PlotResult>();
|
||||
foreach (var item in ChnlHelper)
|
||||
{
|
||||
var volLines = testBenchresults.Plot(item.Item1, item.Item3);
|
||||
volLines.Color = colors[item.Item1].Item1;
|
||||
Plotresults.Add(volLines);
|
||||
|
||||
//foreach (var item in Errors[i])
|
||||
//{
|
||||
|
||||
// if (item != 0)
|
||||
// {
|
||||
// WpfPlot1.Plot.Add.Marker(Linescale[cordHelp], FinLines[i][cordHelp], ScottPlot.MarkerShape.Cross, 10, colors[1].Item2);
|
||||
// }
|
||||
// cordHelp = cordHelp + 1;
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
var maxScale = Plotresults.Max(p => p.ScaleLine.Count);
|
||||
var AddScale = Plotresults.First(p => p.ScaleLine.Count == maxScale);
|
||||
var srtExport = new System.Text.StringBuilder();
|
||||
|
||||
foreach (var item in ChnlHelper)
|
||||
{
|
||||
// Plotresults[item.Item1].ScaleUp(AddScale.ScaleLine);
|
||||
WpfPlot1.Plot.Add.Scatter(Plotresults[item.Item1].ScaleLine.ToArray(), Plotresults[item.Item1].VolumeLine.ToArray(), Plotresults[item.Item1].Color);
|
||||
|
||||
if (Plotresults[item.Item1].TofLine.Any())
|
||||
{
|
||||
WpfPlot2.Plot.Add.Scatter(Plotresults[item.Item1].ScaleLine.ToArray(), Plotresults[item.Item1].TofLine.ToArray(), Plotresults[item.Item1].Color);
|
||||
|
||||
}
|
||||
if (Plotresults[item.Item1].AmplitudeDownVLine.Any())
|
||||
{
|
||||
WpfPlot3.Plot.Add.Scatter(Plotresults[item.Item1].ScaleLine.ToArray(), Plotresults[item.Item1].AmplitudeDownVLine.ToArray(), Plotresults[item.Item1].Color);
|
||||
WpfPlot3.Plot.Add.Scatter(Plotresults[item.Item1].ScaleLine.ToArray(), Plotresults[item.Item1].AmplitudeUpVLine.ToArray(), Plotresults[item.Item1].Color);
|
||||
}
|
||||
var exprLine = 0;
|
||||
srtExport.AppendLine($"Chnl {item.Item1} ;Scale; Vol;");
|
||||
foreach (var exprHelpLine in Plotresults[item.Item1].ScaleLine)
|
||||
{
|
||||
srtExport.AppendLine($"{exprHelpLine};{Plotresults[item.Item1].VolumeLine[exprLine]};");
|
||||
exprLine = exprLine + 1;
|
||||
}
|
||||
|
||||
}
|
||||
WpfPlot1.Plot.Axes.AutoScale();
|
||||
WpfPlot1.Refresh();
|
||||
WpfPlot2.Plot.Axes.AutoScale();
|
||||
WpfPlot2.Refresh();
|
||||
WpfPlot3.Plot.Axes.AutoScale();
|
||||
WpfPlot3.Refresh();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void DataGrid_SelectedCellsChanged(Object sender, System.Windows.Controls.SelectedCellsChangedEventArgs e)
|
||||
{
|
||||
DataGridCellInfo di = e.AddedCells.First();
|
||||
|
||||
|
||||
//Cast the DataGridCellInfo.Item to the source object type
|
||||
//In this case the ItemsSource is a DataTable and individual items are DataRows
|
||||
|
||||
if (di.Item is TestPoint tp)
|
||||
{
|
||||
var ChnlHelper = new List<Tuple<int, WpfPlot, int?>>();
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(0, WpfPlot1, tp.TestPointNr -1 ));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(1, WpfPlot1, tp.TestPointNr -1));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(2, WpfPlot1, tp.TestPointNr -1 ));
|
||||
ChnlHelper.Add(new Tuple<int, WpfPlot, int?>(3, WpfPlot1, tp.TestPointNr -1));
|
||||
Plot(ChnlHelper);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,12 +8,81 @@ using Xylem.Common.Metrology.Measurements;
|
||||
|
||||
namespace CordoPlot
|
||||
{
|
||||
|
||||
public class PlotCalibrationRecord : CalibrationRecord
|
||||
{
|
||||
public PlotCalibrationRecord(CalibrationRecord c, int linenr)
|
||||
{
|
||||
base.AccuVolumeRaw = c.AccuVolumeRaw;
|
||||
base.AmplitudeDownV = c.AmplitudeDownV;
|
||||
base.AmplitudeUpV = c.AmplitudeUpV;
|
||||
base.Channel = c.Channel;
|
||||
base.Crc = c.Crc;
|
||||
base.DecodedTime = c.DecodedTime;
|
||||
base.DeltaTimeOfFlightS = c.DeltaTimeOfFlightS;
|
||||
base.DeltaVolumeQm = c.DeltaVolumeQm;
|
||||
base.DeltaVolumeRaw = c.DeltaVolumeRaw;
|
||||
base.FlowRateCmPh = c.FlowRateCmPh;
|
||||
base.ForwardVolumeCm = c.ForwardVolumeCm;
|
||||
base.IsValid = c.IsValid;
|
||||
base.NegativeReverseVolumeCm = c.NegativeReverseVolumeCm;
|
||||
base.OverflowTimeS = c.OverflowTimeS;
|
||||
base.OverflowVolumeCm = c.OverflowVolumeCm;
|
||||
base.PulseWidthRatioDown = c.PulseWidthRatioDown;
|
||||
base.PulseWidthRatioUp = c.PulseWidthRatioUp;
|
||||
base.RawDeltaTimeOfFlight = c.RawDeltaTimeOfFlight;
|
||||
base.RawTotalTimeOfFlight = c.RawTotalTimeOfFlight;
|
||||
base.ReceivedTime = c.ReceivedTime;
|
||||
base.SampleIntervalS = c.SampleIntervalS;
|
||||
base.SyncMarkRecord = c.SyncMarkRecord;
|
||||
base.TemperatureDegC = c.TemperatureDegC;
|
||||
base.TemperaturePowFactor = c.TemperaturePowFactor;
|
||||
base.TemperatureRaw = c.TemperatureRaw;
|
||||
base.TimeS = c.TimeS;
|
||||
base.TotalTimeOfFlightS = c.TotalTimeOfFlightS;
|
||||
base.Validation = c.Validation;
|
||||
base.VolumeCm = c.VolumeCm;
|
||||
base.VolumeFactorRawToQm = c.VolumeFactorRawToQm;
|
||||
base.VolumeScaleRawPerMl = c.VolumeScaleRawPerMl;
|
||||
LineNummer = linenr;
|
||||
}
|
||||
public int LineNummer { get; set; }
|
||||
}
|
||||
|
||||
public class PlotFlowTestRecord : FlowTestRecord
|
||||
{
|
||||
public PlotFlowTestRecord(FlowTestRecord c , int linenr)
|
||||
{
|
||||
|
||||
base.Channel = 0;
|
||||
base.Crc = c.Crc;
|
||||
base.DecodedTime = c.DecodedTime;
|
||||
base.FlowRateCmPh = c.FlowRateCmPh;
|
||||
base.ForwardVolumeCm = c.ForwardVolumeCm;
|
||||
base.IsValid = c.IsValid;
|
||||
base.NegativeReverseVolumeCm = c.NegativeReverseVolumeCm;
|
||||
base.OverflowTimeS = c.OverflowTimeS;
|
||||
base.OverflowVolumeCm = c.OverflowVolumeCm;
|
||||
base.ReceivedTime = c.ReceivedTime;
|
||||
base.SyncMarkRecord = c.SyncMarkRecord;
|
||||
base.TimeS = c.TimeS;
|
||||
base.VolumeCm = c.VolumeCm;
|
||||
LineNummer = linenr;
|
||||
}
|
||||
public int LineNummer { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class PlotResult
|
||||
{
|
||||
public List<double> VolumeLine = new List<double>();
|
||||
public List<double> ScaleLine = new List<double>();
|
||||
public List<double> GP30Erros = new List<double>();
|
||||
public List<double> TestMarks = new List<double>();
|
||||
public List<double> TofLine = new List<double>();
|
||||
public List<double> AmplitudeUpVLine = new List<double>();
|
||||
public List<double> AmplitudeDownVLine = new List<double>();
|
||||
|
||||
public Color Color { get; internal set; }
|
||||
|
||||
@ -56,12 +125,14 @@ namespace CordoPlot
|
||||
var CurrentTestPoint = 0;
|
||||
var CurrentChnl = -1;
|
||||
var testPointLocked = false;
|
||||
//14787
|
||||
foreach (var allChnlItems in this.ListOfRecords)
|
||||
{
|
||||
var intiVol = 0.0;
|
||||
CurrentChnl = CurrentChnl + 1;//29586
|
||||
|
||||
CurrentTestPoint = 0;
|
||||
testPointLocked = false;
|
||||
foreach (var item in allChnlItems)
|
||||
{
|
||||
|
||||
@ -99,9 +170,16 @@ namespace CordoPlot
|
||||
var results = testPointResults.Where(t => t.Chnl == Chnl && (!TestNr.HasValue || t.TestNr == TestNr.Value));
|
||||
|
||||
List<double> VolumeLine = new List<double>();
|
||||
|
||||
double LastVolOrig = 0;
|
||||
List<double> ScaleLine = new List<double>();
|
||||
List<double> GP30Erros = new List<double>();
|
||||
List<double> TestMarks = new List<double>();
|
||||
List<double> TofLines = new List<double>();
|
||||
List<double> AmplitudeUpVLines = new List<double>();
|
||||
List<double> AmplitudeDownVLines = new List<double>();
|
||||
|
||||
|
||||
var linecounter = 0;
|
||||
var counter = 0;
|
||||
var intiVol = 0.0;
|
||||
@ -115,35 +193,47 @@ namespace CordoPlot
|
||||
{
|
||||
TestMarks.Add(line.GetTimeS());
|
||||
currentTestNr = lines.TestNr;
|
||||
intiVol = 0.0;
|
||||
LastVolOrig = line.GetVolumeCm();
|
||||
}
|
||||
|
||||
ScaleLine.Add(line.GetTimeS() + (100000 * currentTestNr));
|
||||
if (line is CalibrationRecord cal)
|
||||
ScaleLine.Add(line.GetTimeS());
|
||||
if (line is PlotCalibrationRecord cal)
|
||||
{
|
||||
GP30Erros.Add(cal.Validation);
|
||||
TofLines.Add(cal.TotalTimeOfFlightS);
|
||||
AmplitudeUpVLines.Add(cal.AmplitudeUpV);
|
||||
AmplitudeDownVLines.Add(cal.AmplitudeDownV);
|
||||
//VolumeLine.Add(cal.LineNummer);
|
||||
|
||||
}
|
||||
else
|
||||
else if (line is PlotFlowTestRecord disp)
|
||||
{
|
||||
GP30Erros.Add(0);
|
||||
|
||||
//VolumeLine.Add(disp.LineNummer);
|
||||
}
|
||||
|
||||
if (!VolumeLine.Any())
|
||||
{
|
||||
VolumeLine.Add(0);
|
||||
intiVol = line.GetVolumeCm();
|
||||
|
||||
LastVolOrig = line.GetVolumeCm();
|
||||
intiVol = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var addVol = line.GetVolumeCm() - intiVol;
|
||||
|
||||
var addVol = line.GetVolumeCm() - LastVolOrig;
|
||||
var dutOverflowVolumeCm = line.GetOverflowVolumeCm();
|
||||
//an overflow is detected when absolute volume difference is higher than 1/2 of the OverflowVolumeCm
|
||||
if (Math.Abs(addVol - VolumeLine.Last()) > (0.5 * dutOverflowVolumeCm))
|
||||
if (intiVol != 0 && Math.Abs(addVol) > (0.5 * dutOverflowVolumeCm))
|
||||
{
|
||||
//if the overflow has been detected the end volume is higher than the start volume
|
||||
//indicates the negative flow direction
|
||||
if (addVol > VolumeLine.Last())
|
||||
if (addVol < 0)
|
||||
{
|
||||
//negative overflow
|
||||
intiVol -= dutOverflowVolumeCm;
|
||||
intiVol += dutOverflowVolumeCm;
|
||||
//LoggerMeasurement.Info($"Slot:{Slot}, Channel: {IntermediateRecord.GetChannel()} - has negative overflow. currentVolumeQm ({currentVolumeQm}) - lastVolumeQm ({lastVolumeQm}). current accuOverflowVolume is {_accuDutOverflowVolumeCm}");
|
||||
}
|
||||
else
|
||||
@ -153,11 +243,10 @@ namespace CordoPlot
|
||||
//LoggerMeasurement.Info($"Slot:{Slot}, Channel: {IntermediateRecord.GetChannel()} - has positive overflow. currentVolumeQm ({currentVolumeQm}) - lastVolumeQm ({lastVolumeQm}). current accuOverflowVolume is {_accuDutOverflowVolumeCm}");
|
||||
}
|
||||
}
|
||||
addVol = line.GetVolumeCm() - intiVol;
|
||||
|
||||
VolumeLine.Add(addVol);
|
||||
|
||||
intiVol += addVol;
|
||||
LastVolOrig = line.GetVolumeCm();
|
||||
|
||||
VolumeLine.Add(intiVol);
|
||||
}
|
||||
|
||||
|
||||
@ -169,7 +258,7 @@ namespace CordoPlot
|
||||
linecounter = 1 + linecounter;
|
||||
}
|
||||
|
||||
return new PlotResult() { VolumeLine = VolumeLine, ScaleLine = ScaleLine, GP30Erros = GP30Erros, TestMarks = TestMarks };
|
||||
return new PlotResult() { VolumeLine = VolumeLine, ScaleLine = ScaleLine, GP30Erros = GP30Erros, TestMarks = TestMarks, TofLine = TofLines, AmplitudeUpVLine = AmplitudeUpVLines, AmplitudeDownVLine = AmplitudeDownVLines };
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{D0C8D887-ED52-40AB-A069-90BCE0E801E2}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Xylem.Common.Ui.CordonelPreadjustmentUi</RootNamespace>
|
||||
<AssemblyName>Xylem.Common.Ui.CordonelPreadjustmentUi</AssemblyName>
|
||||
@ -114,6 +114,8 @@
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup />
|
||||
<PropertyGroup>
|
||||
<NoWin32Manifest>true</NoWin32Manifest>
|
||||
</PropertyGroup>
|
||||
|
||||
@ -17,6 +17,8 @@ namespace Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters
|
||||
|
||||
case MeterSize.DN50:
|
||||
case MeterSize.DN40:
|
||||
case MeterSize.US1_5:
|
||||
case MeterSize.US2:
|
||||
FlowrateQmH = 40;
|
||||
DurationS = 120;
|
||||
break;
|
||||
@ -25,20 +27,23 @@ namespace Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters
|
||||
DurationS = 120;
|
||||
break;
|
||||
case MeterSize.DN80:
|
||||
case MeterSize.US3:
|
||||
FlowrateQmH = 100;
|
||||
DurationS = 120;
|
||||
break;
|
||||
case MeterSize.DN100:
|
||||
case MeterSize.US4:
|
||||
FlowrateQmH = 140;
|
||||
DurationS = 120;
|
||||
break;
|
||||
case MeterSize.DN125:
|
||||
FlowrateQmH = 140;
|
||||
DurationS = 120;
|
||||
case MeterSize.US6:
|
||||
FlowrateQmH = 400;
|
||||
DurationS = 60;
|
||||
break;
|
||||
case MeterSize.DN150:
|
||||
FlowrateQmH = 200;
|
||||
DurationS = 120;
|
||||
FlowrateQmH = 400;
|
||||
DurationS = 60;
|
||||
break;
|
||||
default:
|
||||
Message = $"Warning no parameter for meter size {meterSize.GetHashCode()} use default!{Environment.NewLine}";
|
||||
|
||||
@ -530,21 +530,21 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
private Boolean CheckDistance(ProcessProgress pp, Double left, Double right, out String debugMessage, int Slot)
|
||||
{
|
||||
Boolean Ok = true;
|
||||
debugMessage = $"Distance check successful at {Slot}";
|
||||
debugMessage = $"Distance check successful at {Slot} Left {left} right {right}";
|
||||
|
||||
if (left < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||
{
|
||||
Ok = false;
|
||||
debugMessage = $"Distance check failed at {Slot}";
|
||||
return Ok;
|
||||
}
|
||||
//if (left < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||
//{
|
||||
// Ok = false;
|
||||
// debugMessage = $"Distance check failed at {Slot}";
|
||||
// return Ok;
|
||||
//}
|
||||
|
||||
if (right < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||
{
|
||||
Ok = false;
|
||||
debugMessage = $"Distance check failed at {Slot}";
|
||||
return Ok;
|
||||
}
|
||||
//if (right < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||
//{
|
||||
// Ok = false;
|
||||
// debugMessage = $"Distance check failed at {Slot}";
|
||||
// return Ok;
|
||||
//}
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
@ -86,10 +86,24 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
{
|
||||
meterctl.SetTemperature((decimal)0);
|
||||
}
|
||||
pp.RequestTemperatur();
|
||||
|
||||
if (pp.Setting.GetTempUsePtOverSps())
|
||||
{
|
||||
pp.RequestTemperatur();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
pp.RequestTempretureSelection();
|
||||
|
||||
}
|
||||
while (!pp.TempretureSelected)
|
||||
{
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
foreach (var meterctl in TempMeterStateCtls)
|
||||
{
|
||||
meterctl.SetTemperature((decimal)0);
|
||||
|
||||
meterctl.OnTempretureChangedHandler += delegate (Object sender, EventArgsDecimal d)
|
||||
{
|
||||
decimal avgTemp = 0;
|
||||
@ -118,12 +132,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
||||
listOfProcessTask.Add(new Task<bool>(() =>
|
||||
{
|
||||
|
||||
pp.RequestTempretureSelection();
|
||||
while (!pp.TempretureSelected)
|
||||
{
|
||||
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
|
||||
if (pp.Setting.GetTempUsePtOverSps() && pp.PushedTestBenchTemp.HasValue)
|
||||
{
|
||||
foreach (var updateMeter in MetersToProcess)
|
||||
|
||||
13
Common/GenesisCore.UnitTest/Features/Calculator.feature
Normal file
13
Common/GenesisCore.UnitTest/Features/Calculator.feature
Normal file
@ -0,0 +1,13 @@
|
||||
Feature: Calculator
|
||||

|
||||
Simple calculator for adding **two** numbers
|
||||
|
||||
Link to a feature: [Calculator](GenesisCore.UnitTest/Features/Calculator.feature)
|
||||
***Further read***: **[Learn more about how to generate Living Documentation](https://docs.specflow.org/projects/specflow-livingdoc/en/latest/LivingDocGenerator/Generating-Documentation.html)**
|
||||
|
||||
@mytag
|
||||
Scenario: Add two numbers
|
||||
Given the first number is 50
|
||||
And the second number is 70
|
||||
When the two numbers are added
|
||||
Then the result should be 120
|
||||
22
Common/GenesisCore.UnitTest/GenesisCore.UnitTest.csproj
Normal file
22
Common/GenesisCore.UnitTest/GenesisCore.UnitTest.csproj
Normal file
@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
||||
<PackageReference Include="SpecFlow.Plus.LivingDocPlugin" Version="3.9.57" />
|
||||
<PackageReference Include="SpecFlow.NUnit" Version="3.9.74" />
|
||||
<PackageReference Include="nunit" Version="3.13.2" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.1.0" />
|
||||
<PackageReference Include="FluentAssertions" Version="6.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Drivers\" />
|
||||
<Folder Include="Hooks\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,58 @@
|
||||
using TechTalk.SpecFlow;
|
||||
|
||||
namespace GenesisCore.UnitTest.Steps
|
||||
{
|
||||
[Binding]
|
||||
public sealed class CalculatorStepDefinitions
|
||||
{
|
||||
|
||||
// For additional details on SpecFlow step definitions see https://go.specflow.org/doc-stepdef
|
||||
|
||||
private readonly ScenarioContext _scenarioContext;
|
||||
|
||||
public CalculatorStepDefinitions(ScenarioContext scenarioContext)
|
||||
{
|
||||
_scenarioContext = scenarioContext;
|
||||
}
|
||||
|
||||
[Given("the first number is (.*)")]
|
||||
public void GivenTheFirstNumberIs(int number)
|
||||
{
|
||||
//TODO: implement arrange (precondition) logic
|
||||
// For storing and retrieving scenario-specific data see https://go.specflow.org/doc-sharingdata
|
||||
// To use the multiline text or the table argument of the scenario,
|
||||
// additional string/Table parameters can be defined on the step definition
|
||||
// method.
|
||||
|
||||
_scenarioContext.Pending();
|
||||
}
|
||||
|
||||
[Given("the second number is (.*)")]
|
||||
public void GivenTheSecondNumberIs(int number)
|
||||
{
|
||||
//TODO: implement arrange (precondition) logic
|
||||
// For storing and retrieving scenario-specific data see https://go.specflow.org/doc-sharingdata
|
||||
// To use the multiline text or the table argument of the scenario,
|
||||
// additional string/Table parameters can be defined on the step definition
|
||||
// method.
|
||||
|
||||
_scenarioContext.Pending();
|
||||
}
|
||||
|
||||
[When("the two numbers are added")]
|
||||
public void WhenTheTwoNumbersAreAdded()
|
||||
{
|
||||
//TODO: implement act (action) logic
|
||||
|
||||
_scenarioContext.Pending();
|
||||
}
|
||||
|
||||
[Then("the result should be (.*)")]
|
||||
public void ThenTheResultShouldBe(int result)
|
||||
{
|
||||
//TODO: implement assert (verification) logic
|
||||
|
||||
_scenarioContext.Pending();
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -103,7 +103,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd
|
||||
{
|
||||
var url = ServiceUrls.GenesisGetPasswordContainerServiceUrl();
|
||||
|
||||
var requestResponse = LocalWebRequest.GetRequestWithError(url + pcbId, out var errorCode, 30000, isRetry: true);
|
||||
var requestResponse = LocalWebRequest.GetRequestWithError(url + pcbId, out var errorCode, 80000, isRetry: true);
|
||||
if (errorCode == HttpStatusCode.OK.GetHashCode())
|
||||
{
|
||||
passwordContainer = JsonConvert.DeserializeObject<MeterPwdDb>(requestResponse);
|
||||
|
||||
@ -1 +1 @@
|
||||
8fbe991b217e7692af4817ad205b768685aa5a72
|
||||
c43c40a030005a8f189e6179faf40a6d42bfef5c
|
||||
|
||||
@ -167,13 +167,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
return MeterSize.US3;
|
||||
case 4:
|
||||
return MeterSize.US4;
|
||||
case 5:
|
||||
return MeterSize.US6;
|
||||
case 6:
|
||||
return MeterSize.US8;
|
||||
case 7:
|
||||
return MeterSize.US10;
|
||||
return MeterSize.US6;
|
||||
case 8:
|
||||
return MeterSize.US8;
|
||||
case 10:
|
||||
return MeterSize.US10;
|
||||
case 12:
|
||||
return MeterSize.US12;
|
||||
|
||||
case 38:
|
||||
|
||||
@ -24,7 +24,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
|
||||
using (var dataAccess = new SqlDataAccess(connectionString))
|
||||
{
|
||||
|
||||
|
||||
var sb = new StringBuilder();
|
||||
|
||||
sb.AppendLine($" SELECT distinct[MapPcbIdToSerialNumber_SerialNumber], mapOrder.CordonelPressureTest_FertigungsAuftragsNr ");
|
||||
@ -59,12 +59,12 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_EncryptionKey", radioParams.EncryptionKey.ToArray()));
|
||||
|
||||
|
||||
|
||||
|
||||
if (radioParams.PowerLevel > 0 && radioParams.PowerLevelOption > 0 && radioParams.ImpedanceCodeNew > 0 && radioParams.ImpedanceCodeOption > 0)
|
||||
{
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevel", BitConverter.GetBytes(radioParams.PowerLevel).Reverse().ToArray()));
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevelOption", BitConverter.GetBytes(radioParams.PowerLevelOption).Reverse().ToArray()));
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevelOption", BitConverter.GetBytes(radioParams.PowerLevelOption).Reverse().ToArray()));
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeNew", BitConverter.GetBytes(radioParams.ImpedanceCodeNew).Reverse().ToArray()));
|
||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeOption", BitConverter.GetBytes(radioParams.ImpedanceCodeOption).Reverse().ToArray()));
|
||||
}
|
||||
@ -132,7 +132,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
|
||||
foreach (DataRow row in mapData.Rows)
|
||||
{
|
||||
ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), RegisterConverter.ValueToByteArray(Convert.ToInt32(row["RegisterValue"]))));
|
||||
ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), RegisterConverter.ValueToByteArray(Convert.ToInt32(row["RegisterValue"]))));
|
||||
}
|
||||
}
|
||||
var ident = "GNS";
|
||||
@ -141,19 +141,18 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
ident += vakoData.KeyValues.First(k => k.Key == "Nennweite").Charcode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var retStr = LocalWebRequest.GetRequest($"http://sla12iis01/csdcore/csdservice/getstampings?CsdIdent={csdIdent}&GroupId=1&ProductIdent={ident}&ProductDn={rawVako.Dn}&ShowOnlyValidStampings=0", 8000);
|
||||
var retListRealCsd = JsonConvert.DeserializeObject<List<CsdParameterResult>>(retStr);
|
||||
if (retListRealCsd != null && retListRealCsd.Any())
|
||||
{
|
||||
|
||||
|
||||
foreach (var csdItemToConvert in retListRealCsd)
|
||||
{
|
||||
if (csdItemToConvert.ValueText.Contains("-"))
|
||||
{
|
||||
ret.Add(new ProgrammingParameters(csdItemToConvert.Name, ByteStyler.Parse(csdItemToConvert.ValueText, false), ProgrammingSource.Csd));
|
||||
}
|
||||
|
||||
ret.Add(new ProgrammingParameters(csdItemToConvert.Name, ByteStyler.Parse(csdItemToConvert.ValueText, false), ProgrammingSource.Csd));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -173,7 +172,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
var ret = new List<ProgrammingParameters>();
|
||||
|
||||
Int32 orderNr = 3215223;
|
||||
|
||||
|
||||
var rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr);
|
||||
var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type);
|
||||
var vakoData = VakoParser.Parse(rawVako, rawMapping);
|
||||
|
||||
@ -34,13 +34,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore
|
||||
/// <summary>
|
||||
/// The register name
|
||||
/// </summary>
|
||||
public String RegisterName { get; }
|
||||
public String RegisterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The register value converted to raw bytes by register converter
|
||||
/// </summary>
|
||||
public Byte[] RegisterValue { get; }
|
||||
public Byte[] RegisterValue { get; set; }
|
||||
|
||||
public ProgrammingSource Source { get; }
|
||||
public ProgrammingSource Source { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,28 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.TestResults
|
||||
{
|
||||
public class TestResults
|
||||
public class TestResults : INotifyPropertyChanged
|
||||
{
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
protected void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<TestPointDetail> Details;
|
||||
public List<TestPoint> TestPointsMain;
|
||||
public List<ChnlTestPoint> TestPointsChannels;
|
||||
public String MeterType;
|
||||
|
||||
public Int32 Serialnr { get; set; }
|
||||
public Int32 TestRunNr { get; set; }
|
||||
public Int32 TestBenchNr { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
public Int32 MeterSize { get; set; }
|
||||
public Double AirTempC { get; set; }
|
||||
public Double AirPressure { get; set; }
|
||||
public Double AirHumanity { get; set; }
|
||||
public Double WaterTempC { get; set; }
|
||||
public Int32 TotalMeters { get; set; }
|
||||
public String Remark { get; set; }
|
||||
public Int32 Serialnr { get { return _Serialnr; } set { if (value != _Serialnr) { _Serialnr = value; OnPropertyChanged("Serialnr"); } } }
|
||||
public Int32 TestRunNr { get { return _TestRunNr; } set { if (value != _TestRunNr) { _TestRunNr = value; OnPropertyChanged("TestRunNr"); } } }
|
||||
public Int32 TestBenchNr { get { return _TestBenchNr; } set { if (value != _TestBenchNr) { _TestBenchNr = value; OnPropertyChanged("TestBenchNr"); } } }
|
||||
public DateTime Date { get { return _Date; } set { if (value != _Date) { _Date = value; OnPropertyChanged("Date"); } } }
|
||||
public Int32 MeterSize { get { return _MeterSize; } set { if (value != _MeterSize) { _MeterSize = value; OnPropertyChanged("MeterSize"); } } }
|
||||
public Double AirTempC { get { return _AirTempC; } set { if (value != _AirTempC) { _AirTempC = value; OnPropertyChanged("AirTempC"); } } }
|
||||
public Double AirPressure { get { return _AirPressure; } set { if (value != _AirPressure) { _AirPressure = value; OnPropertyChanged("AirPressure"); } } }
|
||||
public Double AirHumanity { get { return _AirHumanity; } set { if (value != _AirHumanity) { _AirHumanity = value; OnPropertyChanged("AirHumanity"); } } }
|
||||
public Double WaterTempC { get { return _WaterTempC; } set { if (value != _WaterTempC) { _WaterTempC = value; OnPropertyChanged("WaterTempC"); } } }
|
||||
public Int32 TotalMeters { get { return _TotalMeters; } set { if (value != _TotalMeters) { _TotalMeters = value; OnPropertyChanged("TotalMeters"); } } }
|
||||
public String Remark { get { return _Remark; } set { if (value != _Remark) { _Remark = value; OnPropertyChanged("Remark"); } } }
|
||||
|
||||
private Int32 _Serialnr;
|
||||
private Int32 _TestRunNr ;
|
||||
private Int32 _TestBenchNr ;
|
||||
private DateTime _Date ;
|
||||
private Int32 _MeterSize ;
|
||||
private Double _AirTempC ;
|
||||
private Double _AirPressure ;
|
||||
private Double _AirHumanity ;
|
||||
private Double _WaterTempC ;
|
||||
private Int32 _TotalMeters ;
|
||||
private String _Remark ;
|
||||
|
||||
}
|
||||
public class TestPoint
|
||||
{
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
mc:Ignorable="d"
|
||||
Title="FinalTest" MinHeight="500" MinWidth="600" Height="638" Width="800" Initialized="Window_Initialized" Closing="Window_Closing" PreviewKeyDown="Window_PreviewKeyDown">
|
||||
<DockPanel HorizontalAlignment="Stretch" Width="800" Height="600" VerticalAlignment="Top" Margin="0,0,2,0">
|
||||
<ToolBarTray DockPanel.Dock="Top" Visibility="Collapsed">
|
||||
<ToolBarTray DockPanel.Dock="Top" Visibility="Visible">
|
||||
<ToolBar>
|
||||
<Label>Slot:</Label>
|
||||
<ComboBox Name="cbxSlotBox" Margin="0,5,0,0" VerticalAlignment="Top" SelectionChanged="CbxSlotBox_SelectionChanged" />
|
||||
|
||||
@ -269,8 +269,7 @@ namespace ProductionUiCordonel
|
||||
}
|
||||
var url = $"{ServiceUrls.MarriageServiceUrl()}GetSerialNumberAndOrderNumber?PcbId={pcbID}&withRadioAdress=true";
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
var responseJson = LocalWebRequest.GetRequest(url);
|
||||
@ -306,10 +305,12 @@ namespace ProductionUiCordonel
|
||||
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
private Boolean Detect(Boolean IgnorErrors, Int32 slot)
|
||||
{
|
||||
slot = 1;
|
||||
if (!detectIsLocked)
|
||||
{
|
||||
LastMsg = "Start Detect";
|
||||
@ -410,10 +411,6 @@ namespace ProductionUiCordonel
|
||||
var connectProcess = new ProductionProcessConnect(CurrentGenesisMeter);
|
||||
pc.Processes.Add(connectProcess); //[x] [x] [x]
|
||||
|
||||
if (RadioAddress != 0)
|
||||
{
|
||||
RadioAddress = 1;
|
||||
}
|
||||
|
||||
orderBarcode = new ProductionProcessCheckOrderNumber(0);
|
||||
|
||||
|
||||
@ -40,6 +40,25 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
{
|
||||
//clear
|
||||
}
|
||||
private void setTxt(string msg, bool log, bool msgbox)
|
||||
{
|
||||
if (log)
|
||||
{
|
||||
Meter.WriteLog(msg);
|
||||
}
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
if (msgbox)
|
||||
{
|
||||
|
||||
UserControl.MessageBox(msg);
|
||||
}
|
||||
UserControl.lblText.Content = msg;
|
||||
}
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void doStartProcessLoop()
|
||||
@ -87,23 +106,14 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
|
||||
if (!HyState.HasValue || !HyState.Value)
|
||||
{
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.lblText.Content = "Zähler nicht erfolgreich geprüft";
|
||||
}
|
||||
));
|
||||
setTxt("Zähler nicht erfolgreich geprüft",true,true);
|
||||
|
||||
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
}
|
||||
if (!preState.HasValue || !preState.Value)
|
||||
{
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.lblText.Content = "Zähler nicht erfolgreich vorbehandelt";
|
||||
}
|
||||
));
|
||||
setTxt("Zähler nicht erfolgreich vorbehandelt", true, true);
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
}
|
||||
|
||||
@ -114,14 +124,9 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
// this calculates all life time values
|
||||
if (!GenesisStatusHandler.BuildLifeTimeInformation(Meter, genesisStatus))
|
||||
{
|
||||
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.lblText.Content = "Batterie nicht lesbar";
|
||||
}
|
||||
));
|
||||
Meter.WriteLog("Batterie nicht lesbar");
|
||||
|
||||
setTxt("Batterie nicht lesbar", true, true);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -138,21 +143,31 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
{
|
||||
if (Meter.Region == "NA")
|
||||
{
|
||||
//currentProcessState = ProductionProcessState.Error;
|
||||
|
||||
|
||||
if (
|
||||
Meter.PcbId == "235130036" ||
|
||||
Meter.PcbId == "235130211" ||
|
||||
Meter.PcbId == "235130121" ||
|
||||
Meter.PcbId == "235130122" ||
|
||||
Meter.PcbId == "235130353" ||
|
||||
Meter.PcbId == "235130447" ||
|
||||
Meter.PcbId == "235130112" ||
|
||||
Meter.PcbId == "235130582" ||
|
||||
Meter.PcbId == "235130237")
|
||||
{
|
||||
//currentProcessState = ProductionProcessState.Error;
|
||||
}
|
||||
else
|
||||
{
|
||||
//currentProcessState = ProductionProcessState.Error;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.MessageBox($"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}");
|
||||
UserControl.lblText.Content = $"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}";
|
||||
}
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
setTxt($"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}", true, true);
|
||||
|
||||
|
||||
Meter.WriteLog($"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}");
|
||||
}
|
||||
|
||||
if (genesisStatus.RemainingLifeTimeYears < 20)
|
||||
@ -160,14 +175,8 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
if (genesisStatus.DrainedBatteryLoadPercent > 9)
|
||||
{
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.MessageBox($"EMEA Limit überschritten Limit 8% vs {genesisStatus.DrainedBatteryLoadPercent}");
|
||||
UserControl.lblText.Content = "Batterie über 10% entladen";
|
||||
}
|
||||
));
|
||||
|
||||
setTxt("EMEA Limit überschritten Limit 8% vs {genesisStatus.DrainedBatteryLoadPercent}", true, true);
|
||||
|
||||
|
||||
Meter.WriteLog("Batterie über 10% entladen");
|
||||
}
|
||||
@ -190,33 +199,29 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
|
||||
|
||||
setTxt("Lut not correct", true, true);
|
||||
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.lblText.Content = "Lut not correct";
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
var meterFWApp = Meter.MeterAppListVersion.First(a => a.AppId == 24);
|
||||
|
||||
if (string.IsNullOrEmpty(res[9]) || !Meter.InstalledFwVersion.HasValue || Meter.InstalledFwVersion.Value != uint.Parse(res[9]))
|
||||
{
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
if (!string.IsNullOrEmpty(res[9]) && Meter.InstalledFwVersion.HasValue && uint.Parse(res[9]) == 8194 && Meter.InstalledFwVersion.Value == 8198)
|
||||
{
|
||||
UserControl.MessageBox($"Achtung FW 2.0.06");
|
||||
}
|
||||
else
|
||||
{
|
||||
currentProcessState = ProductionProcessState.Error;
|
||||
|
||||
|
||||
setTxt($"FW not correct Meter has {meterFWApp.Version} and should have {uint.Parse(res[9])}", true, true);
|
||||
}
|
||||
|
||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
||||
new Action(() =>
|
||||
{
|
||||
UserControl.lblText.Content = $"FW not correct Meter has {meterFWApp.Version} and should have {uint.Parse(res[9])}";
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (currentProcessState != ProductionProcessState.Error)
|
||||
{
|
||||
currentProcessState = ProductionProcessState.Done;
|
||||
|
||||
@ -18,7 +18,9 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
Abort
|
||||
}
|
||||
public Boolean DialogIsDone { get; }
|
||||
public String PcbSerialNumber { get; private set; }
|
||||
public String PcbSerialNumber {
|
||||
get;
|
||||
private set; }
|
||||
|
||||
public String AltRadio { get; }
|
||||
|
||||
@ -70,7 +72,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
private void UserControl_KeyDown(Object sender, String input)
|
||||
{
|
||||
var a = input;
|
||||
PcbSerialNumber = Meter.SerialNumber;
|
||||
//PcbSerialNumber = Meter.SerialNumber;
|
||||
UserControl.txtHiddenInput.Text = "";
|
||||
if (a.Trim().Contains(PcbSerialNumber.Trim()))
|
||||
{
|
||||
@ -91,6 +93,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
StepMismatch($"Falsche oder fehlerhafter Scan! {Environment.NewLine} Dieser Zähler müsste die ({PcbSerialNumber}) haben. gescannt wurde {a}");
|
||||
}
|
||||
}
|
||||
@ -104,7 +107,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
|
||||
public override void StartProcess()
|
||||
{
|
||||
PcbSerialNumber = Meter.SerialNumber;
|
||||
//PcbSerialNumber = Meter.SerialNumber;
|
||||
UserControl.SetDesc($"Bitte den Deckel des Zählers Scannern{Environment.NewLine} Die Seriennummer muss abgeglichen werden.");
|
||||
UserControl.SetFocusMe();
|
||||
UserControl.BarcodeInput += UserControl_KeyDown;
|
||||
|
||||
@ -64,18 +64,18 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
{
|
||||
|
||||
|
||||
var url = ServiceUrls.GenesisGetPasswordContainerServiceUrl();
|
||||
//var url = ServiceUrls.GenesisGetPasswordContainerServiceUrl();
|
||||
|
||||
var requestResponse = LocalWebRequest.GetRequestWithError(url + Meter.PcbId, out var errorCode, 30000, isRetry: true);
|
||||
if (errorCode == System.Net.HttpStatusCode.OK.GetHashCode())
|
||||
{
|
||||
var passwordContainer = JsonConvert.DeserializeObject<Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdDb>(requestResponse);
|
||||
if (Meter.Login(System.Text.Encoding.UTF8.GetString(passwordContainer.ListOfPasswords[7])))
|
||||
{
|
||||
Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdHandlerDb.SetPwdFromSkeletonToLvl8inDd(Meter.PcbId, passwordContainer);
|
||||
}
|
||||
//var requestResponse = LocalWebRequest.GetRequestWithError(url + Meter.PcbId, out var errorCode, 30000, isRetry: true);
|
||||
//if (errorCode == System.Net.HttpStatusCode.OK.GetHashCode())
|
||||
//{
|
||||
// var passwordContainer = JsonConvert.DeserializeObject<Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdDb>(requestResponse);
|
||||
// if (Meter.Login(System.Text.Encoding.UTF8.GetString(passwordContainer.ListOfPasswords[7])))
|
||||
// {
|
||||
// Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdHandlerDb.SetPwdFromSkeletonToLvl8inDd(Meter.PcbId, passwordContainer);
|
||||
// }
|
||||
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -197,9 +197,11 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
|
||||
overAllResult.Add(_currentGenesis_WriteRegister("PERIODICLOG_ResetCounter",
|
||||
(new Byte[] { 0x00, 0x00, 0x00, 0x00 }).Reverse().ToArray()));
|
||||
|
||||
overAllResult.Add(_currentGenesis_WriteRegister("GENESISFLOW_SealDisplay",
|
||||
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, true));
|
||||
}
|
||||
overAllResult.Add(_currentGenesis_WriteRegister("GENESISFLOW_SealDisplay",
|
||||
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, true));
|
||||
|
||||
|
||||
|
||||
var ret = true;
|
||||
|
||||
@ -80,6 +80,11 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
if (ret)
|
||||
{
|
||||
ret = WriteAndVerifyPasswordFileToMeter();
|
||||
if (!ret)
|
||||
{
|
||||
Meter.WriteLog("WriteAndVerifyPasswordFileToMeter failed!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
updateImage(_userControl.WriteToMeter, ret);
|
||||
@ -90,6 +95,10 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
{
|
||||
Meter.Logout();
|
||||
ret = Meter.Login(Encoding.UTF8.GetString(_pwdContainer.ListOfPasswords.Last()));
|
||||
if (!ret)
|
||||
{
|
||||
Meter.WriteLog("Login after pw failed!");
|
||||
}
|
||||
}
|
||||
|
||||
//Password in Production DB can be updated (overwrite Skeleton-key in Password column with
|
||||
|
||||
@ -124,7 +124,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
return await Task.Run(() =>
|
||||
{
|
||||
var builder = new StringBuilder();
|
||||
var ret = OrderProgrammingParameters.GetProgrammingParametersFixNa( GlobalConfig.ConnectionString.Value);
|
||||
var ret = OrderProgrammingParameters.GetProgrammingParametersFixNa(GlobalConfig.ConnectionString.Value);
|
||||
foreach (var r in ret.Where(r => r.RegisterName == "SENSUSRADIO_EncryptionKey"))
|
||||
{
|
||||
foreach (var t in r.RegisterValue)
|
||||
@ -473,22 +473,19 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
foreach (var item in dt.Select())
|
||||
{
|
||||
try
|
||||
{
|
||||
var jsonString = item["JSON"].ToString();
|
||||
|
||||
var jsonString = item["JSON"].ToString();
|
||||
|
||||
|
||||
var jResults = JsonConvert.DeserializeObject<JToken>(jsonString);
|
||||
if (DateTimeOffset.TryParse(jResults["JsonObject"]["StartDT"].ToString(), out ret))
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
var jResults = JsonConvert.DeserializeObject<JToken>(jsonString);
|
||||
if (DateTimeOffset.TryParse(jResults["JsonObject"]["StartDT"].ToString(), out ret))
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return DateTimeOffset.MinValue;
|
||||
}));
|
||||
}
|
||||
@ -993,21 +990,21 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
//}
|
||||
|
||||
[Route("SetMeterEOLState"), HttpPost]
|
||||
public async Task<HttpResponseMessage> SetMeterEOLState(int PcbID,int OrderNumber)
|
||||
public async Task<HttpResponseMessage> SetMeterEOLState(int PcbID, int OrderNumber)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine($" UPDATE [dbo].[CordonelEol] ");
|
||||
sb.AppendLine($" SET ");
|
||||
sb.AppendLine($" [CordonelEolPcbId] = {PcbID} ");
|
||||
sb.AppendLine($" ,[CordonelEolOrderNumber] = {OrderNumber} ");
|
||||
sb.AppendLine($" ,[CordonelEolDate] = CURRENT_TIMESTAMP ");
|
||||
sb.AppendLine($" ,[CordonelEolPublishAction] = null ");
|
||||
sb.AppendLine($" ,[CordonelEolSAPFeedback] = null ");
|
||||
sb.AppendLine($" WHERE [CordonelEolPcbId] = {PcbID} ");
|
||||
sb.AppendLine($" [CordonelEolPcbId] = {PcbID} ");
|
||||
sb.AppendLine($" ,[CordonelEolOrderNumber] = {OrderNumber} ");
|
||||
sb.AppendLine($" ,[CordonelEolDate] = CURRENT_TIMESTAMP ");
|
||||
sb.AppendLine($" ,[CordonelEolPublishAction] = null ");
|
||||
sb.AppendLine($" ,[CordonelEolSAPFeedback] = null ");
|
||||
sb.AppendLine($" WHERE [CordonelEolPcbId] = {PcbID} ");
|
||||
sb.AppendLine($" and [CordonelEolOrderNumber] = {OrderNumber} ");
|
||||
sb.AppendLine($"IF @@ROWCOUNT = 0 ");
|
||||
sb.AppendLine($" BEGIN ");
|
||||
@ -1024,7 +1021,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
sb.AppendLine($" ,null ");
|
||||
sb.AppendLine($" ,null) ");
|
||||
sb.AppendLine($" END ");
|
||||
|
||||
|
||||
|
||||
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
|
||||
{
|
||||
|
||||
@ -353,7 +353,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
//var Url = $"{ServiceUrls.KeyServerCustom()}devices
|
||||
var Url = $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?orderNumber={orderNumber}&radioAdress={radioAdress}";
|
||||
//Url = $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?setId={orderNumber}&radioAdress={radioAdress}";//
|
||||
//Url = $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?setId={da948379-2aa1-4a47-911f-8031a20ecebf}&radioAdress={radioAdress}";//
|
||||
|
||||
var header = new Dictionary<String, String>();
|
||||
header.Add("Cache-Control", "no-cache");
|
||||
@ -660,100 +660,100 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
|
||||
var lst = new List<Tuple<int, long, int>>();
|
||||
lst.Add(new Tuple<int, long, int>(22735455, 10402001195, 3187517));
|
||||
lst.Add(new Tuple<int, long, int>(22735458, 10402001198, 3187517));
|
||||
lst.Add(new Tuple<int, long, int>(22735459, 10402001199, 3187517));
|
||||
lst.Add(new Tuple<int, long, int>(22750101, 10402001361, 3190243));
|
||||
lst.Add(new Tuple<int, long, int>(22750102, 10402001362, 3190243));
|
||||
lst.Add(new Tuple<int, long, int>(22750103, 10402001363, 3190243));
|
||||
lst.Add(new Tuple<int, long, int>(22773935, 10402003482, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773936, 10402003483, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773937, 10402003484, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773939, 10402003486, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773940, 10402003487, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773941, 10402003488, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773942, 10402003489, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(22773943, 10402003490, 3194465));
|
||||
lst.Add(new Tuple<int, long, int>(23719324, 10402004169, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719325, 10402004170, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719326, 10402004171, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719327, 10402004172, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719328, 10402004173, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719329, 10402004174, 3205719));
|
||||
lst.Add(new Tuple<int, long, int>(23719353, 10402004198, 3205720));
|
||||
lst.Add(new Tuple<int, long, int>(23719355, 10402004200, 3205720));
|
||||
lst.Add(new Tuple<int, long, int>(23719361, 10402004206, 3205720));
|
||||
lst.Add(new Tuple<int, long, int>(23719365, 10402004210, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719366, 10402004211, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719367, 10402004212, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719368, 10402004213, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719369, 10402004214, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719370, 10402004215, 3205721));
|
||||
lst.Add(new Tuple<int, long, int>(23719374, 10402004219, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719375, 10402004220, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719376, 10402004221, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719377, 10402004222, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719378, 10402004223, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719379, 10402004224, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719380, 10402004225, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719381, 10402004226, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719382, 10402004227, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719383, 10402004228, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719384, 10402004229, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719385, 10402004230, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719387, 10402004232, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719388, 10402004233, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719389, 10402004234, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719390, 10402004235, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719391, 10402004236, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719392, 10402004237, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719393, 10402004238, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719394, 10402004239, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719395, 10402004240, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719396, 10402004241, 3205722));
|
||||
lst.Add(new Tuple<int, long, int>(23719465, 10402004264, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719466, 10402004265, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719467, 10402004266, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719468, 10402004267, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719469, 10402004268, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719470, 10402004269, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719471, 10402004270, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719472, 10402004271, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719473, 10402004272, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719479, 10402004278, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719480, 10402004279, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719481, 10402004280, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23719482, 10402004281, 3205759));
|
||||
lst.Add(new Tuple<int, long, int>(23720650, 10402004369, 3206400));
|
||||
lst.Add(new Tuple<int, long, int>(23720651, 10402004370, 3206401));
|
||||
lst.Add(new Tuple<int, long, int>(23720744, 10402004377, 3206443));
|
||||
lst.Add(new Tuple<int, long, int>(23749514, 10402004737, 3210028));
|
||||
lst.Add(new Tuple<int, long, int>(23749516, 10402004739, 3210028));
|
||||
lst.Add(new Tuple<int, long, int>(23749517, 10402004740, 3210029));
|
||||
lst.Add(new Tuple<int, long, int>(23749518, 10402004741, 3210029));
|
||||
lst.Add(new Tuple<int, long, int>(23749519, 10402004742, 3210029));
|
||||
lst.Add(new Tuple<int, long, int>(23749520, 10402004743, 3210029));
|
||||
lst.Add(new Tuple<int, long, int>(23749521, 10402004744, 3210029));
|
||||
lst.Add(new Tuple<int, long, int>(23749523, 10402004745, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749524, 10402004746, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749525, 10402004747, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749526, 10402004748, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749527, 10402004749, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749528, 10402004750, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749529, 10402004751, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749530, 10402004752, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749531, 10402004753, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23749532, 10402004754, 3210033));
|
||||
lst.Add(new Tuple<int, long, int>(23766896, 10402005092, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766897, 10402005093, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766898, 10402005094, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766899, 10402005095, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766900, 10402005096, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766901, 10402005097, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766902, 10402005098, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766903, 10402005099, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766904, 10402005100, 3213958));
|
||||
lst.Add(new Tuple<int, long, int>(23766905, 10402005101, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(22735455, 10402001195, 3187517));
|
||||
//lst.Add(new Tuple<int, long, int>(22735458, 10402001198, 3187517));
|
||||
//lst.Add(new Tuple<int, long, int>(22735459, 10402001199, 3187517));
|
||||
//lst.Add(new Tuple<int, long, int>(22750101, 10402001361, 3190243));
|
||||
//lst.Add(new Tuple<int, long, int>(22750102, 10402001362, 3190243));
|
||||
//lst.Add(new Tuple<int, long, int>(22750103, 10402001363, 3190243));
|
||||
//lst.Add(new Tuple<int, long, int>(22773935, 10402003482, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773936, 10402003483, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773937, 10402003484, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773939, 10402003486, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773940, 10402003487, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773941, 10402003488, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773942, 10402003489, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(22773943, 10402003490, 3194465));
|
||||
//lst.Add(new Tuple<int, long, int>(23719324, 10402004169, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719325, 10402004170, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719326, 10402004171, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719327, 10402004172, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719328, 10402004173, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719329, 10402004174, 3205719));
|
||||
//lst.Add(new Tuple<int, long, int>(23719353, 10402004198, 3205720));
|
||||
//lst.Add(new Tuple<int, long, int>(23719355, 10402004200, 3205720));
|
||||
//lst.Add(new Tuple<int, long, int>(23719361, 10402004206, 3205720));
|
||||
//lst.Add(new Tuple<int, long, int>(23719365, 10402004210, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719366, 10402004211, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719367, 10402004212, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719368, 10402004213, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719369, 10402004214, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719370, 10402004215, 3205721));
|
||||
//lst.Add(new Tuple<int, long, int>(23719374, 10402004219, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719375, 10402004220, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719376, 10402004221, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719377, 10402004222, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719378, 10402004223, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719379, 10402004224, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719380, 10402004225, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719381, 10402004226, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719382, 10402004227, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719383, 10402004228, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719384, 10402004229, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719385, 10402004230, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719387, 10402004232, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719388, 10402004233, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719389, 10402004234, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719390, 10402004235, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719391, 10402004236, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719392, 10402004237, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719393, 10402004238, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719394, 10402004239, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719395, 10402004240, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719396, 10402004241, 3205722));
|
||||
//lst.Add(new Tuple<int, long, int>(23719465, 10402004264, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719466, 10402004265, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719467, 10402004266, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719468, 10402004267, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719469, 10402004268, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719470, 10402004269, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719471, 10402004270, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719472, 10402004271, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719473, 10402004272, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719479, 10402004278, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719480, 10402004279, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719481, 10402004280, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23719482, 10402004281, 3205759));
|
||||
//lst.Add(new Tuple<int, long, int>(23720650, 10402004369, 3206400));
|
||||
//lst.Add(new Tuple<int, long, int>(23720651, 10402004370, 3206401));
|
||||
//lst.Add(new Tuple<int, long, int>(23720744, 10402004377, 3206443));
|
||||
//lst.Add(new Tuple<int, long, int>(23749514, 10402004737, 3210028));
|
||||
//lst.Add(new Tuple<int, long, int>(23749516, 10402004739, 3210028));
|
||||
//lst.Add(new Tuple<int, long, int>(23749517, 10402004740, 3210029));
|
||||
//lst.Add(new Tuple<int, long, int>(23749518, 10402004741, 3210029));
|
||||
//lst.Add(new Tuple<int, long, int>(23749519, 10402004742, 3210029));
|
||||
//lst.Add(new Tuple<int, long, int>(23749520, 10402004743, 3210029));
|
||||
//lst.Add(new Tuple<int, long, int>(23749521, 10402004744, 3210029));
|
||||
//lst.Add(new Tuple<int, long, int>(23749523, 10402004745, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749524, 10402004746, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749525, 10402004747, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749526, 10402004748, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749527, 10402004749, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749528, 10402004750, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749529, 10402004751, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749530, 10402004752, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749531, 10402004753, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23749532, 10402004754, 3210033));
|
||||
//lst.Add(new Tuple<int, long, int>(23766896, 10402005092, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766897, 10402005093, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766898, 10402005094, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766899, 10402005095, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766900, 10402005096, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766901, 10402005097, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766902, 10402005098, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766903, 10402005099, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766904, 10402005100, 3213958));
|
||||
//lst.Add(new Tuple<int, long, int>(23766905, 10402005101, 3213958));
|
||||
|
||||
var lstResult = new List<String>();
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
1babc7d629fd8c486aff20f4990c117c2e58a68f
|
||||
65d75c3322f8a137c69963cfdc0cb6f1ffacf62a
|
||||
|
||||
@ -224,4 +224,4 @@ namespace XylemCommonUiLegacyGenCtl
|
||||
|
||||
bool IsReadyForMesuremnt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -556,7 +556,7 @@ namespace XylemCommonUiLegacyGenCtl
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(meter.PcbId) && meter.PcbId.Length < 6 && meter.Login())
|
||||
if (!string.IsNullOrEmpty(PcbId) && PcbId.Length > 6 && meter.Login())
|
||||
{
|
||||
changeCurrentSlotState(TaskState.LoginDone);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user