Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2007, 23:17   #1
HelloZAPOR
 
Аватар для HelloZAPOR
 
Регистрация: 15.07.2007
Сообщений: 9
По умолчанию Температура процессора

Как узнать температуру процессора\системной платы? Есть ли для этого компоненты?
HelloZAPOR вне форума Ответить с цитированием
Старый 22.07.2007, 13:12   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

посмотри по этой ссылке
http://www.delphikingdom.com/asp/vie...?catalogid=698
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 23.07.2007, 20:13   #3
HelloZAPOR
 
Аватар для HelloZAPOR
 
Регистрация: 15.07.2007
Сообщений: 9
По умолчанию

Пожалуйста, выложите кто-нибуть исходники проги которая определяет только температуру процессора.
HelloZAPOR вне форума Ответить с цитированием
Старый 26.07.2007, 09:36   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

По указанной выше ссылке есть подробное описание и примеры
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 26.07.2007, 10:41   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Гг, пример с температурой не пашет (xp sp1)
пыщь
JTG вне форума Ответить с цитированием
Старый 26.07.2007, 19:01   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

ИНтересный вопрос. Из любопытства попробовал поискать... Как я понимаю, нужно вытащить эту инфу из BIOS, но как это сделать в WinXP нигде не нашел. Можно вытащить всё кроме температуры. Неужели такой секрет..?
PS. Если не ошибаюсь, то такие проги как Эверест и Аида тоже не дают такой информации.

Последний раз редактировалось _SERGEYX_; 26.07.2007 в 19:03.
_SERGEYX_ вне форума Ответить с цитированием
Старый 27.07.2007, 15:58   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ошибаетесь
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 11.09.2007 в 19:54.
mutabor вне форума Ответить с цитированием
Старый 05.03.2008, 11:10   #8
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Эверест незнаю, а Аида точно знаю, дает информ про температуру процессора и информ про все запчасти..))
Gauss вне форума Ответить с цитированием
Старый 24.05.2008, 08:26   #9
Avatar_SBV
Новичок
Джуниор
 
Регистрация: 24.05.2008
Сообщений: 2
По умолчанию Температура процессора и материнской платы

Как определить температуру процессора и материнской платы!!!!!!!!!
Пишу программу мониториг сети + железа + реестра автозагрузки.
WMI не работает - поэтому ...
Возрадуйтесь. Несколько дней поисков и рускоязычный инет ничего не дал. НО на зарубежных сайтах нашел таки
Данный пример сразу отмечу - работает только с процессорами Intel и использует драйвер Giveio.sys (его не выкладываю - можно с легкостью найти в инете - главно кинуть его в папку system32 - поэтому нужно программно позаботиться чтобы он туда попал - скопировать ). Есть еще одна проблема - но это уже на аппатарном уровне - не всегда находит датчик температур - но это не беда - в этих случаях и Everest не может определить температуру матери и проца.
Итак - долгожданный код в студию:

Код:
...
uses
  Windows, Messages, SysUtils, Classes, Forms, Graphics,
  Dialogs, Registry, StdCtrls, StrUtils, ComCtrls, Controls, ExtCtrls,
  ShellAPI, Menus, winsvc;

...

var
  Form1: TForm1;
  AverageTemp:Array[0..4] of Integer;
  hSCMan,
  hService,
  hDevice             : SC_HANDLE;
  lpServiceArgVectors : PChar;
  temp                : LongBool;
  serviceStatus       : TServiceStatus;
  DeviceName          : String;  

implementation

{$R *.dfm}
const
 IntelBasePort:Integer = $290;

  Procedure DoneDriver;
  Begin
    CloseHandle(hDevice);
    hService := OpenService(hSCMan,PChar(DeviceName), SERVICE_ALL_ACCESS);
    if hService <> 0 then
    Temp := ControlService(hService,SERVICE_CONTROL_STOP,ServiceStatus);
    if (hService <> 0) then
    CloseServiceHandle(hService);
    hService := OpenService(hSCMan,PChar(DeviceName), SERVICE_ALL_ACCESS);
    temp := DeleteService(hService);
    CloseServiceHandle(hService);
  end;

  function InPort(port:word):byte;assembler;stdcall;
  asm
    mov dx,port
    in al,dx
    mov Result,al
  end;

  Procedure OutPort(port:word; value:byte);assembler;stdcall;
  asm
    mov al, value
    mov dx, port
    out dx, ax
  end;

 Function Temperature:Integer;
 begin
  OutPort(IntelBasePort+5,$27);
  Result:=(InPort(IntelBasePort+6));
 end;


