public PVPublisherService() { InitializeComponent(); ApplicationSettings = new ApplicationSettings(); SystemServices = new MackayFisher.Utilities.SystemServices(ApplicationSettings.BuildFileName("PVPublisher.log")); ApplicationSettings.SetSystemServices(SystemServices); LoadLogSettings(); SystemServices.LogMessage("PVPublisher", "Service starting", LogEntryType.Information); }
public static void FormatDump(byte[] buffer, int startByte, int length, SystemServices systemServices) { const int bytesPerLine = 40; int lines = (length + bytesPerLine - 1) / bytesPerLine; int start = startByte; int scale = GetScale(length); String format = "D" + scale.ToString(); String header = PadString("", scale * 2 + 1); // spaces over position range - " " for "00-19" if (lines > 1) { for (int i = 0; i < bytesPerLine; i++) header += PadString(i.ToString(), 3, ' ', false); header += " "; for (int i = 0; i < bytesPerLine; i++) header += (i % 10).ToString(); } else { header = PadString("", scale * 2 + 1); // spaces over position range - " " for "00-19" for (int i = 0; i < length; i++) header += PadString(i.ToString(), 3, ' ', false); header += " "; for (int i = 0; i < length; i++) header += (i % 10).ToString(); } systemServices.LogMessage("", header, LogEntryType.Format); int pos = 0; int line = 0; while (line < lines) { int len; if ((pos + bytesPerLine) <= length) len = bytesPerLine; else len = length - pos; String lineRange = pos.ToString(format) + "-" + (pos+len-1).ToString(format); String hex = ByteBuffer.BytesToHex(buffer, " ", len, start); String ascii = ByteBuffer.BytesToAscii(buffer, "", len, start); if (line > 0 && len < bytesPerLine) { hex = PadString(hex, (bytesPerLine * 3)-1); ascii = PadString(ascii, bytesPerLine); } systemServices.LogMessage("", lineRange + " " + hex + " " + ascii, LogEntryType.Format); line++; pos += bytesPerLine; start += bytesPerLine; } }
public void UpdateEnergy(SystemServices services) { DateTime now = DateTime.Now; TimeSpan elapsed = now - LastTime; Etime = Etime.Add(elapsed); LastTime = now; PowerPV = PowerFromTime(Etime, 10000.0) * PowerScale; PowerAC = PowerPV * 0.95; //Double energy = (PowerAC / 1000.0) * elapsed.TotalHours * EnergyScale / PowerScale; Double energy = (PowerAC / 1000.0) * elapsed.TotalHours * EnergyScale / PowerScale; EToday += energy; ETotal += (PowerAC / 1000.0) * elapsed.TotalHours * EnergyTotalScale / PowerScale; if (PowerPV > 0.0) { VoltagePV = 300.0 * VoltageScale; CurrentPV = ((PowerPV / PowerScale) / (VoltagePV / VoltageScale)) * CurrentScale; CurrentAC = ((PowerAC / PowerScale) / (VoltageAC / VoltageScale)) * CurrentScale; } else { CurrentAC = 0.0; VoltagePV = 0.0; CurrentPV = 0.0; PowerAC = 0.0; PowerPV = 0.0; } services.LogMessage("UpdateEnergy", "Power: " + PowerAC + " - Duration: " + elapsed.TotalSeconds + " - Energy: " + (energy / EnergyScale) + " - EnergyTotal: " + (EToday / EnergyScale), LogEntryType.Information); }