Как проверить, существует ли батарея в системе, а затем получить процент батареи в C# для моего приложения WPF - PullRequest
0 голосов
/ 08 января 2020

Я хочу проверить, есть ли в системе аккумулятор или нет, а затем узнать процент оставшегося заряда аккумулятора. Я не уверен, как проверить, существует ли батарея, но вот код, который я пытался получить процент оставшегося заряда батареи , который не работает, так как код возвращает только 0 :

    public double GetBatteryPercent()
    {
        ManagementClass wmi = new ManagementClass("Win32_Battery");
        ManagementObjectCollection allBatteries = wmi.GetInstances();

        double batteryLevel = 0;

        foreach (var battery in allBatteries)
        {
            batteryLevel = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
        }
        return batteryLevel;
    }

Также я использую Visual Studio 2015 на windows 7, может ли это быть потенциальной проблемой, которая вызывает это?

1 Ответ

1 голос
/ 08 января 2020

Надеюсь, вы тестируете свой код в системе, в которой действительно есть батарея. После запуска этого кода я вижу, что в моей системе 1 батарея и переменная batteryLevel установлена ​​в процентах, сообщенных Windows.

Исходя из того, что вы описали, и после прочтения вашего кода я предполагаю, что вы либо у вас 0 батарей или более одной батареи, а последняя из коллекции allBatteries имеет уровень 0%, следовательно, возвращаемое значение. Внимательно посмотрите на свой код - вы перебираете все объекты в allBatteries, но принимаете в качестве возвращаемого значения только последний.

Что вы можете сделать, это

  • установить от batteryLevel до -1, чтобы вы знали, был ли запущен l oop над allBatteries (т. е. allBatteries имел какие-либо элементы вообще)
  • возвращает обнуляемый массив уровней заряда батареи - если он Значение null означает, что батарейки не установлены, в противном случае вы можете рассчитать среднее значение, чтобы иметь фактический уровень заряда батареи
  • , а еще лучше - вернуть обнуляемый словарь уровня заряда батареи и емкости батареи, чтобы позже вы могли вычислить средневзвешенное значение для всех уровень заряда батареи (ноль для той же индикации, что и выше)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...