function ReadTemp:Word;
var
  tmp1: byte;
  tmp2: byte;
  Temp: word; // 16-bit unsigned integer
  Temp1: integer;
  i:integer;
begin
  asm
	mov	cx,128    //decimal, poll busy flag max. 128 times
	mov	dx,$0295
@WaitReady1:
	in	al,dx
	and	al,128 //decimal
	jz	@ExitWait
	dec	cx
	jnz	@WaitReady1
@ExitWait:
 	mov	dx,$0295
	mov	al,78 // 78 dec. is the bank select register
	out	dx,al
	inc	dx
	mov	al,1 // select bank 1
	out	dx,al
	mov	dx,0295h
	mov	al,80 // 80 dec. is the temperature High register
	out	dx,al
	inc	dx
	in	al,dx // fetch temp Hi from 81 dec.
	shl	al,1
	mov	tmp1,al
	mov	dx,0295h
	mov	al,81 // 81 dec. is the temperature Low register
	out	dx,al
	inc	dx
	in	al,dx // fetch temp Lo from 82 dec.
	shr	al,7
	mov	tmp2,al
  // calculate reading
	xor	ah,ah
	xor	cx,cx
	mov	al,tmp1
	mov	cl,tmp2
	add	ax,cx
	shr	ax,1
  mov Temp,ax
  end;
  Temp1:=0;
  if (Temp>0) and (Temp<100) then
  begin
    for i:=0 to 3 do AverageTemp[i]:=AverageTemp[i+1];
    AverageTemp[4]:=Temp;
    if AverageTemp[0]=0 then for i:=0 to 3 do AverageTemp[i]:=AverageTemp[4];
    for i:=0 to 4 do Temp1:=Temp1+AverageTemp[i];
    Temp1:=round(Temp1 / 5);
  end;
  if Temp1<0 then Temp1:=0;
  if Temp1>65536 then Temp1:=0;
  Result:=Temp1; // Result is not a variable but holds the function return value
end;

function openIO:boolean;
begin
       lpServiceArgVectors:=nil;
       DeviceName:='giveio';
       hSCMan:=OpenSCManager(Nil,Nil,SC_MANAGER_CREATE_SERVICE);
       IF hSCMan <> 0 Then
       hService:=CreateService(
       hSCMan,
       pChar(DeviceName),
       pChar(DeviceName),
       SERVICE_ALL_ACCESS,
       SERVICE_KERNEL_DRIVER,
       SERVICE_DEMAND_START,
       SERVICE_ERROR_NORMAL,
       PChar('c:\windows\system32\giveio.sys'),nil,nil,nil,nil,nil);
       If hService<>0 then
        CloseServiceHandle(hService);
        hService:=OpenService(hSCMan,pChar(DeviceName),SERVICE_ALL_ACCESS);
       If hService<>0 then
       begin
        StartService(hService,0,PChar(lpServiceArgVectors));
        CloseServiceHandle(hService);
       end;
        hDevice:=CreateFile(pChar('\\.\'+DeviceName),
        GENERIC_READ or GENERIC_WRITE,0,PSECURITY_DESCRIPTOR(nil),
        OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
openIO;
sleep(5000);
Timer1.Enabled:=True;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled :=False;
  Label1.Caption :=IntToStr(ReadTemp); {проц}
  Label2.Caption :=IntToStr(Temperature); {мать}
  Timer1.Enabled :=True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 DoneDriver;
end;

end.
Вложения
Тип файла: zip 4.ZIP (211.5 Кб, 737 просмотров)

Последний раз редактировалось rpy3uH; 01.03.2009 в 14:44.
Avatar_SBV вне форума Ответить с цитированием
Старый 24.05.2008, 12:56   #10
Avatar_SBV
Новичок
Джуниор
 
Регистрация: 24.05.2008
Сообщений: 2
По умолчанию

Вот мой проект
Вложения
Тип файла: zip System_monitoring.ZIP (469.6 Кб, 884 просмотров)
Avatar_SBV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка процессора Syred Общие вопросы Delphi 1 12.06.2008 22:15
Температура CPU vicvtor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.05.2008 09:21
Температура видео карты (Delphi) Air Помощь студентам 2 20.04.2008 12:21
Частота процессора. Delphi Disb Помощь студентам 1 20.02.2008 09:28
Загрузка процессора Terran Общие вопросы Delphi 1 15.12.2007 22:27