Innovenergy_trunk/csharp/App/DeligreenBatteryCommunication/Program.cs

71 lines
2.9 KiB
C#

using InnovEnergy.Lib.Devices.BatteryDeligreen;
namespace InnovEnergy.App.DeligreenBatteryCommunication;
internal static class Program
{
private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(2);
// private static readonly Channel? BatteriesChannel;
private const String Port = "/dev/ttyUSB0";
static Program()
{
Console.WriteLine("Hello, Deligreen World!");
// BatteriesChannel = new SerialPortChannel(Port, BaudRate, Parity, DataBits, StopBits);
}
public static async Task Main(string[] args)
{
var listOfBatteries = new List<BatteryDeligreenDevice>
{
new BatteryDeligreenDevice(Port, 0),
new BatteryDeligreenDevice(Port, 1),
new BatteryDeligreenDevice(Port, 2),
new BatteryDeligreenDevice(Port, 3),
new BatteryDeligreenDevice(Port, 4)
};
var batteryDevices = new BatteryDeligreenDevices(listOfBatteries);
Console.WriteLine("Starting Battery Communication");
while (true)
{
try
{
var startTime = DateTime.Now;
Console.WriteLine("***************************** Reading Battery Data *********************************************");
Console.WriteLine($"Start Reading all Batteries: {startTime}");
var batteriesRecord = batteryDevices.Read();
var stopTime = DateTime.Now;
Console.WriteLine($"Finish Reading all Batteries: {stopTime}");
Console.WriteLine("Time used for reading all batteries:" + (stopTime - startTime));
Console.WriteLine("Average SOC " + batteriesRecord?.Soc);
Console.WriteLine("SOC Battery 0 : " + batteriesRecord?.Devices[0].BatteryDeligreenDataRecord.Soc);
Console.WriteLine("SOC Battery 1 : " + batteriesRecord?.Devices[1].BatteryDeligreenDataRecord.Soc);
Console.WriteLine("SOC Battery 2 : " + batteriesRecord?.Devices[2].BatteryDeligreenDataRecord.Soc);
Console.WriteLine("SOC Battery 3 : " + batteriesRecord?.Devices[3].BatteryDeligreenDataRecord.Soc);
Console.WriteLine("SOC Battery 4 : " + batteriesRecord?.Devices[4].BatteryDeligreenDataRecord.Soc);
Console.WriteLine("Min Soc " + batteriesRecord?.CurrentMinSoc);
Console.WriteLine("count " + batteriesRecord?.Devices.Count);
// Wait for 2 seconds before the next reading
await Task.Delay(2000); // Delay in milliseconds (2000ms = 2 seconds)
}
catch (Exception e)
{
// Handle exception and print the error
Console.WriteLine(e + " This the first try loop ");
await Task.Delay(2000); // Delay in milliseconds (2000ms = 2 seconds)
}
}
}
}