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

Вниз

Скорости, напряжения, температуры   Найти похожие ветки 

 
ПЛОВ ©   (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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.041 c
4-1129817907
Максим
2005-10-20 18:18
2005.12.18
Определение старта процесса


8-1121117343
АСК1
2005-07-12 01:29
2005.12.18
pfDevice - это сколько байт на пиксель в TBitMap ?


2-1133264260
Sysanin
2005-11-29 14:37
2005.12.18
реестр


2-1133278046
Катерина
2005-11-29 18:27
2005.12.18
Работа с Canvas.


14-1132747769
DiamondShark
2005-11-23 15:09
2005.12.18
Клиенты ICQ