private void UpdateAvailabilityCharts(List <GpuLogger.Benchmark.Availability> availabilityTimeStamps, IList <ChartFriendlySensorValue> friendlySensorValues) { chartSensor.Series["AvailabilityTemperatureSeries"].Points.Clear(); chartSensor.Series["AvailabilityPingSeries"].Points.Clear(); DateTime firstTimeStamp = friendlySensorValues[0].TimeStamp; double chartTempMaximum = friendlySensorValues.Max(value => value.Temperature) * 1.2; double chartTempMinimum = friendlySensorValues.Min(value => value.Temperature) * 0.8; double chartPingMaximum = friendlySensorValues.SelectMany( value => new[] { value.MiningUrlPing, value.NetworkRigPing, value.ShareAnswerPing }).Max() * 1.2; const double chartPingMinimum = 0; for (int index = 0; index < availabilityTimeStamps.Count - 1; index++) { GpuLogger.Benchmark.Availability availabilityTimeStamp = availabilityTimeStamps[index]; DateTime dateTime = GuiHelper.UnixTimeStampToDateTime(availabilityTimeStamp.TimeStamp); if (!availabilityTimeStamp.Available && dateTime > firstTimeStamp) { GpuLogger.Benchmark.Availability nextAvailabilityTimeStamp = availabilityTimeStamps[index + 1]; DateTime nextDateTime = GuiHelper.UnixTimeStampToDateTime(nextAvailabilityTimeStamp.TimeStamp); chartSensor.Series["AvailabilityTemperatureSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartTempMinimum); chartSensor.Series["AvailabilityTemperatureSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartTempMaximum + 1); chartSensor.Series["AvailabilityTemperatureSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartTempMaximum + 1); chartSensor.Series["AvailabilityTemperatureSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartTempMinimum); chartSensor.Series["AvailabilityPingSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartPingMinimum); chartSensor.Series["AvailabilityPingSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartPingMaximum + 1); chartSensor.Series["AvailabilityPingSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartPingMaximum + 1); chartSensor.Series["AvailabilityPingSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartPingMinimum); } } chartSensor.ChartAreas["ChartAreaTemperatureFan"].AxisY.Maximum = chartTempMaximum; chartSensor.ChartAreas["ChartAreaTemperatureFan"].AxisY.Minimum = chartTempMinimum; chartSensor.ChartAreas["ChartAreaPingFrequency"].AxisY.Maximum = chartPingMaximum; chartSensor.ChartAreas["ChartAreaPingFrequency"].AxisY.Minimum = chartPingMinimum; }
private void UpdateAvailabilityCharts(List <GpuLogger.Benchmark.Availability> availabilityTimeStamps, IList <ChartFriendlyHashEntry> friendlyHashEntry) { chartHash.Series["AvailabilityFoundSeries"].Points.Clear(); chartHash.Series["AvailabilityDifficultySeries"].Points.Clear(); DateTime firstTimeStamp = friendlyHashEntry[0].TimeStamp; const double chartFoundMaximum = 5; const double chartFoundMinimum = 0; double chartDifficultyMaximum = friendlyHashEntry.Max(value => value.Difficulty) * 1.2; const double chartDifficultyMinimum = 0;; for (int index = 0; index < availabilityTimeStamps.Count - 1; index++) { GpuLogger.Benchmark.Availability availabilityTimeStamp = availabilityTimeStamps[index]; DateTime dateTime = GuiHelper.UnixTimeStampToDateTime(availabilityTimeStamp.TimeStamp); if (!availabilityTimeStamp.Available && dateTime > firstTimeStamp) { GpuLogger.Benchmark.Availability nextAvailabilityTimeStamp = availabilityTimeStamps[index + 1]; DateTime nextDateTime = GuiHelper.UnixTimeStampToDateTime(nextAvailabilityTimeStamp.TimeStamp); chartHash.Series["AvailabilityFoundSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartFoundMinimum); chartHash.Series["AvailabilityFoundSeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartFoundMaximum + 1); chartHash.Series["AvailabilityFoundSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartFoundMaximum + 1); chartHash.Series["AvailabilityFoundSeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartFoundMinimum); chartHash.Series["AvailabilityDifficultySeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartDifficultyMinimum); chartHash.Series["AvailabilityDifficultySeries"].Points.AddXY(dateTime + new TimeSpan(0, 0, 1), chartDifficultyMaximum + 1); chartHash.Series["AvailabilityDifficultySeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartDifficultyMaximum + 1); chartHash.Series["AvailabilityDifficultySeries"].Points.AddXY(nextDateTime - new TimeSpan(0, 0, 1), chartDifficultyMinimum); } } chartHash.ChartAreas["ChartAreaFoundHashrate"].AxisY2.Maximum = chartFoundMaximum; chartHash.ChartAreas["ChartAreaFoundHashrate"].AxisY2.Minimum = chartFoundMinimum; chartHash.ChartAreas["ChartAreaDifficultyHashcount"].AxisY2.Maximum = chartDifficultyMaximum; chartHash.ChartAreas["ChartAreaDifficultyHashcount"].AxisY2.Minimum = chartDifficultyMinimum; }