performancecounter - countertype umrechnung

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Fakiz.

    performancecounter - countertype umrechnung

    hallo,

    ich verwende einen performancecounter und bekomme auch werte zurück.
    mein problem ist nun die umrechnung der einzelnen werte durch den countertype

    beispiel:

    VB.NET-Quellcode

    1. pc = New PerformanceCounter
    2. With pc
    3. .CategoryName = "BatteryStatus"
    4. .CounterName = "RemainingCapacity"
    5. .InstanceName = "ACPI\PNP0C0A\1_0"
    6. End With

    Der entsprechende CounterType = "NumberOfItems32" {65535}

    Das ganze liefert mir im Moment einen RawValue = 28102 (Rückgabewert)
    Und der aktuelle Ladestatus meiner Notebookbatterie ist 85%

    wie kann ich jetzt richtig umrechnen - was steckt hinter dem CounterType

    frohe ostern euch allen

    mikeb69
    Hi!

    Ich vermute, dass es sich bei der Zahl um einen Signed Long (32bit mit Vorzeichen) handelt und der Maximalwert 100% entspricht.
    Der positive Zahlenbereich ist dann von 0 bis 32767 ( = (65535-1) / 2 ).
    Die Berechnung des verbleibenden Anteiles in % funktioniert dann folgendermaßen:

    Quellcode

    1. Wert / Max * 100 =
    2. 28102 / 32767 * 100 =
    3. 0.857631153 * 100 =
    4. 85.76%


    Wenn man die letzte Rechnung (* 100) mit einem Integer (nur Ganzzahlen) als Ziel durchführt, fallen die .76 weg anstatt aufgerundet zu werden. Das würde erklären, warum 85% angezeigt wird.

    Ich hoffe, dass das deine Frage beantwortet.
    Frohe Ostern auch dir. :)
    Hi, you said
    CategoryName = "BatteryStatus"
    .CounterName = "RemainingCapacity"
    .InstanceName = "ACPI\PNP0C0A\1_0"


    Please, where did you get the "BatteryStatus" from? I had that available but not anymore, please if you can help.
    I lost that category after reinstalling. I don't seem to be able to find it.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jtex“ ()