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 { 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) } } } }