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);
        }
示例#2
0
        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);
 }