Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

Как получить информацию о температуре процессора   Найти похожие ветки 

 
Net_Angel   (2002-09-10 13:55) [0]

Как получить информацию о температуре процессора, оборотах кулера


 
ResTec   (2002-09-10 21:39) [1]

Вообще влоб эта задача не решается. И вот почему...
-1) данные возможности должна поддерживать материнка, а вернее чипсет установленный на ней, а материнка предоставить возможность считать данные с чипсета.
-2) если она (т.е. материнка) эти возможности и поддерживает,
то ВОПРОС как ими воспользоваться?
ОТВЕТ нужен оригинальный (т.е. от производителя мамки) драйвер (если угодно "интерфейс"), ну или ходя-бы адреса где материнка прячет эту информацию.
Я год назад занимался данной проблемацией, и кое что накопал.
Вот адресок программы которая может смотреть динамическую тех. информацию большинства ныне популярных мамок []. Посмотрев как она это делает думаю поймешь как вообще возможна реализация таких возможностей.

А вот исходник того как делал я. Сразу скажу, что это работает с VIA"вским чипсетом, и нужны еще два файла поставляемые с материнкой "Viahm.dll" и "Viahm.vxd". Это файлы от стандартной програмки "VIA Hardware Monitor" прилагаемой к мамке. Да и еще один знакомай пробовал на не VIA"вской мамке (VIA"вская мамка следует понимать как материнская плата с чипсетом от VIA) и говорит вроде работало (возможно у разных производителей подходы одни). И еще - данные читаются без проблем, но вот грабли. При считывании тепературы процессора выдается какая-то краказябра, поначалу я думал что это тем-пра в фаренгейтах, но это не так, куча эксперементов, преобразований данных не дали результата, а со скоростью вращения кулёров все нормально, всё кажет как пологается. Если кто разберется с температурой буду рад.
Ну думаю про все грабли пропел, а вот сам код.


 
ResTec   (2002-09-10 21:40) [2]

это интерфейс общения с DLL"ой, просто подключи юнит к проге.

unit RThmd;
{©2001 Studio ResTec®}

interface

uses windows;

var
VIAHMClose : function{(Val : DWORD)} : DWORD; stdcall;
VIAHMGetFan1Divide : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetFan1Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetFan2Divide : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetFan2Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetTsens1Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetTsens2Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetV12Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetV25Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetV33Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetV5Reg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMGetVcoreReg : function(Val : PDWORD) : DWORD; stdcall;
VIAHMInit : function{(Val : DWORD)} : DWORD; stdcall;
VIAHMOpen : function{(Val : DWORD)} : DWORD; stdcall;
VIAHMSearchDevice : function(Val : PDWORD) : DWORD; stdcall;

function InitDLL(LibName : string): THandle;
procedure DeitDLL;

implementation

var
HM_DLL : THANDLE = 0;

function InitDLL(LibName : string): THandle;
begin
if (HM_DLL = 0) then begin
HM_DLL := LoadLibrary(PChar(LibName));
if (HM_DLL <> 0) then begin
@VIAHMClose := GetProcAddress(HM_DLL,"VIAHMClose" );
@VIAHMGetFan1Divide := GetProcAddress(HM_DLL,"VIAHMGetFan1Divide");
@VIAHMGetFan1Reg := GetProcAddress(HM_DLL,"VIAHMGetFan1Reg" );
@VIAHMGetFan2Divide := GetProcAddress(HM_DLL,"VIAHMGetFan2Divide");
@VIAHMGetFan2Reg := GetProcAddress(HM_DLL,"VIAHMGetFan2Reg" );
@VIAHMGetTsens1Reg := GetProcAddress(HM_DLL,"VIAHMGetTsens1Reg" );
@VIAHMGetTsens2Reg := GetProcAddress(HM_DLL,"VIAHMGetTsens2Reg" );
@VIAHMGetV12Reg := GetProcAddress(HM_DLL,"VIAHMGetV12Reg" );
@VIAHMGetV25Reg := GetProcAddress(HM_DLL,"VIAHMGetV25Reg" );
@VIAHMGetV33Reg := GetProcAddress(HM_DLL,"VIAHMGetV33Reg" );
@VIAHMGetV5Reg := GetProcAddress(HM_DLL,"VIAHMGetV5Reg" );
@VIAHMGetVcoreReg := GetProcAddress(HM_DLL,"VIAHMGetVcoreReg" );
@VIAHMInit := GetProcAddress(HM_DLL,"VIAHMInit" );
@VIAHMOpen := GetProcAddress(HM_DLL,"VIAHMOpen" );
@VIAHMSearchDevice := GetProcAddress(HM_DLL,"VIAHMSearchDevice" );
end;
end;
Result := HM_DLL;
end;

procedure DeitDLL;
begin
if (HM_DLL <> 0) then FreeLibrary(HM_DLL);
end;

initialization
finalization
if (HM_DLL <> 0) then FreeLibrary(HM_DLL);
end.


далее пример реализации


var
Form1: TForm1;
HDLL : THandle;

implementation

uses RThmd; // <<<<<<<<<<<<<< !!!!!!!!!!!!!!!

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); // Load DLL
var // Инициализация DLL"ки
v : DWORD;
begin
HDLL := InitDLL("Viahm.dll");
if HDLL <> 0 then begin
if VIAHMOpen = 0 then begin
ShowMessage("Error!...Dll Not Initialize";
Exit;
end;
VIAHMInit;
end;
end;

procedure TForm1.Button2Click(Sender: TObject); // Close DLL
begin //Закрытие ДЛЛы
if HDLL <> 0 then VIAHMClose;
end;

procedure TForm1.Button3Click(Sender: TObject); // Read Values
var
v : DWORD;
begin
if HDLL <> 0 then begin
Label1.Caption := IntToStr(VIAHMGetFan1Reg(@v));
Label2.Caption := FormatFloat(######, 655535 / V );// Скорость первого кулёра

Label3.Caption := IntToStr(VIAHMGetFan2Reg(@v));
Label4.Caption := FormatFloat(######, 655535 / V );// Скорость второго кулёра
end;
end;



Если возникнут вопросы мыльте...



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-34253
iva
2002-10-24 08:38
2002.11.11
Подскажите


14-34158
Нужна помощь!!!
2002-10-14 16:18
2002.11.11
Помогите! Прошу!


1-34092
Zergling
2002-10-31 07:24
2002.11.11
Инспектор объектов как IDE Delphi


14-34185
KIR
2002-10-21 00:03
2002.11.11
t


14-34259
robot 415
2002-10-23 19:11
2002.11.11
тип string, освобождение памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский