Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Mafa1

Frischling

  • »Mafa1« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Black Forrest

  • Private Nachricht senden

1

26.12.2008, 17:43

Frage zu C++ betreffs Temperatur von Nvidia-Grakas auslesen

Nabend community....

wie der Titel schon ankündigt habe ich eine evtl auch mehrere fragen
zum thema temperaturen von nvidia grafikkarten mit c++ auslesen...
bin kein profi was c++ angeht also verzeiht mir meine fehler ^^

google hab ich schon danach gefragt... bin dann auch auf ne seite gestoßen wo jmd so etwas schon mal gefragt hat....


der code von der seite lautet

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
#include "NvCpl.h"

...

DWORD pdwCoreTemp;
DWORD pdwAmbientTemp;
DWORD pdwUpperLimit;
if (NvCplGetThermalSettings(0, &pdwCoreTemp, &pdwAmbientTemp, &pdwUpperLimit) == FALSE) {
  printf("Unable to retrieve GPU Temperature");
}
else {
  printf("GPU Temperatur: %d C", pdwCoreTemp); 




hab den code mal in VS2k8 kopiert und alle files included auch die libs....
ging leider nicht....
dann hab ich mir von der nvidia hp die aktuelle NV api gedownloadet
http://developer.nvidia.com/object/nvapi.html

folglich muss man den code ja umschreiben... gesagt getan... doch nun kommt immer der fehler dass der 3te parameter nicht konvertiert werden kann....habe in der nvapi - beiliegenenden hilfedatei nachgelesen und versucht herauszufinden was für ein datentyp hier gefordert ist.... doch i-wie komm ich nicht drauf...


hier mein aktueller code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include "nvapi.h"
#include <windows.h>
//#include <string>



using namespace std;


int main ()

{
    DWORD temp;

    


    NvAPI_GPU_GetThermalSettings(0,1,temp);

    cout << "temp: " << temp << endl;
    getchar();
    
    return 0;
}




weiss zufällig jmd warum es nicht gehen könnte bzw hat sich schonmal jmd damit auseinander gesetzt?

mfg

mafa1

2

26.12.2008, 18:22

call-by-value / call-by-referenz bzw. Pointer. Wie soll denn die Funktion der Variablen temp irgendetwas zuweisen, wenn sie nur mit einer lokalen Kopie arbeitet? Für alles weitere http://http.developer.nvidia.com/nvapi/group__gputhermalfunctions.html . Da steht was von NV_GPU_THERMAL_SETTINGS* pThermalSettings, also es wird ein Pointer auf eine Variable vom Typ NV_GPU_THERMAL_SETTINGS erwartet.

Mafa1

Frischling

  • »Mafa1« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Black Forrest

  • Private Nachricht senden

3

26.12.2008, 18:58

also erstma danke für deine schnelle antwort :)

trotzdem konnte ich deiner antwort nicht ganz folgen... -.-
liegt wohl daran das ich noch nicht viel mit pointern gearbeitet habe.
könntest du / jmd anderst mir ein beispiel zeigen / posten wie das
aussehen sollte? den zusammenhang hab ich begriffen aber i-wie
hängt es an der umsetzung...

mfg mafa

edit: bin gerade dabei mir nochmal das zeigerkapitel aus c++ für spieleprogger durchzunehmen... mal sehn evtl wirds danach was ;)


edit2:



habe mal n bissschen rumprobiert und sogar ein ergebnis bekommen...
die console geht inzwischen auf aber es kommen *komische* werte heraus... angeblich hat meine gpu ca 120000 °C....
falls ich es hinbekomme meld ich mich...

4

26.12.2008, 19:30

versuchs mal mit

C-/C++-Quelltext

1
2
3
    NV_GPU_THERMAL_SETTINGS temp;
    NvAPI_GPU_GetThermalSettings(0,1,&temp);
    cout << "temp: " << temp.currentTemp << endl;

Mafa1

Frischling

  • »Mafa1« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Black Forrest

  • Private Nachricht senden

5

26.12.2008, 19:38

hmm nee sry muss dich entäuschen @ genion...
error C2039: 'currentTemp': Ist kein Element von 'NV_GPU_THERMAL_SETTINGS'

den fehler bringt er mir... kennt jmd die lösung zu meinem problem?
bzw i-welche hilfestellungen? gerne auch beispiele...
There are 10 kinds of people... the ones who understand binary and the ones who dont...

6

26.12.2008, 20:34

Das hier sieht doch interessant aus, der möchte auch die Temperatur herausfinden und hat es auch geschafft:
http://developer.nvidia.com/forums/index.php?&showtopic=2229

7

26.12.2008, 20:53

@Mafa
sry, hatte sich auch nen Fehler eingeschlichen. Aber ich traue dir zu dich durch die gefüllte Struktur zu wühlen und dort die richtigen Informationen herauszubekommen. Falls du das nicht schaffst, dann ab zurück ans Buch. :-P

Mafa1

Frischling

  • »Mafa1« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Black Forrest

  • Private Nachricht senden

8

26.12.2008, 20:57

kay thx nochmal ^^ ich werds versuchen... zumindest gibts schonmal ne ausgabe also dürfte die lösung auch nicht mehr allzu schwer sein...

mfg mafa

edit: nachdem ich gestern noch bis i-wann nachts drangehockt bin und zu keinem brauchbarem ergebnis gekommen bin hab ich mir mal den code von der gepostetetn website angeschaut und verändert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include "nvapi.h"
#include <windows.h>



int main ()

{

    
    NV_GPU_THERMAL_SETTINGS set = {0};
    NvAPI_Status status;
    
    status = NvAPI_GPU_GetThermalSettings(0, 1 ,&set);
    

    printf("NVAPI Current Temp: %u C\n",set.sensor[0].currentTemp);
    getchar();

    
    return 0;
}

sollte so eig funktionieren... bekomme aber i-wie nur 0° heraus also wird nichts in die variable geschrieben bzw i-wo muss ein fehler sein...
kann mich da mal jmd aufklären (ja ich weiss wo die kinder herkommen) ?
There are 10 kinds of people... the ones who understand binary and the ones who dont...

9

27.12.2008, 23:45

Hi,

wieso übergibst du 0 und 1 als Parameter? In der Dokumentation steht doch, was da rein soll. In dem Bereits geposteten Beispiel macht es der Autor im zweiten Anlauf richtig.

Außerdem hättest du überprüfen können, was in der Variable status drin steht. Die hätte dir gesagt, dass du NvAPI_Initialize() überhaupt nicht aufgerufen hast. Siehe auch Dokumentation Abschnitt Modules -> General NVAPI -> General NVAPI Functions bzw. NvAPI Status Values.
Howdy!

Mafa1

Frischling

  • »Mafa1« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Black Forrest

  • Private Nachricht senden

10

28.12.2008, 22:00

erstmal danke für deine antwort :)
nun ich hab mir gedacht weil i-wo es so stand:
parameter1: 0 ist der primäre grafik adapter
parameter2: 1 ist der anzusprechende sensor...

aber ich werde es trotzdem mal mit deinen tipps versuchen
und was in der status variable drin steht hab ich auch schon ausgegeben...
ein haufen nicht wirklich definierbarer zeichen....

mfg mafa
There are 10 kinds of people... the ones who understand binary and the ones who dont...

Werbeanzeige