103 lines
3.1 KiB
C#
103 lines
3.1 KiB
C#
namespace CommonConsole
|
|
{
|
|
using Common.Hardware.SIRT;
|
|
using Common.Hardware.SIRT.Parameters;
|
|
using Common.Hardware.WaterMeter.eRegister;
|
|
using Common.Hardware.WaterMeter.eRegister.Features;
|
|
using Newtonsoft.Json;
|
|
|
|
using System;
|
|
using System.Collections.Concurrent;
|
|
using System.IO;
|
|
|
|
public class Program
|
|
{
|
|
public static void Main()
|
|
{
|
|
var client = new SIRTClient("COM6");
|
|
|
|
client.OpenConnection();
|
|
Console.ReadKey();
|
|
client.CloseConnection();
|
|
}
|
|
}
|
|
|
|
public class SIRTClient
|
|
{
|
|
private readonly ConcurrentDictionary<uint, EregisterTask> tasks;
|
|
private readonly SIRTBroadcaster broadcaster;
|
|
|
|
public SIRTClient(string comPort)
|
|
{
|
|
this.tasks = new ConcurrentDictionary<uint, EregisterTask>();
|
|
this.broadcaster = new SIRTBroadcaster(comPort);
|
|
this.broadcaster.Activated += this.Broadcaster_Activated;
|
|
this.broadcaster.Connected += this.Broadcaster_Connected;
|
|
this.broadcaster.Disconnected += this.Broadcaster_Disconnected;
|
|
this.broadcaster.Logging += this.Broadcaster_Logging;
|
|
this.broadcaster.MessageReceived += this.Broadcaster_MessageReceived;
|
|
}
|
|
|
|
internal void CloseConnection() => this.broadcaster.Close();
|
|
|
|
internal void OpenConnection() => this.broadcaster.Open();
|
|
|
|
private void Broadcaster_Activated()
|
|
{
|
|
Console.WriteLine(nameof(Broadcaster_Activated));
|
|
|
|
this.tasks.GetOrAdd(4291796386, _ =>
|
|
{
|
|
var task = new EregisterTask(868)
|
|
{
|
|
Cmd = SIRTMessage.W_PAM,
|
|
P1 = new P811
|
|
{
|
|
DelPamSemi = true,
|
|
},
|
|
Data = new ChangeRadioId
|
|
{
|
|
Address = 309030150
|
|
|
|
}.Append(new ProvidePin
|
|
{
|
|
AuthLevel = AuthLevel.III
|
|
}),
|
|
RequestAddress = 4291796386,
|
|
ResponseAddress = 309030150
|
|
};
|
|
|
|
task.Completed += this.Task_Completed;
|
|
|
|
this.broadcaster.EnqueueTask(task);
|
|
|
|
return task;
|
|
});
|
|
}
|
|
|
|
private void Broadcaster_Connected() => Console.WriteLine(nameof(Broadcaster_Connected));
|
|
|
|
private void Broadcaster_Disconnected() => Console.WriteLine(nameof(Broadcaster_Disconnected));
|
|
|
|
private void Broadcaster_Logging(string message)
|
|
{
|
|
|
|
}
|
|
|
|
private void Broadcaster_MessageReceived(SIRTMessage message)
|
|
{
|
|
|
|
}
|
|
|
|
private void Task_Completed(SIRTTask task)
|
|
{
|
|
task.Completed -= this.Task_Completed;
|
|
|
|
Console.WriteLine($"Task_Completed: {task}");
|
|
File.WriteAllText($"..\\..\\Tasks\\{task.RequestAddress}.json", JsonConvert.SerializeObject(task, new JsonSerializerSettings
|
|
{
|
|
Formatting = Formatting.Indented
|
|
}));
|
|
}
|
|
}
|
|
} |