e-register AuthLevel Pin - Fix - 0D to D0
This commit is contained in:
@@ -37,18 +37,9 @@
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Net.Http">
|
||||
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Net.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
@@ -63,35 +54,6 @@
|
||||
<Project>{4e8bb839-d40a-488c-88ce-f21811f1f476}</Project>
|
||||
<Name>Common.Hardware.WaterMeter.eRegister</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Hardware\WaterMeter\Genesis\Registers\Registers.csproj">
|
||||
<Project>{f4aaf7e6-7333-4284-b735-e32deb076c64}</Project>
|
||||
<Name>Registers</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\LaaPackages\LaaPackages.SqlClient\LaaPackages.SqlClient.csproj">
|
||||
<Project>{F90B940C-9A83-496D-AAE0-11CD02CE0A22}</Project>
|
||||
<Name>LaaPackages.SqlClient</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Stichproben\Stichproben.csproj">
|
||||
<Project>{F69A79FA-548D-4E21-887E-01FABDAD9E73}</Project>
|
||||
<Name>Stichproben</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions">
|
||||
<Version>8.3.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.SharePointOnline.CSOM">
|
||||
<Version>16.1.26121.12000</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NUnit">
|
||||
<Version>4.3.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NUnit3TestAdapter">
|
||||
<Version>5.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SpecFlow.NUnit">
|
||||
<Version>3.9.74</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
+126
-20
@@ -1,58 +1,164 @@
|
||||
namespace CommonConsole
|
||||
{
|
||||
using Common.Hardware.SIRT;
|
||||
using Common.Hardware.SIRT.Parameters;
|
||||
using Common.Hardware.SIRT.Tasks;
|
||||
using Common.Hardware.WaterMeter.eRegister;
|
||||
using Common.Hardware.WaterMeter.eRegister.Features;
|
||||
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
|
||||
public static class Program
|
||||
{
|
||||
static string portName;
|
||||
static uint address;
|
||||
static byte[] key;
|
||||
static ManualResetEventSlim awaiter;
|
||||
static SIRTBroadcaster sirt;
|
||||
|
||||
public static void Main()
|
||||
public static void Main(params string[] args)
|
||||
{
|
||||
awaiter = new ManualResetEventSlim();
|
||||
var sirt = new SIRTBroadcaster("COM6");
|
||||
sirt.MessageReceived += Console.WriteLine;
|
||||
sirt.Disconnected += Sirt_Disconnected;
|
||||
sirt.Connected += Sirt_Connected;
|
||||
if (args.Length != 3)
|
||||
{
|
||||
Console.WriteLine($"Falsche anzahl an parameter: '{string.Join("', '", args)}'");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
portName = args[0];
|
||||
|
||||
if (Regex.IsMatch($"{portName}", "[Cc][Oo][Mm][0-9]+"))
|
||||
{
|
||||
portName = portName.ToUpper();
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Falsche COM PortName: '{portName}' - erwartet: [Cc][Oo][Mm][0-9]+");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!uint.TryParse($"{args[1]}", out address))
|
||||
{
|
||||
Console.WriteLine($"Ungültige Funkadresse: '{args[1]}'");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
key = $"{args[2]}".GetBytes();
|
||||
|
||||
if (key.Length != 16)
|
||||
{
|
||||
Console.WriteLine($"Ungültige Funkschlüssel: '{BitConverter.ToString(key)}'");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
awaiter = new ManualResetEventSlim();
|
||||
sirt = new SIRTBroadcaster(portName);
|
||||
|
||||
sirt.MessageReceived += Console.WriteLine;
|
||||
sirt.Connected += Sirt_Connected;
|
||||
|
||||
sirt.Open();
|
||||
awaiter.Wait();
|
||||
sirt.Close();
|
||||
|
||||
sirt.Connected -= Sirt_Connected;
|
||||
sirt.MessageReceived -= Console.WriteLine;
|
||||
}
|
||||
|
||||
private static void Sirt_Connected(SIRTBroadcaster sirt)
|
||||
{
|
||||
var task = new CordonelTask
|
||||
var auth = new ProvidePin { AuthLevel = AuthLevel.I };
|
||||
var task = new CordonelTask(sirt.Frequency)
|
||||
{
|
||||
Frequency = sirt.Frequency,
|
||||
Timeout = 60_000,
|
||||
// WakeUpModul = true,
|
||||
// WakeUpCmd = true,
|
||||
DelPamSemi = true,
|
||||
WakeUpCmd = true,
|
||||
RequestAddress = 412006750,
|
||||
RequestAddress = address,
|
||||
EncryptionKey = key,
|
||||
IsEncrypted = true
|
||||
};
|
||||
|
||||
if (sirt.Start(task))
|
||||
task.Data = new ResetAlarms(0xFF).Append(auth);
|
||||
task.SetPending();
|
||||
|
||||
for (var i = 0; i < 3 && task.State != SIRTTaskState.Completed; i++)
|
||||
{
|
||||
sirt.Start(task);
|
||||
task.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
private static void Sirt_Disconnected(SIRTBroadcaster sirt)
|
||||
{
|
||||
sirt.MessageReceived -= Console.WriteLine;
|
||||
sirt.Disconnected -= Sirt_Disconnected;
|
||||
sirt.Connected -= Sirt_Connected;
|
||||
}
|
||||
if (task.State != SIRTTaskState.Completed)
|
||||
{
|
||||
Console.WriteLine($"Komand: {BitConverter.ToString(task.Data)} - nicht ausgeführt");
|
||||
|
||||
class CordonelTask : WritePamTask
|
||||
return;
|
||||
}
|
||||
|
||||
task.Data = new ResetAlarms(0xFE).Append(auth);
|
||||
task.SetPending();
|
||||
|
||||
for (var i = 0; i < 3 && task.State != SIRTTaskState.Completed; i++)
|
||||
{
|
||||
sirt.Start(task);
|
||||
task.Wait();
|
||||
}
|
||||
|
||||
if (task.State != SIRTTaskState.Completed)
|
||||
{
|
||||
Console.WriteLine($"Komand: {BitConverter.ToString(task.Data)} - nicht ausgeführt");
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
awaiter.Set();
|
||||
}
|
||||
|
||||
public class CordonelTask : EregisterTask
|
||||
{
|
||||
public CordonelTask(int frequency) : base(frequency)
|
||||
{
|
||||
}
|
||||
|
||||
public override Byte[] Start()
|
||||
{
|
||||
Console.WriteLine($"TX|{BitConverter.ToString(this.request)}");
|
||||
|
||||
var byes = base.Start();
|
||||
|
||||
return base.Start();
|
||||
}
|
||||
|
||||
public override void Push(SIRTMessage response)
|
||||
{
|
||||
base.Push(response);
|
||||
Console.WriteLine($"RX|{BitConverter.ToString(response)}");
|
||||
|
||||
Console.WriteLine($"{this.State}|{BitConverter.ToString(response)}");
|
||||
try
|
||||
{
|
||||
if (this.SEMIMessage != null)
|
||||
{
|
||||
Console.WriteLine($"-----------------------------------------");
|
||||
Console.WriteLine($"AlarmsMask");
|
||||
Console.WriteLine($"-----------------------------------------");
|
||||
Console.WriteLine($"{new AlarmsMask(response.Payload[10])}");
|
||||
Console.WriteLine($"-----------------------------------------");
|
||||
Console.WriteLine($"PAMStatus");
|
||||
Console.WriteLine($"-----------------------------------------");
|
||||
Console.WriteLine($"{new PAMStatus(response.Payload[11]).ToString(true)}");
|
||||
Console.WriteLine($"-----------------------------------------");
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user