Fix parmeter bug when lenght sammler then 3
This commit is contained in:
parent
2c927aa46e
commit
aa906b1bdb
@ -155,7 +155,7 @@
|
|||||||
</site>
|
</site>
|
||||||
<site name="MeterProcessState" id="2">
|
<site name="MeterProcessState" id="2">
|
||||||
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
<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>
|
</application>
|
||||||
<bindings>
|
<bindings>
|
||||||
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
||||||
|
|||||||
@ -225,6 +225,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.UI.SIRTBroadcaster",
|
|||||||
EndProject
|
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}"
|
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
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCore.UnitTest", "GenesisCore.UnitTest\GenesisCore.UnitTest.csproj", "{88995CF2-4E8B-4347-AB79-7D2796E59E7C}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||||
Utils\DateTimeServerShared\DateTimeServerShared.projitems*{4806d89a-fbfb-41bc-aaa7-2242444bf55a}*SharedItemsImports = 4
|
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|x64.Build.0 = Release|Any CPU
|
||||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C}.XP32bit|x86.ActiveCfg = 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
|
{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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -5545,6 +5611,7 @@ Global
|
|||||||
{B23BFAF9-08AE-4311-8C08-FB2BB49EA2AD} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
|
{B23BFAF9-08AE-4311-8C08-FB2BB49EA2AD} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
|
||||||
{8D3B1C46-B23E-46CC-9B59-24E34DE60510} = {03D4F23E-7E4A-4091-BC96-036C996D351A}
|
{8D3B1C46-B23E-46CC-9B59-24E34DE60510} = {03D4F23E-7E4A-4091-BC96-036C996D351A}
|
||||||
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C} = {EC10DAFE-88CF-42D5-99E7-D247938B6430}
|
{DE225BDD-7DCD-4F4F-9E3F-348589DFE93C} = {EC10DAFE-88CF-42D5-99E7-D247938B6430}
|
||||||
|
{88995CF2-4E8B-4347-AB79-7D2796E59E7C} = {B5F43F61-4448-4992-85B5-7EDFB82FD643}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}
|
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}
|
||||||
|
|||||||
@ -10,25 +10,97 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="10*" />
|
<ColumnDefinition Width="10*" />
|
||||||
<ColumnDefinition Width="40*"/>
|
<ColumnDefinition Width="80*"/>
|
||||||
<ColumnDefinition Width="40*"/>
|
<ColumnDefinition Width="40*"/>
|
||||||
<ColumnDefinition Width="10*" />
|
<ColumnDefinition Width="10*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="21*"/>
|
<RowDefinition Height="21*"/>
|
||||||
<RowDefinition Height="200*"/>
|
<RowDefinition Height="200*"/>
|
||||||
<RowDefinition Height="200*"/>
|
<RowDefinition Height="100*"/>
|
||||||
<RowDefinition Height="21*"/>
|
<RowDefinition Height="21*"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Label x:Name="FileName" >
|
<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>
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding Path=testBenchresults.Serialnr }"/>
|
||||||
<ScottPlot:WpfPlot x:Name="WpfPlot1" Grid.Row="1" Grid.Column="1" />
|
<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" />
|
<TextBlock Grid.Row="12" Grid.Column="2" ></TextBlock>
|
||||||
<ScottPlot:WpfPlot x:Name="WpfPlot3" Grid.Row="2" Grid.Column="1" />
|
<DataGrid
|
||||||
<ScottPlot:WpfPlot x:Name="WpfPlot4" Grid.Row="2" Grid.Column="2" />
|
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>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@ -2,11 +2,12 @@
|
|||||||
using ScottPlot.WPF;
|
using ScottPlot.WPF;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
using Xylem.Common.CommonCore.Consts;
|
using Xylem.Common.CommonCore.Consts;
|
||||||
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
|
||||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol;
|
using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol;
|
||||||
using Xylem.Common.Logic.ProductionOrderCore.TestResults;
|
using Xylem.Common.Logic.ProductionOrderCore.TestResults;
|
||||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||||
@ -18,8 +19,29 @@ namespace CordoPlot
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interaction logic for MainWindow.xaml
|
/// Interaction logic for MainWindow.xaml
|
||||||
/// </summary>
|
/// </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()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -45,16 +67,19 @@ namespace CordoPlot
|
|||||||
//lade testresult from webservise
|
//lade testresult from webservise
|
||||||
// Open document
|
// Open document
|
||||||
string filename = dialog.FileName;
|
string filename = dialog.FileName;
|
||||||
PlotableTestResults testBenchresults = new PlotableTestResults();
|
testBenchresults = new PlotableTestResults();
|
||||||
var AllLines = File.ReadAllLines(filename);
|
var AllLines = File.ReadAllLines(filename);
|
||||||
|
|
||||||
//LedRawData__Slot_7_SN24712962_PG2016079130.log
|
//LedRawData__Slot_7_SN24712962_PG2016079130.log
|
||||||
if (filename.Contains("_SN") && filename.Contains("_PG"))
|
if (filename.Contains("_SN") && filename.Contains("_PG"))
|
||||||
{
|
{
|
||||||
var sn = filename.Substring(filename.LastIndexOf("_SN") +3, filename.LastIndexOf("_PG") - filename.LastIndexOf("_SN") - 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);
|
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 = JsonConvert.DeserializeObject<PlotableTestResults>(LocalWebRequest.GetRequest($"http://10.49.40.25/MeterProcessState/api/TestBench/GetTestResults?SerialNr={sn}&TestRunNr={pg}"));
|
||||||
testBenchresults.HasResults = true;
|
testBenchresults.HasResults = true;
|
||||||
|
|
||||||
|
dataGrid.ItemsSource = testBenchresults.TestPointsMain;
|
||||||
|
dataGrid.Items.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
var listOfData = new List<List<IMeasurementRecord>>();
|
var listOfData = new List<List<IMeasurementRecord>>();
|
||||||
@ -65,8 +90,10 @@ namespace CordoPlot
|
|||||||
var decoder = new StreamingDecoder();
|
var decoder = new StreamingDecoder();
|
||||||
var currentSyncmark = SyncMarkRecord.DecodeEveryPackage;
|
var currentSyncmark = SyncMarkRecord.DecodeEveryPackage;
|
||||||
//DecodeMsg
|
//DecodeMsg
|
||||||
|
var linecounter = 0;
|
||||||
foreach (var line in AllLines)
|
foreach (var line in AllLines)
|
||||||
{
|
{
|
||||||
|
linecounter = linecounter + 1;
|
||||||
decoder = new StreamingDecoder();
|
decoder = new StreamingDecoder();
|
||||||
|
|
||||||
if (line.Contains("|"))
|
if (line.Contains("|"))
|
||||||
@ -89,15 +116,17 @@ namespace CordoPlot
|
|||||||
{
|
{
|
||||||
decoder.DataCalib.ReceivedTime = recived;
|
decoder.DataCalib.ReceivedTime = recived;
|
||||||
decoder.DataCalib.SyncMarkRecord = currentSyncmark;
|
decoder.DataCalib.SyncMarkRecord = currentSyncmark;
|
||||||
recordToAdd = decoder.DataCalib;
|
var n = new PlotCalibrationRecord(decoder.DataCalib, linecounter);
|
||||||
listOfData[recordToAdd.GetChannel()].Add(recordToAdd);
|
|
||||||
|
listOfData[n.GetChannel()].Add(n);
|
||||||
}
|
}
|
||||||
else if (decoder.DataFlowTest != null && decoder.DataFlowTest.IsValid)
|
else if (decoder.DataFlowTest != null && decoder.DataFlowTest.IsValid)
|
||||||
{
|
{
|
||||||
decoder.DataFlowTest.ReceivedTime = recived;
|
decoder.DataFlowTest.ReceivedTime = recived;
|
||||||
decoder.DataFlowTest.SyncMarkRecord = currentSyncmark;
|
decoder.DataFlowTest.SyncMarkRecord = currentSyncmark;
|
||||||
recordToAdd = decoder.DataFlowTest;
|
var n = new PlotFlowTestRecord(decoder.DataFlowTest, linecounter);
|
||||||
listOfData[0].Add(recordToAdd);
|
listOfData[n.GetChannel()].Add(n);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -151,6 +180,12 @@ namespace CordoPlot
|
|||||||
Lines.Add(new List<double>());
|
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>>();
|
//List<List<ushort>> Errors = new List<List<ushort>>();
|
||||||
//Errors.Add(new List<ushort>());
|
//Errors.Add(new 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
|
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 class PlotResult
|
||||||
{
|
{
|
||||||
public List<double> VolumeLine = new List<double>();
|
public List<double> VolumeLine = new List<double>();
|
||||||
public List<double> ScaleLine = new List<double>();
|
public List<double> ScaleLine = new List<double>();
|
||||||
public List<double> GP30Erros = new List<double>();
|
public List<double> GP30Erros = new List<double>();
|
||||||
public List<double> TestMarks = 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; }
|
public Color Color { get; internal set; }
|
||||||
|
|
||||||
@ -56,12 +125,14 @@ namespace CordoPlot
|
|||||||
var CurrentTestPoint = 0;
|
var CurrentTestPoint = 0;
|
||||||
var CurrentChnl = -1;
|
var CurrentChnl = -1;
|
||||||
var testPointLocked = false;
|
var testPointLocked = false;
|
||||||
|
//14787
|
||||||
foreach (var allChnlItems in this.ListOfRecords)
|
foreach (var allChnlItems in this.ListOfRecords)
|
||||||
{
|
{
|
||||||
var intiVol = 0.0;
|
var intiVol = 0.0;
|
||||||
CurrentChnl = CurrentChnl + 1;//29586
|
CurrentChnl = CurrentChnl + 1;//29586
|
||||||
|
|
||||||
CurrentTestPoint = 0;
|
CurrentTestPoint = 0;
|
||||||
|
testPointLocked = false;
|
||||||
foreach (var item in allChnlItems)
|
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));
|
var results = testPointResults.Where(t => t.Chnl == Chnl && (!TestNr.HasValue || t.TestNr == TestNr.Value));
|
||||||
|
|
||||||
List<double> VolumeLine = new List<double>();
|
List<double> VolumeLine = new List<double>();
|
||||||
|
|
||||||
|
double LastVolOrig = 0;
|
||||||
List<double> ScaleLine = new List<double>();
|
List<double> ScaleLine = new List<double>();
|
||||||
List<double> GP30Erros = new List<double>();
|
List<double> GP30Erros = new List<double>();
|
||||||
List<double> TestMarks = 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 linecounter = 0;
|
||||||
var counter = 0;
|
var counter = 0;
|
||||||
var intiVol = 0.0;
|
var intiVol = 0.0;
|
||||||
@ -115,35 +193,47 @@ namespace CordoPlot
|
|||||||
{
|
{
|
||||||
TestMarks.Add(line.GetTimeS());
|
TestMarks.Add(line.GetTimeS());
|
||||||
currentTestNr = lines.TestNr;
|
currentTestNr = lines.TestNr;
|
||||||
|
intiVol = 0.0;
|
||||||
|
LastVolOrig = line.GetVolumeCm();
|
||||||
}
|
}
|
||||||
|
|
||||||
ScaleLine.Add(line.GetTimeS() + (100000 * currentTestNr));
|
ScaleLine.Add(line.GetTimeS());
|
||||||
if (line is CalibrationRecord cal)
|
if (line is PlotCalibrationRecord cal)
|
||||||
{
|
{
|
||||||
GP30Erros.Add(cal.Validation);
|
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())
|
if (!VolumeLine.Any())
|
||||||
{
|
{
|
||||||
VolumeLine.Add(0);
|
VolumeLine.Add(0);
|
||||||
intiVol = line.GetVolumeCm();
|
|
||||||
|
LastVolOrig = line.GetVolumeCm();
|
||||||
|
intiVol = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var addVol = line.GetVolumeCm() - intiVol;
|
|
||||||
|
var addVol = line.GetVolumeCm() - LastVolOrig;
|
||||||
var dutOverflowVolumeCm = line.GetOverflowVolumeCm();
|
var dutOverflowVolumeCm = line.GetOverflowVolumeCm();
|
||||||
//an overflow is detected when absolute volume difference is higher than 1/2 of the OverflowVolumeCm
|
//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
|
//if the overflow has been detected the end volume is higher than the start volume
|
||||||
//indicates the negative flow direction
|
//indicates the negative flow direction
|
||||||
if (addVol > VolumeLine.Last())
|
if (addVol < 0)
|
||||||
{
|
{
|
||||||
//negative overflow
|
//negative overflow
|
||||||
intiVol -= dutOverflowVolumeCm;
|
intiVol += dutOverflowVolumeCm;
|
||||||
//LoggerMeasurement.Info($"Slot:{Slot}, Channel: {IntermediateRecord.GetChannel()} - has negative overflow. currentVolumeQm ({currentVolumeQm}) - lastVolumeQm ({lastVolumeQm}). current accuOverflowVolume is {_accuDutOverflowVolumeCm}");
|
//LoggerMeasurement.Info($"Slot:{Slot}, Channel: {IntermediateRecord.GetChannel()} - has negative overflow. currentVolumeQm ({currentVolumeQm}) - lastVolumeQm ({lastVolumeQm}). current accuOverflowVolume is {_accuDutOverflowVolumeCm}");
|
||||||
}
|
}
|
||||||
else
|
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}");
|
//LoggerMeasurement.Info($"Slot:{Slot}, Channel: {IntermediateRecord.GetChannel()} - has positive overflow. currentVolumeQm ({currentVolumeQm}) - lastVolumeQm ({lastVolumeQm}). current accuOverflowVolume is {_accuDutOverflowVolumeCm}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addVol = line.GetVolumeCm() - intiVol;
|
intiVol += addVol;
|
||||||
|
LastVolOrig = line.GetVolumeCm();
|
||||||
VolumeLine.Add(addVol);
|
|
||||||
|
|
||||||
|
|
||||||
|
VolumeLine.Add(intiVol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -169,7 +258,7 @@ namespace CordoPlot
|
|||||||
linecounter = 1 + linecounter;
|
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>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{D0C8D887-ED52-40AB-A069-90BCE0E801E2}</ProjectGuid>
|
<ProjectGuid>{D0C8D887-ED52-40AB-A069-90BCE0E801E2}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Xylem.Common.Ui.CordonelPreadjustmentUi</RootNamespace>
|
<RootNamespace>Xylem.Common.Ui.CordonelPreadjustmentUi</RootNamespace>
|
||||||
<AssemblyName>Xylem.Common.Ui.CordonelPreadjustmentUi</AssemblyName>
|
<AssemblyName>Xylem.Common.Ui.CordonelPreadjustmentUi</AssemblyName>
|
||||||
@ -114,6 +114,8 @@
|
|||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
|
<PropertyGroup />
|
||||||
|
<PropertyGroup />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<NoWin32Manifest>true</NoWin32Manifest>
|
<NoWin32Manifest>true</NoWin32Manifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
@ -17,6 +17,8 @@ namespace Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters
|
|||||||
|
|
||||||
case MeterSize.DN50:
|
case MeterSize.DN50:
|
||||||
case MeterSize.DN40:
|
case MeterSize.DN40:
|
||||||
|
case MeterSize.US1_5:
|
||||||
|
case MeterSize.US2:
|
||||||
FlowrateQmH = 40;
|
FlowrateQmH = 40;
|
||||||
DurationS = 120;
|
DurationS = 120;
|
||||||
break;
|
break;
|
||||||
@ -25,20 +27,23 @@ namespace Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters
|
|||||||
DurationS = 120;
|
DurationS = 120;
|
||||||
break;
|
break;
|
||||||
case MeterSize.DN80:
|
case MeterSize.DN80:
|
||||||
|
case MeterSize.US3:
|
||||||
FlowrateQmH = 100;
|
FlowrateQmH = 100;
|
||||||
DurationS = 120;
|
DurationS = 120;
|
||||||
break;
|
break;
|
||||||
case MeterSize.DN100:
|
case MeterSize.DN100:
|
||||||
|
case MeterSize.US4:
|
||||||
FlowrateQmH = 140;
|
FlowrateQmH = 140;
|
||||||
DurationS = 120;
|
DurationS = 120;
|
||||||
break;
|
break;
|
||||||
case MeterSize.DN125:
|
case MeterSize.DN125:
|
||||||
FlowrateQmH = 140;
|
case MeterSize.US6:
|
||||||
DurationS = 120;
|
FlowrateQmH = 400;
|
||||||
|
DurationS = 60;
|
||||||
break;
|
break;
|
||||||
case MeterSize.DN150:
|
case MeterSize.DN150:
|
||||||
FlowrateQmH = 200;
|
FlowrateQmH = 400;
|
||||||
DurationS = 120;
|
DurationS = 60;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Message = $"Warning no parameter for meter size {meterSize.GetHashCode()} use default!{Environment.NewLine}";
|
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)
|
private Boolean CheckDistance(ProcessProgress pp, Double left, Double right, out String debugMessage, int Slot)
|
||||||
{
|
{
|
||||||
Boolean Ok = true;
|
Boolean Ok = true;
|
||||||
debugMessage = $"Distance check successful at {Slot}";
|
debugMessage = $"Distance check successful at {Slot} Left {left} right {right}";
|
||||||
|
|
||||||
if (left < pp.Setting.AmpTestFirstHitLevelPropMin)
|
//if (left < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||||
{
|
//{
|
||||||
Ok = false;
|
// Ok = false;
|
||||||
debugMessage = $"Distance check failed at {Slot}";
|
// debugMessage = $"Distance check failed at {Slot}";
|
||||||
return Ok;
|
// return Ok;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (right < pp.Setting.AmpTestFirstHitLevelPropMin)
|
//if (right < pp.Setting.AmpTestFirstHitLevelPropMin)
|
||||||
{
|
//{
|
||||||
Ok = false;
|
// Ok = false;
|
||||||
debugMessage = $"Distance check failed at {Slot}";
|
// debugMessage = $"Distance check failed at {Slot}";
|
||||||
return Ok;
|
// return Ok;
|
||||||
}
|
//}
|
||||||
|
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,10 +86,24 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
|||||||
{
|
{
|
||||||
meterctl.SetTemperature((decimal)0);
|
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)
|
foreach (var meterctl in TempMeterStateCtls)
|
||||||
{
|
{
|
||||||
meterctl.SetTemperature((decimal)0);
|
|
||||||
meterctl.OnTempretureChangedHandler += delegate (Object sender, EventArgsDecimal d)
|
meterctl.OnTempretureChangedHandler += delegate (Object sender, EventArgsDecimal d)
|
||||||
{
|
{
|
||||||
decimal avgTemp = 0;
|
decimal avgTemp = 0;
|
||||||
@ -118,12 +132,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
|
|||||||
listOfProcessTask.Add(new Task<bool>(() =>
|
listOfProcessTask.Add(new Task<bool>(() =>
|
||||||
{
|
{
|
||||||
|
|
||||||
pp.RequestTempretureSelection();
|
|
||||||
while (!pp.TempretureSelected)
|
|
||||||
{
|
|
||||||
|
|
||||||
Thread.Sleep(100);
|
|
||||||
}
|
|
||||||
if (pp.Setting.GetTempUsePtOverSps() && pp.PushedTestBenchTemp.HasValue)
|
if (pp.Setting.GetTempUsePtOverSps() && pp.PushedTestBenchTemp.HasValue)
|
||||||
{
|
{
|
||||||
foreach (var updateMeter in MetersToProcess)
|
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 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())
|
if (errorCode == HttpStatusCode.OK.GetHashCode())
|
||||||
{
|
{
|
||||||
passwordContainer = JsonConvert.DeserializeObject<MeterPwdDb>(requestResponse);
|
passwordContainer = JsonConvert.DeserializeObject<MeterPwdDb>(requestResponse);
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
8fbe991b217e7692af4817ad205b768685aa5a72
|
c43c40a030005a8f189e6179faf40a6d42bfef5c
|
||||||
|
|||||||
@ -167,13 +167,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
|||||||
return MeterSize.US3;
|
return MeterSize.US3;
|
||||||
case 4:
|
case 4:
|
||||||
return MeterSize.US4;
|
return MeterSize.US4;
|
||||||
case 5:
|
|
||||||
return MeterSize.US6;
|
|
||||||
case 6:
|
case 6:
|
||||||
return MeterSize.US8;
|
return MeterSize.US6;
|
||||||
case 7:
|
|
||||||
return MeterSize.US10;
|
|
||||||
case 8:
|
case 8:
|
||||||
|
return MeterSize.US8;
|
||||||
|
case 10:
|
||||||
|
return MeterSize.US10;
|
||||||
|
case 12:
|
||||||
return MeterSize.US12;
|
return MeterSize.US12;
|
||||||
|
|
||||||
case 38:
|
case 38:
|
||||||
|
|||||||
@ -24,7 +24,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
|||||||
|
|
||||||
using (var dataAccess = new SqlDataAccess(connectionString))
|
using (var dataAccess = new SqlDataAccess(connectionString))
|
||||||
{
|
{
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
sb.AppendLine($" SELECT distinct[MapPcbIdToSerialNumber_SerialNumber], mapOrder.CordonelPressureTest_FertigungsAuftragsNr ");
|
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()));
|
ret.Add(new ProgrammingParameters("SENSUSRADIO_EncryptionKey", radioParams.EncryptionKey.ToArray()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (radioParams.PowerLevel > 0 && radioParams.PowerLevelOption > 0 && radioParams.ImpedanceCodeNew > 0 && radioParams.ImpedanceCodeOption > 0)
|
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_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_ImpedanceCodeNew", BitConverter.GetBytes(radioParams.ImpedanceCodeNew).Reverse().ToArray()));
|
||||||
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeOption", BitConverter.GetBytes(radioParams.ImpedanceCodeOption).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)
|
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";
|
var ident = "GNS";
|
||||||
@ -141,19 +141,18 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
|||||||
ident += vakoData.KeyValues.First(k => k.Key == "Nennweite").Charcode;
|
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 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);
|
var retListRealCsd = JsonConvert.DeserializeObject<List<CsdParameterResult>>(retStr);
|
||||||
if (retListRealCsd != null && retListRealCsd.Any())
|
if (retListRealCsd != null && retListRealCsd.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var csdItemToConvert in retListRealCsd)
|
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>();
|
var ret = new List<ProgrammingParameters>();
|
||||||
|
|
||||||
Int32 orderNr = 3215223;
|
Int32 orderNr = 3215223;
|
||||||
|
|
||||||
var rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr);
|
var rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr);
|
||||||
var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type);
|
var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type);
|
||||||
var vakoData = VakoParser.Parse(rawVako, rawMapping);
|
var vakoData = VakoParser.Parse(rawVako, rawMapping);
|
||||||
|
|||||||
@ -34,13 +34,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The register name
|
/// The register name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public String RegisterName { get; }
|
public String RegisterName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The register value converted to raw bytes by register converter
|
/// The register value converted to raw bytes by register converter
|
||||||
/// </summary>
|
/// </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;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Xylem.Common.Logic.ProductionOrderCore.TestResults
|
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<TestPointDetail> Details;
|
||||||
public List<TestPoint> TestPointsMain;
|
public List<TestPoint> TestPointsMain;
|
||||||
public List<ChnlTestPoint> TestPointsChannels;
|
public List<ChnlTestPoint> TestPointsChannels;
|
||||||
public String MeterType;
|
public String MeterType;
|
||||||
|
|
||||||
public Int32 Serialnr { get; set; }
|
public Int32 Serialnr { get { return _Serialnr; } set { if (value != _Serialnr) { _Serialnr = value; OnPropertyChanged("Serialnr"); } } }
|
||||||
public Int32 TestRunNr { get; set; }
|
public Int32 TestRunNr { get { return _TestRunNr; } set { if (value != _TestRunNr) { _TestRunNr = value; OnPropertyChanged("TestRunNr"); } } }
|
||||||
public Int32 TestBenchNr { get; set; }
|
public Int32 TestBenchNr { get { return _TestBenchNr; } set { if (value != _TestBenchNr) { _TestBenchNr = value; OnPropertyChanged("TestBenchNr"); } } }
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get { return _Date; } set { if (value != _Date) { _Date = value; OnPropertyChanged("Date"); } } }
|
||||||
public Int32 MeterSize { get; set; }
|
public Int32 MeterSize { get { return _MeterSize; } set { if (value != _MeterSize) { _MeterSize = value; OnPropertyChanged("MeterSize"); } } }
|
||||||
public Double AirTempC { get; set; }
|
public Double AirTempC { get { return _AirTempC; } set { if (value != _AirTempC) { _AirTempC = value; OnPropertyChanged("AirTempC"); } } }
|
||||||
public Double AirPressure { get; set; }
|
public Double AirPressure { get { return _AirPressure; } set { if (value != _AirPressure) { _AirPressure = value; OnPropertyChanged("AirPressure"); } } }
|
||||||
public Double AirHumanity { get; set; }
|
public Double AirHumanity { get { return _AirHumanity; } set { if (value != _AirHumanity) { _AirHumanity = value; OnPropertyChanged("AirHumanity"); } } }
|
||||||
public Double WaterTempC { get; set; }
|
public Double WaterTempC { get { return _WaterTempC; } set { if (value != _WaterTempC) { _WaterTempC = value; OnPropertyChanged("WaterTempC"); } } }
|
||||||
public Int32 TotalMeters { get; set; }
|
public Int32 TotalMeters { get { return _TotalMeters; } set { if (value != _TotalMeters) { _TotalMeters = value; OnPropertyChanged("TotalMeters"); } } }
|
||||||
public String Remark { get; set; }
|
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
|
public class TestPoint
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="FinalTest" MinHeight="500" MinWidth="600" Height="638" Width="800" Initialized="Window_Initialized" Closing="Window_Closing" PreviewKeyDown="Window_PreviewKeyDown">
|
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">
|
<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>
|
<ToolBar>
|
||||||
<Label>Slot:</Label>
|
<Label>Slot:</Label>
|
||||||
<ComboBox Name="cbxSlotBox" Margin="0,5,0,0" VerticalAlignment="Top" SelectionChanged="CbxSlotBox_SelectionChanged" />
|
<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";
|
var url = $"{ServiceUrls.MarriageServiceUrl()}GetSerialNumberAndOrderNumber?PcbId={pcbID}&withRadioAdress=true";
|
||||||
|
|
||||||
Task.Run(() =>
|
|
||||||
{
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var responseJson = LocalWebRequest.GetRequest(url);
|
var responseJson = LocalWebRequest.GetRequest(url);
|
||||||
@ -306,10 +305,12 @@ namespace ProductionUiCordonel
|
|||||||
|
|
||||||
MessageBox.Show(ex.Message);
|
MessageBox.Show(ex.Message);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private Boolean Detect(Boolean IgnorErrors, Int32 slot)
|
private Boolean Detect(Boolean IgnorErrors, Int32 slot)
|
||||||
{
|
{
|
||||||
|
slot = 1;
|
||||||
if (!detectIsLocked)
|
if (!detectIsLocked)
|
||||||
{
|
{
|
||||||
LastMsg = "Start Detect";
|
LastMsg = "Start Detect";
|
||||||
@ -410,10 +411,6 @@ namespace ProductionUiCordonel
|
|||||||
var connectProcess = new ProductionProcessConnect(CurrentGenesisMeter);
|
var connectProcess = new ProductionProcessConnect(CurrentGenesisMeter);
|
||||||
pc.Processes.Add(connectProcess); //[x] [x] [x]
|
pc.Processes.Add(connectProcess); //[x] [x] [x]
|
||||||
|
|
||||||
if (RadioAddress != 0)
|
|
||||||
{
|
|
||||||
RadioAddress = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
orderBarcode = new ProductionProcessCheckOrderNumber(0);
|
orderBarcode = new ProductionProcessCheckOrderNumber(0);
|
||||||
|
|
||||||
|
|||||||
@ -40,6 +40,25 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
{
|
{
|
||||||
//clear
|
//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()
|
private void doStartProcessLoop()
|
||||||
@ -87,23 +106,14 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
|
|
||||||
if (!HyState.HasValue || !HyState.Value)
|
if (!HyState.HasValue || !HyState.Value)
|
||||||
{
|
{
|
||||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
setTxt("Zähler nicht erfolgreich geprüft",true,true);
|
||||||
new Action(() =>
|
|
||||||
{
|
|
||||||
UserControl.lblText.Content = "Zähler nicht erfolgreich geprüft";
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
currentProcessState = ProductionProcessState.Error;
|
currentProcessState = ProductionProcessState.Error;
|
||||||
}
|
}
|
||||||
if (!preState.HasValue || !preState.Value)
|
if (!preState.HasValue || !preState.Value)
|
||||||
{
|
{
|
||||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
setTxt("Zähler nicht erfolgreich vorbehandelt", true, true);
|
||||||
new Action(() =>
|
|
||||||
{
|
|
||||||
UserControl.lblText.Content = "Zähler nicht erfolgreich vorbehandelt";
|
|
||||||
}
|
|
||||||
));
|
|
||||||
currentProcessState = ProductionProcessState.Error;
|
currentProcessState = ProductionProcessState.Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,14 +124,9 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
// this calculates all life time values
|
// this calculates all life time values
|
||||||
if (!GenesisStatusHandler.BuildLifeTimeInformation(Meter, genesisStatus))
|
if (!GenesisStatusHandler.BuildLifeTimeInformation(Meter, genesisStatus))
|
||||||
{
|
{
|
||||||
|
|
||||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
setTxt("Batterie nicht lesbar", true, true);
|
||||||
new Action(() =>
|
|
||||||
{
|
|
||||||
UserControl.lblText.Content = "Batterie nicht lesbar";
|
|
||||||
}
|
|
||||||
));
|
|
||||||
Meter.WriteLog("Batterie nicht lesbar");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,21 +143,31 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
{
|
{
|
||||||
if (Meter.Region == "NA")
|
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,
|
setTxt($"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}", true, true);
|
||||||
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}";
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Meter.WriteLog($"UNT Limit überschritten Limit{genesisStatus.UNTLimit} vs {genesisStatus.DrainedBatteryLoad_uAs}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (genesisStatus.RemainingLifeTimeYears < 20)
|
if (genesisStatus.RemainingLifeTimeYears < 20)
|
||||||
@ -160,14 +175,8 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
if (genesisStatus.DrainedBatteryLoadPercent > 9)
|
if (genesisStatus.DrainedBatteryLoadPercent > 9)
|
||||||
{
|
{
|
||||||
currentProcessState = ProductionProcessState.Error;
|
currentProcessState = ProductionProcessState.Error;
|
||||||
UserControl.lblText.Dispatcher.Invoke(DispatcherPriority.Send,
|
setTxt("EMEA Limit überschritten Limit 8% vs {genesisStatus.DrainedBatteryLoadPercent}", true, true);
|
||||||
new Action(() =>
|
|
||||||
{
|
|
||||||
UserControl.MessageBox($"EMEA Limit überschritten Limit 8% vs {genesisStatus.DrainedBatteryLoadPercent}");
|
|
||||||
UserControl.lblText.Content = "Batterie über 10% entladen";
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
|
|
||||||
Meter.WriteLog("Batterie über 10% entladen");
|
Meter.WriteLog("Batterie über 10% entladen");
|
||||||
}
|
}
|
||||||
@ -190,33 +199,29 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
currentProcessState = ProductionProcessState.Error;
|
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);
|
var meterFWApp = Meter.MeterAppListVersion.First(a => a.AppId == 24);
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(res[9]) || !Meter.InstalledFwVersion.HasValue || Meter.InstalledFwVersion.Value != uint.Parse(res[9]))
|
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)
|
if (currentProcessState != ProductionProcessState.Error)
|
||||||
{
|
{
|
||||||
currentProcessState = ProductionProcessState.Done;
|
currentProcessState = ProductionProcessState.Done;
|
||||||
|
|||||||
@ -18,7 +18,9 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
Abort
|
Abort
|
||||||
}
|
}
|
||||||
public Boolean DialogIsDone { get; }
|
public Boolean DialogIsDone { get; }
|
||||||
public String PcbSerialNumber { get; private set; }
|
public String PcbSerialNumber {
|
||||||
|
get;
|
||||||
|
private set; }
|
||||||
|
|
||||||
public String AltRadio { get; }
|
public String AltRadio { get; }
|
||||||
|
|
||||||
@ -70,7 +72,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
private void UserControl_KeyDown(Object sender, String input)
|
private void UserControl_KeyDown(Object sender, String input)
|
||||||
{
|
{
|
||||||
var a = input;
|
var a = input;
|
||||||
PcbSerialNumber = Meter.SerialNumber;
|
//PcbSerialNumber = Meter.SerialNumber;
|
||||||
UserControl.txtHiddenInput.Text = "";
|
UserControl.txtHiddenInput.Text = "";
|
||||||
if (a.Trim().Contains(PcbSerialNumber.Trim()))
|
if (a.Trim().Contains(PcbSerialNumber.Trim()))
|
||||||
{
|
{
|
||||||
@ -91,6 +93,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
StepMismatch($"Falsche oder fehlerhafter Scan! {Environment.NewLine} Dieser Zähler müsste die ({PcbSerialNumber}) haben. gescannt wurde {a}");
|
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()
|
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.SetDesc($"Bitte den Deckel des Zählers Scannern{Environment.NewLine} Die Seriennummer muss abgeglichen werden.");
|
||||||
UserControl.SetFocusMe();
|
UserControl.SetFocusMe();
|
||||||
UserControl.BarcodeInput += UserControl_KeyDown;
|
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);
|
//var requestResponse = LocalWebRequest.GetRequestWithError(url + Meter.PcbId, out var errorCode, 30000, isRetry: true);
|
||||||
if (errorCode == System.Net.HttpStatusCode.OK.GetHashCode())
|
//if (errorCode == System.Net.HttpStatusCode.OK.GetHashCode())
|
||||||
{
|
//{
|
||||||
var passwordContainer = JsonConvert.DeserializeObject<Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdDb>(requestResponse);
|
// var passwordContainer = JsonConvert.DeserializeObject<Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdDb>(requestResponse);
|
||||||
if (Meter.Login(System.Text.Encoding.UTF8.GetString(passwordContainer.ListOfPasswords[7])))
|
// if (Meter.Login(System.Text.Encoding.UTF8.GetString(passwordContainer.ListOfPasswords[7])))
|
||||||
{
|
// {
|
||||||
Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.MeterPwdHandlerDb.SetPwdFromSkeletonToLvl8inDd(Meter.PcbId, passwordContainer);
|
// 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",
|
overAllResult.Add(_currentGenesis_WriteRegister("PERIODICLOG_ResetCounter",
|
||||||
(new Byte[] { 0x00, 0x00, 0x00, 0x00 }).Reverse().ToArray()));
|
(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;
|
var ret = true;
|
||||||
|
|||||||
@ -80,6 +80,11 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
ret = WriteAndVerifyPasswordFileToMeter();
|
ret = WriteAndVerifyPasswordFileToMeter();
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
Meter.WriteLog("WriteAndVerifyPasswordFileToMeter failed!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateImage(_userControl.WriteToMeter, ret);
|
updateImage(_userControl.WriteToMeter, ret);
|
||||||
@ -90,6 +95,10 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
|||||||
{
|
{
|
||||||
Meter.Logout();
|
Meter.Logout();
|
||||||
ret = Meter.Login(Encoding.UTF8.GetString(_pwdContainer.ListOfPasswords.Last()));
|
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
|
//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(() =>
|
return await Task.Run(() =>
|
||||||
{
|
{
|
||||||
var builder = new StringBuilder();
|
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 r in ret.Where(r => r.RegisterName == "SENSUSRADIO_EncryptionKey"))
|
||||||
{
|
{
|
||||||
foreach (var t in r.RegisterValue)
|
foreach (var t in r.RegisterValue)
|
||||||
@ -473,22 +473,19 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|||||||
|
|
||||||
foreach (var item in dt.Select())
|
foreach (var item in dt.Select())
|
||||||
{
|
{
|
||||||
try
|
|
||||||
{
|
var jsonString = item["JSON"].ToString();
|
||||||
var jsonString = item["JSON"].ToString();
|
|
||||||
|
|
||||||
|
|
||||||
var jResults = JsonConvert.DeserializeObject<JToken>(jsonString);
|
var jResults = JsonConvert.DeserializeObject<JToken>(jsonString);
|
||||||
if (DateTimeOffset.TryParse(jResults["JsonObject"]["StartDT"].ToString(), out ret))
|
if (DateTimeOffset.TryParse(jResults["JsonObject"]["StartDT"].ToString(), out ret))
|
||||||
{
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
{
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return DateTimeOffset.MinValue;
|
return DateTimeOffset.MinValue;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -993,21 +990,21 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
[Route("SetMeterEOLState"), HttpPost]
|
[Route("SetMeterEOLState"), HttpPost]
|
||||||
public async Task<HttpResponseMessage> SetMeterEOLState(int PcbID,int OrderNumber)
|
public async Task<HttpResponseMessage> SetMeterEOLState(int PcbID, int OrderNumber)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.AppendLine($" UPDATE [dbo].[CordonelEol] ");
|
sb.AppendLine($" UPDATE [dbo].[CordonelEol] ");
|
||||||
sb.AppendLine($" SET ");
|
sb.AppendLine($" SET ");
|
||||||
sb.AppendLine($" [CordonelEolPcbId] = {PcbID} ");
|
sb.AppendLine($" [CordonelEolPcbId] = {PcbID} ");
|
||||||
sb.AppendLine($" ,[CordonelEolOrderNumber] = {OrderNumber} ");
|
sb.AppendLine($" ,[CordonelEolOrderNumber] = {OrderNumber} ");
|
||||||
sb.AppendLine($" ,[CordonelEolDate] = CURRENT_TIMESTAMP ");
|
sb.AppendLine($" ,[CordonelEolDate] = CURRENT_TIMESTAMP ");
|
||||||
sb.AppendLine($" ,[CordonelEolPublishAction] = null ");
|
sb.AppendLine($" ,[CordonelEolPublishAction] = null ");
|
||||||
sb.AppendLine($" ,[CordonelEolSAPFeedback] = null ");
|
sb.AppendLine($" ,[CordonelEolSAPFeedback] = null ");
|
||||||
sb.AppendLine($" WHERE [CordonelEolPcbId] = {PcbID} ");
|
sb.AppendLine($" WHERE [CordonelEolPcbId] = {PcbID} ");
|
||||||
sb.AppendLine($" and [CordonelEolOrderNumber] = {OrderNumber} ");
|
sb.AppendLine($" and [CordonelEolOrderNumber] = {OrderNumber} ");
|
||||||
sb.AppendLine($"IF @@ROWCOUNT = 0 ");
|
sb.AppendLine($"IF @@ROWCOUNT = 0 ");
|
||||||
sb.AppendLine($" BEGIN ");
|
sb.AppendLine($" BEGIN ");
|
||||||
@ -1024,7 +1021,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|||||||
sb.AppendLine($" ,null ");
|
sb.AppendLine($" ,null ");
|
||||||
sb.AppendLine($" ,null) ");
|
sb.AppendLine($" ,null) ");
|
||||||
sb.AppendLine($" END ");
|
sb.AppendLine($" END ");
|
||||||
|
|
||||||
|
|
||||||
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
|
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 = $"{ServiceUrls.KeyServerCustom()}devices
|
||||||
var Url = $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?orderNumber={orderNumber}&radioAdress={radioAdress}";
|
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>();
|
var header = new Dictionary<String, String>();
|
||||||
header.Add("Cache-Control", "no-cache");
|
header.Add("Cache-Control", "no-cache");
|
||||||
@ -660,100 +660,100 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|||||||
|
|
||||||
|
|
||||||
var lst = new List<Tuple<int, long, int>>();
|
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>(22735455, 10402001195, 3187517));
|
||||||
lst.Add(new Tuple<int, long, int>(22735458, 10402001198, 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>(22735459, 10402001199, 3187517));
|
||||||
lst.Add(new Tuple<int, long, int>(22750101, 10402001361, 3190243));
|
//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>(22750102, 10402001362, 3190243));
|
||||||
lst.Add(new Tuple<int, long, int>(22750103, 10402001363, 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>(22773935, 10402003482, 3194465));
|
||||||
lst.Add(new Tuple<int, long, int>(22773936, 10402003483, 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>(22773937, 10402003484, 3194465));
|
||||||
lst.Add(new Tuple<int, long, int>(22773939, 10402003486, 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>(22773940, 10402003487, 3194465));
|
||||||
lst.Add(new Tuple<int, long, int>(22773941, 10402003488, 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>(22773942, 10402003489, 3194465));
|
||||||
lst.Add(new Tuple<int, long, int>(22773943, 10402003490, 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>(23719324, 10402004169, 3205719));
|
||||||
lst.Add(new Tuple<int, long, int>(23719325, 10402004170, 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>(23719326, 10402004171, 3205719));
|
||||||
lst.Add(new Tuple<int, long, int>(23719327, 10402004172, 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>(23719328, 10402004173, 3205719));
|
||||||
lst.Add(new Tuple<int, long, int>(23719329, 10402004174, 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>(23719353, 10402004198, 3205720));
|
||||||
lst.Add(new Tuple<int, long, int>(23719355, 10402004200, 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>(23719361, 10402004206, 3205720));
|
||||||
lst.Add(new Tuple<int, long, int>(23719365, 10402004210, 3205721));
|
//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>(23719366, 10402004211, 3205721));
|
||||||
lst.Add(new Tuple<int, long, int>(23719367, 10402004212, 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>(23719368, 10402004213, 3205721));
|
||||||
lst.Add(new Tuple<int, long, int>(23719369, 10402004214, 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>(23719370, 10402004215, 3205721));
|
||||||
lst.Add(new Tuple<int, long, int>(23719374, 10402004219, 3205722));
|
//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>(23719375, 10402004220, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719376, 10402004221, 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>(23719377, 10402004222, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719378, 10402004223, 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>(23719379, 10402004224, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719380, 10402004225, 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>(23719381, 10402004226, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719382, 10402004227, 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>(23719383, 10402004228, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719384, 10402004229, 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>(23719385, 10402004230, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719387, 10402004232, 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>(23719388, 10402004233, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719389, 10402004234, 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>(23719390, 10402004235, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719391, 10402004236, 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>(23719392, 10402004237, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719393, 10402004238, 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>(23719394, 10402004239, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719395, 10402004240, 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>(23719396, 10402004241, 3205722));
|
||||||
lst.Add(new Tuple<int, long, int>(23719465, 10402004264, 3205759));
|
//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>(23719466, 10402004265, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719467, 10402004266, 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>(23719468, 10402004267, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719469, 10402004268, 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>(23719470, 10402004269, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719471, 10402004270, 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>(23719472, 10402004271, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719473, 10402004272, 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>(23719479, 10402004278, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719480, 10402004279, 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>(23719481, 10402004280, 3205759));
|
||||||
lst.Add(new Tuple<int, long, int>(23719482, 10402004281, 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>(23720650, 10402004369, 3206400));
|
||||||
lst.Add(new Tuple<int, long, int>(23720651, 10402004370, 3206401));
|
//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>(23720744, 10402004377, 3206443));
|
||||||
lst.Add(new Tuple<int, long, int>(23749514, 10402004737, 3210028));
|
//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>(23749516, 10402004739, 3210028));
|
||||||
lst.Add(new Tuple<int, long, int>(23749517, 10402004740, 3210029));
|
//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>(23749518, 10402004741, 3210029));
|
||||||
lst.Add(new Tuple<int, long, int>(23749519, 10402004742, 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>(23749520, 10402004743, 3210029));
|
||||||
lst.Add(new Tuple<int, long, int>(23749521, 10402004744, 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>(23749523, 10402004745, 3210033));
|
||||||
lst.Add(new Tuple<int, long, int>(23749524, 10402004746, 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>(23749525, 10402004747, 3210033));
|
||||||
lst.Add(new Tuple<int, long, int>(23749526, 10402004748, 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>(23749527, 10402004749, 3210033));
|
||||||
lst.Add(new Tuple<int, long, int>(23749528, 10402004750, 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>(23749529, 10402004751, 3210033));
|
||||||
lst.Add(new Tuple<int, long, int>(23749530, 10402004752, 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>(23749531, 10402004753, 3210033));
|
||||||
lst.Add(new Tuple<int, long, int>(23749532, 10402004754, 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>(23766896, 10402005092, 3213958));
|
||||||
lst.Add(new Tuple<int, long, int>(23766897, 10402005093, 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>(23766898, 10402005094, 3213958));
|
||||||
lst.Add(new Tuple<int, long, int>(23766899, 10402005095, 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>(23766900, 10402005096, 3213958));
|
||||||
lst.Add(new Tuple<int, long, int>(23766901, 10402005097, 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>(23766902, 10402005098, 3213958));
|
||||||
lst.Add(new Tuple<int, long, int>(23766903, 10402005099, 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>(23766904, 10402005100, 3213958));
|
||||||
lst.Add(new Tuple<int, long, int>(23766905, 10402005101, 3213958));
|
//lst.Add(new Tuple<int, long, int>(23766905, 10402005101, 3213958));
|
||||||
|
|
||||||
var lstResult = new List<String>();
|
var lstResult = new List<String>();
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
1babc7d629fd8c486aff20f4990c117c2e58a68f
|
65d75c3322f8a137c69963cfdc0cb6f1ffacf62a
|
||||||
|
|||||||
@ -224,4 +224,4 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
bool IsReadyForMesuremnt();
|
bool IsReadyForMesuremnt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -556,7 +556,7 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(meter.PcbId) && meter.PcbId.Length < 6 && meter.Login())
|
if (!string.IsNullOrEmpty(PcbId) && PcbId.Length > 6 && meter.Login())
|
||||||
{
|
{
|
||||||
changeCurrentSlotState(TaskState.LoginDone);
|
changeCurrentSlotState(TaskState.LoginDone);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user