web-dev-qa-db-fra.com

Surveillance de la température du processeur

Pour un projet de programmation, j'aimerais accéder aux lectures de température de mon CPU et de mes GPU. Je vais utiliser C #. Sur différents forums, j'ai l'impression qu'il existe des informations spécifiques et des ressources de développement dont vous avez besoin pour accéder à ces informations pour différents conseils. J'ai un tableau MSI NF750-G55. Le site Web de MSI ne contient aucune des informations que je recherche. J'ai essayé leur support technique et le représentant avec qui j'ai parlé a déclaré ne pas avoir cette information. Il doit y avoir un moyen d'obtenir cette information.

Des pensées?

22
Paul

Pour au moins le côté CPU, vous pouvez utiliser WMI.

L'espace de nom\object est root\WMI, MSAcpi_ThermalZoneTemperature

Exemple de code:

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\WMI",
                                 "SELECT * FROM MSAcpi_ThermalZoneTemperature");

ManagementObjectCollection collection = 
    searcher.Get();

foreach(ManagementBaseObject tempObject in collection)
{
    Console.WriteLine(tempObject["CurrentTemperature"].ToString());
}

Cela vous donnera la température dans un format brut. Vous devez convertir à partir de là:

kelvin = raw / 10;

celsius = (raw / 10) - 273.15;

Fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;
20
Justin Niessner

En fait, le meilleur moyen de coder du matériel en utilisant WMI est plus efficace en utilisant cet outil WMI Code Creator de Microsoft l’outil créera le code pour vous en fonction de ce que vous recherchez et quel langage .Net vous voulez utiliser.

Les langues prises en charge sont actuellement: C #, Visual Basic, VB Script.

1
Ashraf Abusada

Notez que MSAcpi_ThermalZoneTemperature ne vous donne pas la température de la CPU, mais plutôt la température de la carte mère. Notez également que la plupart des cartes mères ne l'implémentent pas via WMI.

Vous pouvez essayer Open Hardware Monitor, bien que les derniers processeurs ne soient pas pris en charge.

internal sealed class CpuTemperatureReader : IDisposable
{
    private readonly Computer _computer;

    public CpuTemperatureReader()
    {
        _computer = new Computer { CPUEnabled = true };
        _computer.Open();
    }

    public IReadOnlyDictionary<string, float> GetTemperaturesInCelsius()
    {
        var coreAndTemperature = new Dictionary<string, float>();

        foreach (var hardware in _computer.Hardware)
        {
            hardware.Update(); //use hardware.Name to get CPU model
            foreach (var sensor in hardware.Sensors)
            {
                if (sensor.SensorType == SensorType.Temperature && sensor.Value.HasValue)
                    coreAndTemperature.Add(sensor.Name, sensor.Value.Value);
            }
        }

        return coreAndTemperature;
    }

    public void Dispose()
    {
        try
        {
            _computer.Close();
        }
        catch (Exception)
        {
            //ignore closing errors
        }
    }
}

Téléchargez le fichier Zip à partir de source officielle , extrayez-le et ajoutez une référence à OpenHardwareMonitorLib.dll dans votre projet.

0
Ali Zahid