Форум: "WinAPI";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизСкорости, напряжения, температуры Найти похожие ветки
← →
ПЛОВ © (2005-10-17 16:30) [0]Существуют ли какие-нибудь "общие" (API, ActiveX и т.п.) способы получить значение напряжения процессора, его температуры и скорости вращения вентиляторов на проце и шасси?
Если да, то подскажите, куда копать?
← →
Игорь Шевченко © (2005-10-17 17:05) [1]В сторону WMI
← →
ПЛОВ © (2005-10-17 17:11) [2]Спасибо хоть за это... Еще бы что-то поточнее, ссылки хоть какие-нибудь, плиз...
← →
idx © (2005-10-17 17:36) [3]
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Panel1: TPanel;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
lTemp: TLabel;
lCooler: TLabel;
lVfCore: TLabel;
fCore: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
lfn5: TLabel;
lFp5: TLabel;
lFn12: TLabel;
lfp12: TLabel;
lfc33: TLabel;
lf33: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Uses Giveio;
const
IntelBasePort:Integer = $290;
// Возвращает температуру материнской платы для "INTEL"!
Function Temperature:Integer;
begin
OutPort(IntelBasePort+5,$27);
Result:=(InPort(IntelBasePort+6));
end;
// Получение текущего значение оборотов вентилятора "INTEL"
Function GetCoolerSpeed(Cooler:Byte):Integer;
Var
CurrentCounter:Integer;
CurrentDiv:Integer;
Begin
If (Cooler < 1) or (Cooler > 3) then Result:=0;
OutPort(IntelBasePort+5,$28);
CurrentCounter:=InPort(IntelBasePort+6);
If CurrentCounter = $ff Then
Begin
Result:=0;
Exit;
end;
OutPort(IntelBasePort+5,$47);
// CurrentDiv:=InPort(IntelBasePort+6);
case Cooler of
1: CurrentDiv:=1 shl ( (InPort(IntelBasePort+6) shr 4) and 3);
2: CurrentDiv:=1 shl ( (InPort(IntelBasePort+6) shr 6) and 3);
3: CurrentDiv:=2;
end;
Result:=1350000 div (CurrentCounter * CurrentDiv);
end;
Function GetVolt(OffsetReg:Integer):Real;
Var
fV1,fV2:real;
begin
fV1:=0;
fV2:=0;
Case OffsetReg of
0:; // 20h
1:; // 21h
2:; // 22h
3: // 23h
Begin
fV1:=2.98;
fV2:=5.0;
end;
4: // 24h
Begin
fV1:=3.00;
fV2:=12.0;
end;
5: // 25h
Begin
fV1:=3.00;
fV2:=-12.0;
end;
6: // 26h
Begin
fV1:=3.50;
fV2:=-5.0;
end;
end;
OutPort(IntelBasePort+5,OffsetReg);
Result:=(0.016 * (InPort(IntelBasePort+6))- fV1+fV2);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
Var
fCore,Fn5,Fp5,Fn12,Fp12,Fc33,F33:real;
begin
lTemp.Caption:=IntToStr(Temperature);
lCooler.Caption:=IntToStr(GetCoolerSpeed(1));
fCore := GetVolt(0);
fn5 := GetVolt(1);
fp5 := GetVolt(2);
fn12 := GetVolt(3);
fp12 := GetVolt(4);
fc33 := GetVolt(5);
f33 := GetVolt(6);
lVfCore.Caption:=Format("%2.2f",[Fn5]);
lfn5.Caption:=Format("%2.2f",[fCore]);
lFp5.Caption:=Format("%2.2f",[fp5]);
lFn12.Caption:=Format("%2.2f",[fn12]);
lfp12.Caption:=Format("%2.2f",[fp12]);
lfc33.Caption:=Format("%2.2f",[Fc33]);
lf33.Caption:=Format("%2.2f",[f33]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
InitDriver;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoneDriver;
ExitProcess(0);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Button1Click(Self);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button1Click(Self);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Button1Click(Self);
end;
end.
← →
ПЛОВ © (2005-10-17 17:41) [4]Огромное спасибо, посмотрю.
← →
ПЛОВ © (2005-10-17 17:42) [5]А что за Giveio?
← →
idx © (2005-10-17 17:51) [6]Это модуль для прямого доступа к портам I/O
← →
ПЛОВ © (2005-10-17 17:57) [7]Понятно... Уже нашел что это такое... А где взять Giveio.pas (.dcu)? Можно выслать на pro100max@mail.ru
← →
idx © (2005-10-17 18:03) [8]http://forum.sources.ru/index.php?showtopic=115758
← →
ПЛОВ © (2005-10-17 18:30) [9]спасибо. все нашел. буду проверять.
← →
ПЛОВ © (2005-10-17 18:56) [10]Выдает ошибку Privileged instruction
← →
idx © (2005-10-17 19:48) [11]http://forum.sources.ru/index.php?showtopic=116287
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.015 c