コード例 #1
0
        /// <summary>
        /// Get battery profile
        /// </summary>
        /// <returns>Battery profile</returns>
        public BatteryProfile GetBatteryProfile()
        {
            var batteryProfile = new BatteryProfile();

            var response = _piJuice.ReadCommand(PiJuiceCommand.BatteryProfile, 14);

            batteryProfile.Capacity           = new ElectricCharge(BinaryPrimitives.ReadInt16LittleEndian(response), ElectricChargeUnit.MilliampereHour);
            batteryProfile.ChargeCurrent      = new ElectricCurrent(response[2] * 75 + 550, ElectricCurrentUnit.Milliampere);
            batteryProfile.TerminationCurrent = new ElectricCurrent(response[3] * 50 + 50, ElectricCurrentUnit.Milliampere);
            batteryProfile.RegulationVoltage  = new ElectricPotential(response[4] * 20 + 3500, ElectricPotentialUnit.Millivolt);
            batteryProfile.CutOffVoltage      = new ElectricPotential(response[5] * 20, ElectricPotentialUnit.Millivolt);
            batteryProfile.TemperatureCold    = new Temperature(response[6], TemperatureUnit.DegreeCelsius);
            batteryProfile.TemperatureCool    = new Temperature(response[7], TemperatureUnit.DegreeCelsius);
            batteryProfile.TemperatureWarm    = new Temperature(response[8], TemperatureUnit.DegreeCelsius);
            batteryProfile.TemperatureHot     = new Temperature(response[9], TemperatureUnit.DegreeCelsius);
            batteryProfile.NegativeTemperatureCoefficientB          = (response[11] << 8) | response[10];
            batteryProfile.NegativeTemperatureCoefficientResistance = new ElectricResistance(((response[13] << 8) | response[12]) * 10, ElectricResistanceUnit.Ohm);

            return(batteryProfile);
        }
コード例 #2
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            string filePath;

            using (var sf = new SaveFileDialog {
                Filter = FileFilters.XmlFilter
            })
            {
                if (sf.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                filePath = sf.FileName;
            }

            try
            {
                using (var fs = File.Open(filePath, FileMode.Create))
                {
                    var data = new BatteryProfile
                    {
                        Cutoff = CutoffUpDown.Value,
                        Points = m_curveControls.Select(x => new BatteryProfilePoint
                        {
                            Percent = (byte)x.PercentsUpDown.Value,
                            Voltage = x.VoltsUpDown.Value
                        }).ToArray()
                    };

                    Serializer.Write(data, fs);
                }
            }
            catch (Exception ex)
            {
                Trace.Warn(ex);
                InfoBox.Show("An error occurred during battery profile export.");
            }
        }
コード例 #3
0
ファイル: PiJuiceConfig.cs プロジェクト: mauricio-bv/iot
        /// <summary>
        /// Set a custom battery profile
        /// </summary>
        /// <param name="batteryProfile">Custom battery profile</param>
        public void SetCustomBatteryProfile(BatteryProfile batteryProfile)
        {
            var data = new byte[14];

            data[0]  = (byte)((int)(batteryProfile.Capacity.MilliampereHours) & 0xFF);
            data[1]  = (byte)(((int)(batteryProfile.Capacity.MilliampereHours) >> 8) & 0xFF);
            data[2]  = (byte)Math.Round((batteryProfile.ChargeCurrent.Milliamperes - 550) / 75, 0, MidpointRounding.AwayFromZero);
            data[3]  = (byte)Math.Round((batteryProfile.TerminationCurrent.Milliamperes - 50) / 50, 0, MidpointRounding.AwayFromZero);
            data[4]  = (byte)Math.Round((batteryProfile.RegulationVoltage.Millivolts - 3500) / 20, 0, MidpointRounding.AwayFromZero);
            data[5]  = (byte)Math.Round(batteryProfile.CutOffVoltage.Millivolts / 20, 0, MidpointRounding.AwayFromZero);
            data[6]  = (byte)batteryProfile.TemperatureCold.DegreesCelsius;
            data[7]  = (byte)batteryProfile.TemperatureCool.DegreesCelsius;
            data[8]  = (byte)batteryProfile.TemperatureWarm.DegreesCelsius;
            data[9]  = (byte)batteryProfile.TemperatureHot.DegreesCelsius;
            data[10] = (byte)(batteryProfile.NegativeTemperatureCoefficientB & 0xFF);
            data[11] = (byte)((batteryProfile.NegativeTemperatureCoefficientB >> 8) & 0xFF);
            int ntcResistance = (int)batteryProfile.NegativeTemperatureCoefficientResistance.Ohms / 10;

            data[12] = (byte)(ntcResistance & 0xFF);
            data[13] = (byte)((ntcResistance >> 8) & 0xFF);

            _piJuice.WriteCommandVerify(PiJuiceCommand.BatteryProfile, data);
        }