IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[WinNT] [C/C++] Récupérer la température du processeur (et autres infos)


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par défaut [WinNT] [C/C++] Récupérer la température du processeur (et autres infos)
    Bonjour à tous,

    J'ai un petit programme en C++ qui fonctionne sous WinNT et qui permet de récupérer la température dans le processeur et la vitesse du ventilateur.
    Le problème est que ce programme n'est utilisable que pour un chipset donné (ITE IT8705F) et je dois adapter les sources pour un autre (VIA VT 82C686B).

    Voici déjà l'essentiel du code source pour le chipset ITE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    long CChipsetMonitoringDlg::GetIteDatas()
    {	
    	HANDLE h;
    	//On load le driver giveio
        	h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,	OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    
    	if(h == INVALID_HANDLE_VALUE)//le driver n'est pas installé donc on envoie cette info : 0
    	{
            AfxMessageBox("Error while loading giveio");
    		return;
    	}
    
    	CloseHandle(h);
    
    	long divisor , revolution , div ;
    
    	_outp(0x290 + 0x05 , 0x2a);
    	m_lT1 = (signed char) _inp(0x290 + 0x06 );
    
    //	tf = 9*t/5 + 32 ;//Conversion Celsius -> Farenheit
    
    	_outp(0x290 + 0x05 , 0x2b);
    	m_lT2 = (signed char)_inp(0x290 + 0x06 );
    
    	_outp(0x290 + 0x05 , 0x0b);
    	divisor = _inp(0x290 + 0x06 );
    
    	_outp(0x290 + 0x05 , 0x0d);
    	revolution = _inp(0x290 + 0x06 );
    
    	divisor &= 0x07 ; // 0111 : les trois premiers bits
    
    	div = (long) pow(2.00,divisor);
    
    	m_lFanSpeed1 = (long )(1350000.00 / (div * revolution ) );
    
    	return 0;
    }
    J'ai compris que toutes les adresses données sont différentes d'un chipset à un autre. J'ai donc trouvé dans la doc du chipset ITE à quoi elle correspondent :
    0x2a TMPIN2 Temperature Reading Register
    0x2b TMPIN3 Temperature Reading Register
    0x0d Fan Tachometer 1 Reading Register
    0x0b Fan Tachometer Divider Register
    Adress register Base address + 0x05
    Data register Base address + 0x06

    Par contre, pas moyen de trouver d'où vient cette valeur pour Base Address : 0x290 :

    Dans la doc pour le chipset VIA je pense avoir trouvé les adresses correspondant aux températures et aux vitesses de ventilateur, mais je ne sait pas où trouver l'adresse de base (adresse du port ?).

    Je suis complétement débutant dans ce genre de programmation, est-ce que quelqu'un peut me donner des pistes ?

  2. #2
    Membre confirmé Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par défaut
    Ce problème n'a pas l'air de déchaîner les passions

    Je vais quand même rajouter un truc que je viens de comprendre, si jamais quelqu'un qui a le même problème que moi tombe sur ce message.

    Le driver giveio n'est pas par défaut dans windows, il faut l'installer (on peut le trouver ICI).

    Ca ne règle pas mon problème mais ça fait avancer un petit peu le schmilblik.

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Salut.

    Est-ce que tu as fait un tour du côté de WMI. Ca permet de connaître les différents composants de la machine. Peut-être que ça permet aussi de faire des modifs...

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par moldavi
    Est-ce que tu as fait un tour du côté de WMI. Ca permet de connaître les différents composants de la machine. Peut-être que ça permet aussi de faire des modifs...
    Une classe existe pour récupérer ces infos mais ne semble pas implémenté pour tous les Bios des CM du marché. Et ce type d'infos c'est Read Only.

  5. #5
    Membre confirmé Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par défaut
    Citation Envoyé par moldavi
    Salut.

    Est-ce que tu as fait un tour du côté de WMI. Ca permet de connaître les différents composants de la machine. Peut-être que ça permet aussi de faire des modifs...
    Ca m'a l'air d'être une solution payante...

    Citation Envoyé par Laurent Dardenne
    Une classe existe pour récupérer ces infos mais ne semble pas implémenté pour tous les Bios des CM du marché. Et ce type d'infos c'est Read Only.
    Quelle est le nom de cette classe ? Je n'ai rien trouvé à propos de ça quand j'ai fait mes recherches (je rappelle que je cherche une solution sous WinNT)

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    WMI est gratuit mais pour NT il n'est pas natif.
    Sinon regarde ce post il traite du sujet avec de nombreux liens, à vérifier si tu peux en faire qq chose :
    http://www.developpez.net/forums/showthread.php?t=7770

Discussions similaires

  1. [Développement] récupérer la température du (des) processeur(s)
    Par d'Oursse dans le forum Apple
    Réponses: 1
    Dernier message: 20/05/2011, 08h46
  2. Récupérer la température du processeur en C
    Par swingNJava dans le forum Windows
    Réponses: 1
    Dernier message: 09/10/2008, 17h04
  3. Reprendre la température du processeur
    Par ehmppowa dans le forum C++
    Réponses: 2
    Dernier message: 23/12/2005, 10h07
  4. Température du processeur
    Par duplo dans le forum Assembleur
    Réponses: 2
    Dernier message: 04/11/2005, 21h44
  5. Récupérer la température du processeur (CPU)
    Par cyber_N dans le forum MFC
    Réponses: 4
    Dernier message: 05/09/2005, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo