laatzen/Common/CommonConsole/Program.cs
2024-11-27 10:54:01 +01:00

115 lines
4.2 KiB
C#

namespace CommonConsole
{
using Common.Hardware.Ports;
using Common.Hardware.SIRT;
using Common.Hardware.SIRT.Parameters;
using Common.Hardware.WaterMeter.eRegister;
using Common.Hardware.WaterMeter.eRegister.Features;
using Common.Hardware.WaterMeter.eRegister.Models;
using System;
using System.Linq;
using System.Threading;
public class Program
{
//static uint oldAddress = 4291189262;
//static uint newAddress = 4291189261;
static uint oldAddress = 4291189262;
static uint newAddress = 4291189261;
static string encryptionKey = "E6C88800DEB868C0D6A84880CE982840";
static readonly ManualResetEventSlim manualResetEventSlim = new ManualResetEventSlim();
static readonly EregisterTask taskOldAddr = new EregisterTask(3000)
{
RequestAddress = oldAddress,
ResponseAddress = newAddress,
Frequency = 433,
P1 = new P811
{
DelPamSemi = true,
WakeUpCmd = true
},
// Encrypted = true,
// EncryptionKey = encryptionKey.GetEncryptionKey()
};
static readonly SIRTBroadcaster connection = new SIRTBroadcaster("COM6");
public static void Main()
{
//TX: 55-81-14-00-FF-C6-5A-0E-17-06-A8-0A-1F-AB-90-80-C1-08-24-E3-F6-3C-5F-04-3C-DF-9B-E2-38-80-51-10-F4-03-16
//RX: 0xFF, 0x11, 0xA1, 0xC4, 0xFF, 0xC6, 0x5A, 0x0E, 0x0D, 0x01, 0xE4, 0xFF, 0xC6, 0x5A, 0x0E, 0xB7, 0x00, 0xB9, 0x4C, 0xB8, 0x7F, 0x7E, 0x80, 0xC5, 0x16
var bytes = new byte[]
{
0xFF, 0x11, 0xA1, 0xC4, 0xFF, 0xC6, 0x5A, 0x0E, 0x0D, 0x01, 0xE4, 0xFF, 0xC6, 0x5A, 0x0E, 0xB7, 0x00, 0xB9, 0x4C, 0xB8, 0x7F, 0x7E, 0x80, 0xC5, 0x16
};
var encryptionKeyBytes = Program.encryptionKey.GetEncryptionKey();
// var message = new SIRTMessage(responseBytes);
var response = new SIRTMessage(bytes);
Console.WriteLine(response);
var x = response.Data.DecryptResponse(encryptionKeyBytes);
Console.WriteLine(BitConverter.ToString(x));
var decrypted = response.ToByteArray().DecryptResponse(encryptionKeyBytes);
response = new SIRTMessage(decrypted);
Console.WriteLine(response);
//taskOldAddr.Changed += Task_Changed;
//taskOldAddr.Completed += Task_Completed;
//connection.Activated += Connection_Activated;
////connection.Log += Console.WriteLine;
//connection.Open();
//manualResetEventSlim.Wait();
//manualResetEventSlim.Reset();
//connection.Close();
////connection.Log -= Console.WriteLine;
//connection.Activated -= Connection_Activated;
//taskOldAddr.Completed -= Task_Completed;
//taskOldAddr.Changed -= Task_Changed;
}
private static void Task_Changed(EregisterTask _task)
{
Console.WriteLine(_task.Label);
Console.WriteLine(_task.Info);
Console.WriteLine($"Request addr: {_task.RequestAddress}");
Console.WriteLine($"Response addr: {_task.ResponseAddress}");
Console.WriteLine();
}
private static void Connection_Activated()
{
Console.WriteLine($"{nameof(SIRTBroadcaster)} activated");
Console.WriteLine();
var oldAddrFeatures = new EregisterFeatures
{
//ChangeSensusRFEncryptionKey = new ChangeSensusRFEncryptionKey
//{
// HexKey = encryptionKey
//}
Debug = new EregisterDebugFeatures
{
OpticalTelegram = new OpticalTelegram
{
Minutes = 1
}
}
};
taskOldAddr.Data = oldAddrFeatures.BuildPams().FirstOrDefault().Value;
connection.EnqueueTask(taskOldAddr);
}
static void Task_Completed(SIRTTask task)
{
Console.WriteLine($"{nameof(SIRTTask)} completed");
Console.WriteLine();
manualResetEventSlim.Set();
}
}
}