laatzen/Common/CommonConsole/ProgramLogFileHelper.cs
2023-11-27 16:54:53 +01:00

1031 lines
45 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
using Xylem.Common.Logic.ServiceCore;
namespace CommonConsole
{
public class ProgramLogFileHelper
{
public class resultRep
{
public double GreenLEDTime = 0.0;
public string Date { get; internal set; }
public DateTime DataDate { get; internal set; }
public string CustomerName { get; internal set; }
public string PcbId { get; internal set; }
public string Core { get; internal set; }
public string FW { get; internal set; }
public string POWERMON_BatteryVoltage { get; internal set; }
public string POWERMON_BatteryQuantity { get; internal set; }
public string GENESISFLOW_ScaledBilling { get; internal set; }
public string GENESISFLOW_SampleRate { get; internal set; }
public string IRDA_AdapterID { get; internal set; }
public string IRDA_PulseReportRate { get; internal set; }
public string METROLOGYASST_PulseResolution { get; internal set; }
public string METROLOGYASST_PulseEvenDistribution { get; internal set; }
public string POWERMON_TotalUsedCharge { get; internal set; }
public string POWERMON_TotalUsedSeconds { get; internal set; }
public string GENESISFLOW_LedMode { get; internal set; }
public string METROLOGYASST_PulseWeight { get; internal set; }
public string METROLOGYASST_PulseMode { get; internal set; }
public string METROLOGYASST_PulseLength { get; internal set; }
public String Source { get; internal set; }
public Boolean PwFileUpdate { get; internal set; } = false;
public void Calc()
{
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
if (string.IsNullOrEmpty(Date) && DataDate == new DateTime())
{
return;
}
if (DataDate == new DateTime())
{
if (Date.Contains(":"))
{
if (DateTime.TryParseExact(Date.Trim().Substring(0, "yyyy-MM-dd".Length), "yyyy-MM-dd", null, DateTimeStyles.None, out var tmp))
{
DataDate = tmp;
}
else
{
}
//2019-10-30 15:46:18.767
}
else if (Date.Contains("/"))
{
if (DateTime.TryParseExact(Date.Trim(), "mm/dd/yyyy", new CultureInfo("us-US"), DateTimeStyles.None, out var tmp))
{
DataDate = tmp;
}
else
{
var strDate = Date.Trim().Split('/');
if (strDate[0].Length == 1)
{
strDate[0] = "0" + strDate[0];
}
if (strDate[1].Length == 1)
{
strDate[1] = "0" + strDate[1];
}
if (DateTime.TryParseExact(strDate[1] + "." + strDate[0] + "." + strDate[2], "dd.MM.yyyy", null, DateTimeStyles.None, out var tmphelp))
{
DataDate = tmphelp;
}
else
{
}
}
}
else if (Date.Contains("-"))
{
if (DateTime.TryParseExact(Date.Trim(), "dd.MM.yyyy", null, DateTimeStyles.None, out var tmp))
{
DataDate = tmp;
}
else
{
}
}
else
{
if (DateTime.TryParseExact(Date.Trim(), "dd.MM.yyyy", null, DateTimeStyles.None, out var tmp))
{
DataDate = tmp;
}
else
{
var strDate = Date.Replace(" ", "").Split('.');
if (strDate[0].Length == 1)
{
strDate[0] = "0" + strDate[0];
}
if (strDate[1].Length == 1)
{
strDate[1] = "0" + strDate[1];
}
if (DateTime.TryParseExact(strDate[1] + "." + strDate[0] + "." + strDate[2], "dd.MM.yyyy", null, DateTimeStyles.None, out var tmphelp))
{
DataDate = tmphelp;
}
}
}
}
if (!string.IsNullOrEmpty(POWERMON_BatteryQuantity))
{
if (POWERMON_BatteryQuantity.Contains("1"))
{
BatteryQuantity = 1;
}
else
{
BatteryQuantity = 2;
}
}
DrainedBatteryLoad_uAs = 0;
ExceededLifeTime_s = 0;
if (!string.IsNullOrEmpty(POWERMON_TotalUsedCharge) && POWERMON_TotalUsedCharge != "NULL")
{
if (POWERMON_TotalUsedCharge.Contains(" - "))
{
var trim = POWERMON_TotalUsedCharge.LastIndexOf(" - ") + 3;
POWERMON_TotalUsedCharge = POWERMON_TotalUsedCharge.Substring(trim, POWERMON_TotalUsedCharge.Length - trim);
UInt64.TryParse(POWERMON_TotalUsedCharge, out DrainedBatteryLoad_uAs);
}
else
{
if (POWERMON_TotalUsedCharge.Length > "E2-AF-58-A3-00-00-00-00".Length)
{
POWERMON_TotalUsedCharge = POWERMON_TotalUsedCharge.Substring(0, "E2-AF-58-A3-00-00-00-00".Length);
}
String[] arr = POWERMON_TotalUsedCharge.Split('-');
Byte[] raw = new Byte[arr.Length];
for (Int32 i = arr.Length - 1; i >= 0; i--)
{
raw[i] = Convert.ToByte(arr[i], 16);
}
if (POWERMON_TotalUsedCharge.Length == "C5-1F-04-BD".Length)
{
Calculated = false;
return;
}
DrainedBatteryLoad_uAs = BitConverter.ToUInt64(raw, 0);
}
}
if (!string.IsNullOrEmpty(POWERMON_TotalUsedSeconds) && POWERMON_TotalUsedSeconds != "NULL")
{
if (POWERMON_TotalUsedSeconds.Contains(" - "))
{
var trim = POWERMON_TotalUsedSeconds.LastIndexOf(" - ") + 3;
POWERMON_TotalUsedSeconds = POWERMON_TotalUsedSeconds.Substring(trim, POWERMON_TotalUsedSeconds.Length - trim);
UInt32.TryParse(POWERMON_TotalUsedSeconds, out ExceededLifeTime_s);
}
else
{
String[] arr = POWERMON_TotalUsedSeconds.Split('-');
Byte[] raw = new Byte[arr.Length];
for (Int32 i = arr.Length - 1; i >= 0; i--)
{
raw[i] = Convert.ToByte(arr[i], 16);
}
ExceededLifeTime_s = BitConverter.ToUInt32(raw, 0);
}
}
if (DrainedBatteryLoad_uAs == 0 || ExceededLifeTime_s == 0)
{
return;
}
InitialBatteryLoad_mAh = 19000;
// Calculate the initial overall battery load of all batteries in uAs as the drained load uses this unit.
var initialBatteryLoad_uAs = 1000 * 3600 * InitialBatteryLoad_mAh * (UInt64)BatteryQuantity;
// Relation of drained to initial load, set the battery to fully unloaded for failed check to force a recalculation
var drainedBatteryLoad_rel = 1.0;
if (initialBatteryLoad_uAs != 0)
{
drainedBatteryLoad_rel = (Double)DrainedBatteryLoad_uAs / initialBatteryLoad_uAs;
}
DrainedBatteryLoadPercent = drainedBatteryLoad_rel * 100;
// The estimated life time uses the drained load over the actual exceeded life time and assumes, that further on
// an identical load will be consumed over the remaining life cycle. The initial load will be multiplied with the
// drained load relation. Set the estimated time to the exceeded time to force a recalculation on failed input.
var estimatedLifeTime_s = (Double)ExceededLifeTime_s;
if (drainedBatteryLoad_rel != 0.0)
{
estimatedLifeTime_s = ExceededLifeTime_s / drainedBatteryLoad_rel;
}
var remainingLifetime_s = estimatedLifeTime_s - ExceededLifeTime_s;
// convert the seconds to years
RemainingLifeTimeYears = remainingLifetime_s / 3600 / 24 / 365.25;
UNTLimit = 1368000000 + (ExceededLifeTime_s * 77.7);
// + (POWERMON_TotalUsedSeconds * 77.7) This allows 1 % battery capacity usage during manufacture on top of an average consumption of 77.7uA
Calculated = true;
}
public UInt32 ExceededLifeTime_s;
public UInt64 DrainedBatteryLoad_uAs;
public Int32 BatteryQuantity;
public UInt64 InitialBatteryLoad_mAh;
public Double DrainedBatteryLoadPercent;
public Double RemainingLifeTimeYears;
public Double UNTLimit { get; private set; }
public bool Calculated = false;
}
private class GreenHistoryItem
{
public int SR = 2;
public DateTime Time { get; set; }
public bool Idel { get; set; } = false;
public bool LedMode { get; set; } = false;
public string Remark { get; set; }
public bool HighConsumption { get; set; }
public double SecondsInHighConsumption { get; set; }
public void Cal()
{
if (Idel)
{
HighConsumption = false;
return;
}
if (!LedMode)
{
HighConsumption = false;
return;
}
if (SR == 2)
{
HighConsumption = false;
return;
}
HighConsumption = true;
}
}
public static void Main(string[] args)
{
#region stuff
//var listRes = new Dictionary<string, List<resultRep>>();
//foreach (var repFile in Directory.GetFiles("E:\\bat\\report\\"))
//{
// var newlines = new List<string>();
// var alllinesfromfile = File.ReadAllLines(repFile);
// var R = new resultRep();
// R.Source = "CUST";
// foreach (var lc in alllinesfromfile)
// {
// if (lc.StartsWith("Datum:"))
// { R.Date = lc.Replace("Datum:", ""); }
// if (lc.StartsWith("Date:"))
// { R.Date = lc.Replace("Date:", ""); }
// if (lc.StartsWith("Kundenname:"))
// { R.CustomerName = lc.Replace("Kundenname:", ""); }
// if (lc.StartsWith("Customer Name:"))
// { R.CustomerName = lc.Replace("Customer Name:", ""); }
// if (lc.StartsWith("PCB ID:"))
// { R.PcbId = lc.Replace("PCB ID:", "").Trim(); ; }
// if (lc.StartsWith("Systemkern-Version:"))
// { R.Core = lc.Replace("Systemkern-Version:", ""); }
// if (lc.StartsWith("System Core Revision:"))
// { R.Core = lc.Replace("System Core Revision:", ""); }
// if (lc.StartsWith("Nummer: 0x18 - V:"))
// { R.FW = lc.Replace("Nummer: 0x18 - V:", "").Replace(" - Name: FLEXNETVERSION", ""); }
// if (lc.StartsWith("AppId: 0x18 - V:"))
// { R.FW = lc.Replace("AppId: 0x18 - V:", "").Replace(" - AppName: FLEXNETVERSION", ""); }
// if (lc.StartsWith("Lese Register: POWERMON_BatteryVoltage"))
// { R.POWERMON_BatteryVoltage = lc.Replace("Lese Register: POWERMON_BatteryVoltage", ""); }
// if (lc.StartsWith("Lese Register: POWERMON_BatteryQuantity"))
// { R.POWERMON_BatteryQuantity = lc.Replace("Lese Register: POWERMON_BatteryQuantity", ""); }
// if (lc.StartsWith("Lese Register: POWERMON_TotalUsedCharge"))
// { R.POWERMON_TotalUsedCharge = lc.Replace("Lese Register: POWERMON_TotalUsedCharge", ""); }
// if (lc.StartsWith("Lese Register: POWERMON_TotalUsedSeconds"))
// { R.POWERMON_TotalUsedSeconds = lc.Replace("Lese Register: POWERMON_TotalUsedSeconds", ""); }
// if (lc.StartsWith("Lese Register: GENESISFLOW_LedMode"))
// { R.GENESISFLOW_LedMode = lc.Replace("Lese Register: GENESISFLOW_LedMode", ""); }
// if (lc.StartsWith("Lese Register: METROLOGYASST_PulseWeight"))
// { R.METROLOGYASST_PulseWeight = lc.Replace("Lese Register: METROLOGYASST_PulseWeight", ""); }
// if (lc.StartsWith("Lese Register: METROLOGYASST_PulseMode"))
// { R.METROLOGYASST_PulseMode = lc.Replace("Lese Register: METROLOGYASST_PulseMode", ""); }
// if (lc.StartsWith("Lese Register: METROLOGYASST_PulseLength"))
// { R.METROLOGYASST_PulseLength = lc.Replace("Lese Register: METROLOGYASST_PulseLength", ""); }
// if (lc.StartsWith("Lese Register: METROLOGYASST_PulseEvenDistribution"))
// { R.METROLOGYASST_PulseEvenDistribution = lc.Replace("Lese Register: METROLOGYASST_PulseEvenDistribution", ""); }
// if (lc.StartsWith("Lese Register: METROLOGYASST_PulseResolution"))
// { R.METROLOGYASST_PulseResolution = lc.Replace("Lese Register: METROLOGYASST_PulseResolution", ""); }
// if (lc.StartsWith("Lese Register: IRDA_PulseReportRate"))
// { R.IRDA_PulseReportRate = lc.Replace("Lese Register: IRDA_PulseReportRate", ""); }
// if (lc.StartsWith("Lese Register: IRDA_AdapterID "))
// { R.IRDA_AdapterID = lc.Replace("Lese Register: IRDA_AdapterID ", ""); }
// if (lc.StartsWith("Lese Register: GENESISFLOW_SampleRate "))
// { R.GENESISFLOW_SampleRate = lc.Replace("Lese Register: GENESISFLOW_SampleRate ", ""); }
// if (lc.StartsWith("Lese Register: GENESISFLOW_ScaledBilling "))
// { R.GENESISFLOW_ScaledBilling = lc.Replace("Lese Register: GENESISFLOW_ScaledBilling ", ""); }
// if (lc.StartsWith("Read register: POWERMON_BatteryVoltage"))
// { R.POWERMON_BatteryVoltage = lc.Replace("Read register: POWERMON_BatteryVoltage", ""); }
// if (lc.StartsWith("Read register: POWERMON_BatteryQuantity"))
// { R.POWERMON_BatteryQuantity = lc.Replace("Read register: POWERMON_BatteryQuantity", ""); }
// if (lc.StartsWith("Read register: POWERMON_TotalUsedCharge"))
// { R.POWERMON_TotalUsedCharge = lc.Replace("Read register: POWERMON_TotalUsedCharge", ""); }
// if (lc.StartsWith("Read register: POWERMON_TotalUsedSeconds"))
// { R.POWERMON_TotalUsedSeconds = lc.Replace("Read register: POWERMON_TotalUsedSeconds", ""); }
// if (lc.StartsWith("Read register: GENESISFLOW_LedMode"))
// { R.GENESISFLOW_LedMode = lc.Replace("Read register: GENESISFLOW_LedMode", ""); }
// if (lc.StartsWith("Read register: METROLOGYASST_PulseWeight"))
// { R.METROLOGYASST_PulseWeight = lc.Replace("Read register: METROLOGYASST_PulseWeight", ""); }
// if (lc.StartsWith("Read register: METROLOGYASST_PulseMode"))
// { R.METROLOGYASST_PulseMode = lc.Replace("Read register: METROLOGYASST_PulseMode", ""); }
// if (lc.StartsWith("Read register: METROLOGYASST_PulseLength"))
// { R.METROLOGYASST_PulseLength = lc.Replace("Read register: METROLOGYASST_PulseLength", ""); }
// if (lc.StartsWith("Read register: METROLOGYASST_PulseEvenDistribution"))
// { R.METROLOGYASST_PulseEvenDistribution = lc.Replace("Read register: METROLOGYASST_PulseEvenDistribution", ""); }
// if (lc.StartsWith("Read register: METROLOGYASST_PulseResolution"))
// { R.METROLOGYASST_PulseResolution = lc.Replace("Read register: METROLOGYASST_PulseResolution", ""); }
// if (lc.StartsWith("Read register: IRDA_PulseReportRate"))
// { R.IRDA_PulseReportRate = lc.Replace("Read register: IRDA_PulseReportRate", ""); }
// if (lc.StartsWith("Read register: IRDA_AdapterID "))
// { R.IRDA_AdapterID = lc.Replace("Read register: IRDA_AdapterID ", ""); }
// if (lc.StartsWith("Read register: GENESISFLOW_SampleRate "))
// { R.GENESISFLOW_SampleRate = lc.Replace("Read register: GENESISFLOW_SampleRate ", ""); }
// if (lc.StartsWith("Read register: GENESISFLOW_ScaledBilling "))
// { R.GENESISFLOW_ScaledBilling = lc.Replace("Read register: GENESISFLOW_ScaledBilling ", ""); }
// if (lc.StartsWith("Password file restore succeeded"))
// {
// R.PwFileUpdate = true;
// }
// if (lc.StartsWith("Paßwortdatei erfolgreich wiederhergestellt"))
// {
// R.PwFileUpdate = true;
// }
// //
// }
// if (!string.IsNullOrEmpty(R.PcbId))
// {
// if (listRes.ContainsKey(R.PcbId))
// {
// listRes[R.PcbId].Add(R);
// }
// else
// {
// listRes.Add(R.PcbId, new List<resultRep>() { R });
// }
// }
//}
//var listEOL = new Dictionary<string, List<resultRep>>();
//foreach (var item in listRes)
//{
// Console.WriteLine($"'{item.Key}', ");
//}
//Console.ReadLine();
//foreach (var line in File.ReadAllLines("E:\\bat\\History.csv"))
//{
// var csvelm = line.Split(';');
// var cPcbId = csvelm[1];
// if (cPcbId.Length > 5)
// {
// var cAddress = csvelm[2];
// var cValue = csvelm[3];
// var cDate = csvelm[4];
// }
//}
var listEOL = new Dictionary<int, List<resultRep>>();
var pcbCheck = new List<int>() {
222830007,
222830022 ,
222830068 ,
222830076 ,
222830077 ,
222830097 ,
222830099 ,
222830101 ,
222830109 ,
222830112 ,
222830118 ,
222830121 ,
222830153 ,
222830172 ,
222830174 ,
222830213 ,
222830249 ,
222830296 ,
230930011 ,
230930019 ,
230930032 ,
230930049 ,
230930051 ,
230930059 ,
230930122 ,
230930127 ,
230930128 ,
230930129 ,
230930136 ,
230930137 ,
230930143 ,
230930149 ,
230930227 ,
230930228 ,
230930237 ,
230930277 ,
230930279 ,
230930280 ,
230930281 ,
230930299 ,
230930308 ,
230930325 ,
230930329 ,
230930382 ,
230930387 ,
230930391 ,
230930396 ,
230930403 ,
230930408 ,
230930411 };
#endregion
if (true)
{
foreach (var item in pcbCheck)
{
//Console.WriteLine($"'{item.Key}', ");
//foreach (var re in item.Value)
//{
// re.Calc();
//}
var sbq = new StringBuilder();
sbq.AppendLine(" declare @PcbID as nvarchar(50) ");
sbq.AppendLine(" declare @Adress as nvarchar(50) ");
sbq.AppendLine($" set @PcbID = '{item}' ");
sbq.AppendLine(" SELECT [ID] ");
sbq.AppendLine(" ,[PcbId] ");
sbq.AppendLine(" ,[Address] ");
sbq.AppendLine(" ,[Value] ");
sbq.AppendLine(" ,[date] ");
sbq.AppendLine(" FROM [Auftrag].[dbo].[GenesisMeterRegisterHistory] ");
sbq.AppendLine(" where PcbId = @PcbID ");
sbq.AppendLine(" and (@Adress is null or [Address] = @Adress ) ");
sbq.AppendLine(" order by [date] desc ");
using (var dataacces = new SqlDataAccess("Data Source=SLASQL01.emea.sensus.net;;Initial Catalog=Auftrag;Persist Security Info=False;User ID=GenesisPasswordService;Password=PcbID;Connection Timeout=120"))
{
var dt = dataacces.ExecuteQuery(sbq.ToString());
foreach (DataRow row in dt.Rows)
{
resultRep currentRespons;
if (!listEOL.ContainsKey(item))
{
listEOL.Add(item, new List<resultRep>());
currentRespons = new resultRep() { DataDate = (DateTime)row["date"], PcbId = item.ToString(), Source = "PROD" };
listEOL[item].Add(currentRespons);
}
else
{
if (listEOL[item].Any(r => r.DataDate.Date == ((DateTime)row["date"]).Date))
{
currentRespons = listEOL[item].First(r => r.DataDate.Date == ((DateTime)row["date"]).Date);
}
else
{
currentRespons = new resultRep() { DataDate = (DateTime)row["date"], PcbId = item.ToString(), Source = "PROD" };
listEOL[item].Add(currentRespons);
}
}
switch (row["Address"].ToString())
{
case "12-12":
currentRespons.METROLOGYASST_PulseResolution = row["Value"].ToString();
break;
case "12-11":
currentRespons.METROLOGYASST_PulseEvenDistribution = row["Value"].ToString();
break;
case "12-02":
currentRespons.METROLOGYASST_PulseWeight = row["Value"].ToString();
break;
case "12-03":
currentRespons.METROLOGYASST_PulseMode = row["Value"].ToString();
break;
case "12-04":
currentRespons.METROLOGYASST_PulseLength = row["Value"].ToString();
break;
case "0F-13":
currentRespons.GENESISFLOW_ScaledBilling = row["Value"].ToString();
break;
case "0F-00":
currentRespons.GENESISFLOW_SampleRate = row["Value"].ToString();
break;
case "0F-16":
currentRespons.GENESISFLOW_LedMode = row["Value"].ToString();
break;
case "01-09":
var strTmp = row["Value"].ToString();
if (strTmp.Length > "D5-7A-AC-24-00-00-00-00".Length)
{
strTmp.Substring(0, "D5-7A-AC-24-00-00-00-00".Length);
}
if (String.IsNullOrEmpty(currentRespons.POWERMON_TotalUsedCharge))
{
currentRespons.POWERMON_TotalUsedCharge = strTmp;
}
else
{
if (strTmp.Length == "D5-7A-AC-24-00-00-00-00".Length)
{
currentRespons.POWERMON_TotalUsedCharge = strTmp;
}
else
{
}
}
break;
case "01-0A":
if (row["Value"].ToString() != "00-00-00-00")
{
currentRespons.POWERMON_TotalUsedSeconds = row["Value"].ToString();
}
break;
case "01-00":
if (row["Value"].ToString() != "00-00-00-00")
{
currentRespons.POWERMON_BatteryVoltage = row["Value"].ToString();
}
break;
case "01-04":
currentRespons.POWERMON_BatteryQuantity = row["Value"].ToString();
break;
case "14-09":
if (row["Value"].ToString() != "00-00-00-00")
{
currentRespons.IRDA_AdapterID = row["Value"].ToString();
}
break;
case "14-00":
if (row["Value"].ToString() != "00-00-00-00")
{
currentRespons.IRDA_PulseReportRate = row["Value"].ToString();
}
break;
default:
break;
}
}
}
}
}
var pcbDate = new Dictionary<string, DateTime>();
var sbLEDQery = new StringBuilder();
sbLEDQery.AppendLine("select * from GenesisMeterRegisterHistory where PcbId in ( ");
sbLEDQery.AppendLine(" ");
sbLEDQery.AppendLine("'230930011', ");
sbLEDQery.AppendLine("'230930127', ");
sbLEDQery.AppendLine("'230930281', ");
sbLEDQery.AppendLine("'230930129', ");
sbLEDQery.AppendLine("'230930137', ");
sbLEDQery.AppendLine("'230930280', ");
sbLEDQery.AppendLine("'230930411', ");
sbLEDQery.AppendLine("'230930049', ");
sbLEDQery.AppendLine("'230930279', ");
sbLEDQery.AppendLine("'222830068', ");
sbLEDQery.AppendLine("'222830076', ");
sbLEDQery.AppendLine("'222830174', ");
sbLEDQery.AppendLine("'222830121', ");
sbLEDQery.AppendLine("'222830112', ");
sbLEDQery.AppendLine("'230930059', ");
sbLEDQery.AppendLine("'222830022', ");
sbLEDQery.AppendLine("'222830099', ");
sbLEDQery.AppendLine("'230930122', ");
sbLEDQery.AppendLine("'230930051', ");
sbLEDQery.AppendLine("'230930227', ");
sbLEDQery.AppendLine("'230930382', ");
sbLEDQery.AppendLine("'230930391', ");
sbLEDQery.AppendLine("'230930408', ");
sbLEDQery.AppendLine("'230930308', ");
sbLEDQery.AppendLine("'222830109', ");
sbLEDQery.AppendLine("'230930128', ");
sbLEDQery.AppendLine("'222830077', ");
sbLEDQery.AppendLine("'222830101', ");
sbLEDQery.AppendLine("'222830007', ");
sbLEDQery.AppendLine("'222830249', ");
sbLEDQery.AppendLine("'230930019', ");
sbLEDQery.AppendLine("'230930299', ");
sbLEDQery.AppendLine("'230930396', ");
sbLEDQery.AppendLine("'230930387', ");
sbLEDQery.AppendLine("'222830118', ");
sbLEDQery.AppendLine("'230930403', ");
sbLEDQery.AppendLine("'230930228', ");
sbLEDQery.AppendLine("'222830097', ");
sbLEDQery.AppendLine("'230930237', ");
sbLEDQery.AppendLine("'230930032', ");
sbLEDQery.AppendLine("'230930149', ");
sbLEDQery.AppendLine("'222830213', ");
sbLEDQery.AppendLine("'230930143', ");
sbLEDQery.AppendLine("'230930136', ");
sbLEDQery.AppendLine("'230930329', ");
sbLEDQery.AppendLine("'230930277', ");
sbLEDQery.AppendLine("'230930325', ");
sbLEDQery.AppendLine("'222830296', ");
sbLEDQery.AppendLine("'222830153', ");
sbLEDQery.AppendLine("'222830172' ");
sbLEDQery.AppendLine(") ");
sbLEDQery.AppendLine("and Address in ('0F-16', '0F-00', '0F-22') order by PcbId, date");
var dic = new Dictionary<string, List<GreenHistoryItem>>();
var dateTimeold = new DateTime();
var oldValue = false;
var oldPCbID = "";
using (var dataacces = new SqlDataAccess("Data Source=SLASQL01.emea.sensus.net;;Initial Catalog=Auftrag;Persist Security Info=False;User ID=GenesisPasswordService;Password=PcbID;Connection Timeout=120"))
{
var dt = dataacces.ExecuteQuery(sbLEDQery.ToString());
foreach (DataRow row in dt.Rows)
{
var time = (DateTime)row["date"];
var pcb = (string)row["PcbId"];
var reg = (string)row["Address"];
var strVal = (string)row["Value"];
bool State = false;
var re = "";
GreenHistoryItem last;
if (!dic.ContainsKey(pcb))
{
dic.Add(pcb, new List<GreenHistoryItem>());
dic[pcb].Add(new GreenHistoryItem());
}
last = dic[pcb].Last();
var newItem = new GreenHistoryItem() { Time = time, Idel = last.Idel, SR = last.SR, LedMode = last.LedMode, Remark = "int" };
switch (reg)
{
case "0F-16":
if (strVal == "00-00-00-00")
{
newItem.LedMode = false;
re = "LED Mode off";
}
else
{
re = "LED Mode On";
newItem.LedMode = true; ;
}
break;
case "0F-22":
if (strVal == "00-00-00-00")
{
re = "Trigger active";
newItem.Idel = false;
}
else
{
re = "Trigger idel";
newItem.Idel = true;
}
break;
case "0F-21":
re = "Trigger active";
newItem.Idel = false;
break;
case "0F-00":
if (strVal == "00-00-00-02")
{
newItem.SR = 2;
re = "Sampel rate 2";
}
else
{
newItem.SR = 10;
re = "Sampel rate < 2";
}
break;
default:
break;
}
newItem.Cal();
dic[pcb].Add(newItem);
oldPCbID = pcb;
}
}
Console.WriteLine("key;time;highconsumption;idel;ledmodeSR;totalConsomtion;add seconds;");
var dicS = new Dictionary<string, double>();
foreach (var item in dic)
{
var s = 0.0;
int c = -1;
foreach (var gItem in item.Value)
{
if (c >= 0)
{
if (!item.Value[c].HighConsumption)
{
//war aus
}
else if (item.Value[c].HighConsumption)
{
gItem.SecondsInHighConsumption = (gItem.Time - item.Value[c].Time).TotalSeconds;
s = s + gItem.SecondsInHighConsumption;
}
}
if (item.Key == "230930325" || item.Key == "222830153" || item.Key == "230930329")
{
Console.WriteLine($"{item.Key};{gItem.Time};{gItem.HighConsumption};{gItem.Idel};{gItem.LedMode};{gItem.SR};{gItem.SecondsInHighConsumption}; {s}");
}
c = c + 1;
}
dicS.Add(item.Key.ToString(), s);
}
Console.WriteLine("PcbId;Date;RemainingLifeTimeYears;DrainedBatteryLoadPercent;ExceededLifeTime_s;DrainedBatteryLoad_uAs;UNTLimit;unt Pass;Green LED days");
foreach (var item in listEOL)
{
if (item.Value != null && item.Value.Any())
{
item.Value.ForEach(c => c.Calc());
foreach (var rItem in item.Value.OrderByDescending(o => o.DataDate))
{
if (rItem.Calculated)
{
var s = 0.0;
if (dicS.ContainsKey(rItem.PcbId))
{
s = dicS[rItem.PcbId];
}
Console.WriteLine($"{rItem.PcbId};{rItem.DataDate};{rItem.RemainingLifeTimeYears};{rItem.DrainedBatteryLoadPercent};{rItem.ExceededLifeTime_s};{rItem.DrainedBatteryLoad_uAs};{rItem.UNTLimit};{rItem.DrainedBatteryLoad_uAs>= rItem.UNTLimit };{s/60/60/24}");
break;
}
}
}
}
foreach (var item in dic)
{
Console.WriteLine($"{item.Key};{item.Value}");
}
Console.ReadLine();
//foreach (var item in listRes)
//{
// if (item.Value.Any(a => a.PwFileUpdate))
// {
// foreach (var v in item.Value)
// {
// v.Calc();
// Console.WriteLine($"{item.Key}; {v.DataDate}");
// }
// }
//}
////foreach (var item in listRes)
////{
//// if (item.Value.Any(a => !a.PwFileUpdate))
//// {
//// Console.WriteLine($"{item.Key}; Prob Good");
//// }
////}
//foreach (var item in listEOL.Where(c => c.Value.Any(r => r.Calculated)))
//{
//}
//var sb = new StringBuilder();
//foreach (var item in listRes)
//{
// var Reps = item.Value.OrderBy(o => o.DataDate);
// var SbDate = new StringBuilder();
// var SbSource = new StringBuilder();
// var sbCore = new StringBuilder();
// var sbCustomerName = new StringBuilder();
// var sbDrainedBatteryLoadPercent = new StringBuilder();
// var sbDrainedBatteryLoad_uAs = new StringBuilder();
// var sbExceededLifeTime_s = new StringBuilder();
// var sbPOWERMON_BatteryQuantity = new StringBuilder();
// var sbRemainingLifeTimeYears = new StringBuilder();
// var sbFW = new StringBuilder();
// var sbGENESISFLOW_LedMode = new StringBuilder();
// var sbGENESISFLOW_SampleRate = new StringBuilder();
// var sbGENESISFLOW_ScaledBilling = new StringBuilder();
// var sbIRDA_AdapterID = new StringBuilder();
// var sbIRDA_PulseReportRate = new StringBuilder();
// var sbMETROLOGYASST_PulseEvenDistribution = new StringBuilder();
// var sbMETROLOGYASST_PulseLength = new StringBuilder();
// var sbMETROLOGYASST_PulseMode = new StringBuilder();
// var sbMETROLOGYASST_PulseResolution = new StringBuilder();
// var sbMETROLOGYASST_PulseWeight = new StringBuilder();
// foreach (var rep in Reps.Where(c => c.Calculated))
// {
// SbDate.Append(rep.DataDate).Append(';');
// SbSource.Append(rep.Source).Append(';');
// sbCore.Append(rep.Core).Append(';');
// sbCustomerName.Append(rep.CustomerName).Append(';');
// sbDrainedBatteryLoadPercent.Append(rep.DrainedBatteryLoadPercent).Append(';');
// sbDrainedBatteryLoad_uAs.Append(rep.DrainedBatteryLoad_uAs).Append(';');
// sbExceededLifeTime_s.Append(rep.ExceededLifeTime_s).Append(';');
// sbPOWERMON_BatteryQuantity.Append(rep.POWERMON_BatteryQuantity).Append(';');
// sbRemainingLifeTimeYears.Append(rep.RemainingLifeTimeYears).Append(';');
// sbFW.Append(rep.FW).Append(';');
// sbGENESISFLOW_LedMode.Append(rep.GENESISFLOW_LedMode).Append(';');
// sbGENESISFLOW_SampleRate.Append(rep.GENESISFLOW_SampleRate).Append(';');
// sbGENESISFLOW_ScaledBilling.Append(rep.GENESISFLOW_ScaledBilling).Append(';');
// sbIRDA_AdapterID.Append(rep.IRDA_AdapterID).Append(';');
// sbIRDA_PulseReportRate.Append(rep.IRDA_PulseReportRate).Append(';');
// sbMETROLOGYASST_PulseEvenDistribution.Append(rep.METROLOGYASST_PulseEvenDistribution).Append(';');
// sbMETROLOGYASST_PulseLength.Append(rep.METROLOGYASST_PulseLength).Append(';');
// sbMETROLOGYASST_PulseMode.Append(rep.METROLOGYASST_PulseMode).Append(';');
// sbMETROLOGYASST_PulseResolution.Append(rep.METROLOGYASST_PulseResolution).Append(';');
// sbMETROLOGYASST_PulseWeight.Append(rep.METROLOGYASST_PulseWeight).Append(';');
// }
// if (Reps.Any(c => c.Calculated && c.Source == "PROD") && Reps.Any(c => c.Calculated && c.Source == "CUST"))
// {
// sb.AppendLine($"PCBId;{item.Key};");
// sb.AppendLine($"Date;{SbDate}");
// sb.AppendLine($"Source;{SbSource}");
// sb.AppendLine($"Core;{sbCore}");
// sb.AppendLine($"CustomerName;{sbCustomerName}");
// sb.AppendLine($"DrainedBatteryLoadPercent;{sbDrainedBatteryLoadPercent}");
// sb.AppendLine($"DrainedBatteryLoad_uAs;{sbDrainedBatteryLoad_uAs}");
// sb.AppendLine($"ExceededLifeTime_s;{sbExceededLifeTime_s}");
// sb.AppendLine($"POWERMON_BatteryQuantity;{sbPOWERMON_BatteryQuantity}");
// sb.AppendLine($"RemainingLifeTimeYears;{sbRemainingLifeTimeYears}");
// sb.AppendLine($"FW;{sbFW}");
// sb.AppendLine($"GENESISFLOW_LedMode;{sbGENESISFLOW_LedMode}");
// sb.AppendLine($"GENESISFLOW_SampleRate;{sbGENESISFLOW_SampleRate}");
// sb.AppendLine($"GENESISFLOW_ScaledBilling;{sbGENESISFLOW_ScaledBilling}");
// sb.AppendLine($"IRDA_AdapterID;{sbIRDA_AdapterID}");
// sb.AppendLine($"IRDA_PulseReportRate;{sbIRDA_PulseReportRate}");
// sb.AppendLine($"METROLOGYASST_PulseEvenDistribution;{sbMETROLOGYASST_PulseEvenDistribution}");
// sb.AppendLine($"METROLOGYASST_PulseLength;{sbMETROLOGYASST_PulseLength}");
// sb.AppendLine($"METROLOGYASST_PulseMode;{sbMETROLOGYASST_PulseMode}");
// sb.AppendLine($"METROLOGYASST_PulseResolution;{sbMETROLOGYASST_PulseResolution}");
// sb.AppendLine($"METROLOGYASST_PulseWeight;{sbMETROLOGYASST_PulseWeight}");
// }
//}
//sb.AppendLine();
//sb.AppendLine();
//sb.AppendLine($"PCbID;LastProdDate;LastCUSTDate;TotalDays;LastProd_DrainedBatteryLoadPercent ;LastCUST_DrainedBatteryLoadPercent;LastProd_RemainingLifeTimeYears ;LastCUST_RemainingLifeTimeYears; ");
//foreach (var item in listRes)
//{
// if (item.Value.Any(c => c.Calculated && c.Source == "PROD") && item.Value.Any(c => c.Calculated && c.Source == "CUST"))
// {
// var LastProd = item.Value.First(f => f.DataDate == item.Value.Where(c => c.Source == "PROD").Max(m => m.DataDate));
// var LastCUST = item.Value.First(f => f.DataDate == item.Value.Where(c => c.Source == "CUST").Max(m => m.DataDate));
// if (LastProd.DataDate < LastCUST.DataDate)
// {
// var ts = LastCUST.DataDate - LastProd.DataDate;
// sb.AppendLine($"{item.Key};{LastProd.DataDate};{LastCUST.DataDate };{ts.TotalDays};{LastProd.DrainedBatteryLoadPercent} ;{LastCUST.DrainedBatteryLoadPercent};{LastProd.RemainingLifeTimeYears} ;{LastCUST.RemainingLifeTimeYears}; ");
// }
// }
//}
//File.WriteAllText("output.csv", sb.ToString());
Console.ReadLine();
}
}
}