Nvidia Temperature (Sıcaklık)

Geçenlerde LG p510 dizüstü bilgisayar aldım, üzerinde iyi işlemci ve Nvidia GT 130 ekran kartı var. Bakalım oyunlarda nasıl diye bir iki oyun kurdum.

nvidiatemp

Favori oyunlardan Far Cry 1 ve Call of Duty Modern Warfare 2 oyunlarını denedim. İki oyundada en üst düzeyde grafik ayarlarıyla çok akıcı oynayabildim.
Fakat bilgisayar bayağı ısınıyordu. Hardware monitor ile baktığımda GT 130 ekran kartı 102 dereceye kadar ısınmıştı.
İşlemci ise 60-70 derece ve makül seviyedeydi. Bende bilgisayarı yakmamak için sadece GPU derecesini gösteren bir program yazmaya karar verdim.
Program saniyede bir Gpu derecesini gösteriyor ve 90 üzerinde çıkınca zil sesi çıkarıyor.

Nvidia kartlarında bilgi alabilmek için nvidia driver yüklü olaması gerekiyor. Ayrıca http://andy.jgknet.de/blog/?page_id=351 buradan temin edebileceğiniz pascal için NvAPI.pas gerekiyor.
NvAPI.pas nvidia’ nın nvapi.h pascala çevrilmiş hali. Programda Goster precedure bilgileri alıp labellere aktarıyor.

[code lang=”Delphi”]
procedure TForm1.Goster;
var
i: integer;
cnt: NvU32;
status: NvAPI_Status;
hDisplay_a: array[0..NVAPI_MAX_PHYSICAL_GPUS * 2] of PNvDisplayHandle;
nvGPUHandle: TNvPhysicalGpuHandleArray;
version: TNvDisplayDriverVersion;
temp: NvU32;
seti: TNvGPUThermalSettings;
error: NvAPI_ShortString;
hata: string;

begin
i := 0;
cnt := 0;
status := NvAPI_Initialize();
if status <> NVAPI_OK then
begin
NvAPI_GetErrorMessage(status, error);
hata := (error);
end;
fillchar(version, sizeof(version), 0);
FillChar(hDisplay_a, sizeof(hDisplay_a), 0);
FillChar(nvGPUHandle, sizeof(nvGPUHandle), 0);

version.version := NV_DISPLAY_DRIVER_VERSION_VER;
status := NvAPI_GetDisplayDriverVersion(0, @version);
if status <> NVAPI_OK then
begin
NvAPI_GetErrorMessage(status, error);
hata := (error);
ver_.Caption := hata;
end else
begin
ver_.Caption := ”;
ver_.Caption := ‘Version Bilgileri: ‘ + #13 + #10 + ‘Version: ‘ + inttostr(version.version) + #13#10 +
‘drvVersion: ‘ + IntToStr(version.drvVersion) + #13 + #10 +
‘bldChangeListNum: ‘ + IntToStr(version.bldChangeListNum) + #13 + #10 +
‘szBuildBranchString: ‘ + version.szBuildBranchString + #13 + #10 +
‘szAdapterString: ‘ + version.szAdapterString;
end;
status := NvAPI_EnumNvidiaDisplayHandle(i, @hDisplay_a[0]);

if status <> NVAPI_OK then
begin
NvAPI_GetErrorMessage(status, error);
hata := (error);
end;

status := NvAPI_GetPhysicalGPUsFromDisplay(hDisplay_a[0], nvGPUHandle, cnt);
if status <> NVAPI_OK then
begin
NvAPI_GetErrorMessage(status, error);
hata := (error);
end;
temp := 0;

FillChar(seti, sizeof(seti), 0);
seti.version := NV_GPU_THERMAL_SETTINGS_VER;
seti.count := NVAPI_MAX_THERMAL_SENSORS_PER_GPU;
seti.sensor[0].controller := NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL;
seti.sensor[0].currentTemp := temp;
seti.sensor[0].target := NVAPI_THERMAL_TARGET_GPU;
status := NvAPI_GPU_GetThermalSettings(nvGPUHandle[0], 0, @seti);
if status <> NVAPI_OK then
begin
NvAPI_GetErrorMessage(status, error);
hata := (error);
Label1.Caption := ‘Sıcaklık: ‘ + hata;
end else
Label1.Caption := ‘Sıcaklık: ‘ + IntToStr(seti.sensor[0].currentTemp) + ‘ C’;
RxTrayIcon1.Hint := Label1.Caption;
if seti.sensor[0].currentTemp > 90 then
sndPlaySound(pchar(‘zil.wav’), SND_NODEFAULT or SND_ASYNC or SND_LOOP);

end;
[/code]

Program Kodları ve exe aşağıdadır.
nvidiatemp.rar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir