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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2016, 14:48   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию Температура процессора

Добрый день форумчане!
Пишу программу для мониторинга состояния процессора и памяти, получилось сделать загруженность процессора и памяти, а вот с температурой беда, на просторах интернета нет стабильно рабочего кода. может кто нибудь подскажет правильное направление в этом вопросе по поводу просмотра температуры процессора.
Вот моя программа не хватает состояние температуры.
Изображения
Тип файла: jpg MyProgr.jpg (19.7 Кб, 126 просмотров)
Aliens_wolfs вне форума Ответить с цитированием
Старый 15.12.2016, 16:17   #2
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Добрый день форумчане!
Пишу программу для мониторинга состояния процессора и памяти, получилось сделать загруженность процессора и памяти, а вот с температурой беда, на просторах интернета нет стабильно рабочего кода. может кто нибудь подскажет правильное направление в этом вопросе по поводу просмотра температуры процессора.
Вот моя программа не хватает состояние температуры.
Windows Management Instrumentation (WMI)
Replicant вне форума Ответить с цитированием
Старый 15.12.2016, 16:41   #3
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

А поискать?
Или "пусть другие для меня ищут"?
http://forum.sources.ru/index.php?ac...64&attach_id=0
kropotkina-alice вне форума Ответить с цитированием
Старый 15.12.2016, 18:00   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

WMI не работает ну не на моей машине, Вы сами то пробовали то что предлагаете, я пробовал все это но не один пример у меня не работает. Я бы и не просил бы помощи)
giveio.sys у меня есть и лежит он в System32, тоже не работает. Из под админа все это тоже пробовал у меня win7 процессор intel.
Перерыл весь интернет, ничего стоящего пока не нашел.
Изображения
Тип файла: jpg Безымянный1.jpg (24.1 Кб, 121 просмотров)
Тип файла: png Безымянный3.png (31.5 Кб, 123 просмотров)

Последний раз редактировалось Aliens_wolfs; 15.12.2016 в 19:13.
Aliens_wolfs вне форума Ответить с цитированием
Старый 16.12.2016, 09:36   #5
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Хм, недавно тоже занимался похожим вопросом, только нужна была температура HDDшек, курил много манов про WMI и SMART жестких, но единого общего варианта так и не нашел. У вас задача попроще - можно промониторить APIшки, с которыми работают продвинутые программы для диагностики ПК. А там уже из них и вытащить алгоритмы самые нужные.
Еще, температуру камня обычно в биосе можно посмотреть, как именно с биоса ее вытащить не подскажу, но подкину ссылку на прекрасный компонент, который позволяет с ним работать на делфятине. https://github.com/RRUZ/tsmbios/blob...Information.md

//The information stored in the SMBIOS includes devices manufacturer, model name, serial number, BIOS version, asset tag, processors, ports and device memory installed.
denis76560 вне форума Ответить с цитированием
Старый 16.12.2016, 12:23   #6
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

denis76560 за ссылку спасибо! Поэкспериментирую с этим кодом, еще бы найти модуль usmbios.pas к этому коду что в ссылке.
Я тут встречал на просторах интернета код который из программы диагностики MBM5 вытаскивает нужную инфу

Но как то мне эта идея тоже не понравилась, ищу универсальный код который будет работать на любом ПК.
Думаю тоже поэкспериментировать с Bios


код выдирания температуры датчиков процессора из программы MBM5 который нашел в интеренете
Код:
type
 TBusType = (btISA, btSMBus, btVIA686ABus, btDirectIO);
 TSMBType = (smtSMBIntel, smtSMBAMD, smtSMBALi, smtSMBNForce, smtSMBSIS);
 TSensorType = (stUnknown, stTemperature, stVoltage, stFan, stMhz,
   stPercentage);

 TSharedIndex = record
   iType: TSensorType; // type of sensor
   Count: integer; // number of sensor for that type
 end;

 TSharedSensor = record
   ssType: TSensorType; // type of sensor
   ssName: array[0..11] of AnsiChar; // name of sensor
   sspadding1: array[0..2] of Char; // padding of 3 byte
   ssCurrent: Double; // current value
   ssLow: Double; // lowest readout
   ssHigh: Double; // highest readout
   ssCount: LongInt; // total number of readout
   sspadding2: array[0..3] of Char; // padding of 4 byte
   ssTotal: Extended; // total amout of all readouts
   sspadding3: array[0..5] of Char; // padding of 6 byte
   ssAlarm1: Double; // temp & fan: high alarm; voltage: % off;
   ssAlarm2: Double; // temp: low alarm
 end;

 TSharedInfo = record
   siSMB_Base: Word; // SMBus base address
   siSMB_Type: TBusType; // SMBus/Isa bus used to access chip
   siSMB_Code: TSMBType; // SMBus sub type, Intel, AMD or ALi
   siSMB_Addr: Byte; // Address of sensor chip on SMBus
   siSMB_Name: array[0..40] of AnsiChar; // Nice name for SMBus
   siISA_Base: Word; // ISA base address of sensor chip on ISA
   siChipType: Integer; // Chip nr, connects with Chipinfo.ini
   siVoltageSubType: Byte; // Subvoltage option selected
 end;

 TSharedData = record
   sdVersion: Double; // version number (example: 51090)
   sdIndex: array[0..9] of TSharedIndex; // Sensor index
   sdSensor: array[0..99] of TSharedSensor; // sensor info
   sdInfo: TSharedInfo; // misc. info
   sdStart: array[0..40] of AnsiChar; // start time
   sdCurrent: array[0..40] of AnsiChar; // current time
   sdPath: array[0..255] of AnsiChar; // MBM path
 end;

 PSharedData = ^TSharedData;

var  

 SharedIndex: TSharedIndex;
 SharedSensor: TSharedSensor;
 SharedInfo: TSharedInfo;
 SharedData: PSharedData;

var
 myHandle, i, TotalCount: Integer;
 S: string;
begin
 result := false;
 myHandle := OpenFileMapping(FILE_MAP_READ, False,'$M$B$M$5$S$D$');
 if myHandle = 0 then
   Exit;

 SharedData := MapViewOfFile(myHandle, FILE_MAP_READ, 0, 0, 0);
 with SharedData^ do
 begin
   Label1.Caption := FloatToStr(sdVersion);
   TotalCount := sdIndex[0].Count +
     sdIndex[1].Count +
     sdIndex[2].Count +
     sdIndex[3].Count +
     sdIndex[4].Count;
   DataGrid.RowCount := TotalCount + 1;
   for i := 0 to TotalCount - 1 do
   begin
     DataGrid.Cells[0, i + 1] := IntToStr(i);
     with sdSensor[i] do
     begin
       case ssType of
         stUnknown: S := 'unknown';
         stTemperature: S := 'temperature';
         stVoltage: S := 'voltage';
         stFan: S := 'fanspeed';
         stMhz: S := 'clockspeed';
         stPercentage: S := 'percentage';
       end;
       DataGrid.Cells[1, i + 1] := S;
       DataGrid.Cells[2, i + 1] := ssName;
       DataGrid.Cells[3, i + 1] := Format("%.7g", [ssCurrent]);
       DataGrid.Cells[4, i + 1] := Format("%.7g", [ssLow]);
       DataGrid.Cells[5, i + 1] := Format("%.7g", [ssHigh]);
       DataGrid.Cells[6, i + 1] := Format("%.7g", [ssAlarm1]);
       DataGrid.Cells[7, i + 1] := Format("%.7g", [ssAlarm2]);
       DataGrid.Cells[8, i + 1] := IntToStr(ssCount);
     end;
   end;
 end;

Последний раз редактировалось Aliens_wolfs; 16.12.2016 в 12:56.
Aliens_wolfs вне форума Ответить с цитированием
Старый 16.12.2016, 12:43   #7
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Вы меня заинтриговали, я даже с пудна код достал и с Китайского перевел - http://prntscr.com/dk3gnq
но с температурой проца у него проблема, а со смартом норм.

Сейчас еще декомпильнул прогу OpenHardwareMonitor, она у меня норм достает все данные http://prntscr.com/dk3g62 но как код глянул там все тоже через WMI достает, правда пока не разобрался откуда именно.
denis76560 вне форума Ответить с цитированием
Старый 16.12.2016, 12:59   #8
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сейчас с Bios экспериментирую ищу модуль usmbios.pas. Нашел документы по параметрам Bios с примерами на asm http://www.dmtf.org/standards/smbios

Последний раз редактировалось Aliens_wolfs; 16.12.2016 в 13:09.
Aliens_wolfs вне форума Ответить с цитированием
Старый 16.12.2016, 13:03   #9
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

https://github.com/RRUZ/tsmbios/tree/master/Common
denis76560 вне форума Ответить с цитированием
Старый 16.12.2016, 13:10   #10
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

О спасибо а то меня там на регистрацию склоняли для скачивания

Кое какую инфу получилось вытащить с Bios c помощью той ссылки что дал denis76560 https://github.com/RRUZ/tsmbios/blob...Information.md
или вот еще что я нашел https://theroadtodelphi.com/category/smbios/, по крайней мере тип и кое какие указатели Bios получилось изъять, буду дальше экспериментировать.

Теперь по указателям на память Bios то что в бэкапе скрина будем доставать далее инфу.
Изображения
Тип файла: jpg Безымянный4.jpg (120.6 Кб, 166 просмотров)

Последний раз редактировалось Aliens_wolfs; 16.12.2016 в 17:25.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Температура процессора (delphi) Simply-Art Общие вопросы Delphi 14 20.06.2014 07:10
Температура ЦП sew960i Компьютерное железо 6 21.12.2012 23:31
Температура процессора HelloZAPOR Win Api 20 26.11.2011 03:09
Температура компа 102109978 Помощь студентам 0 13.11.2010 01:07
Температура процессора без использования wmi. the_deer_one Общие вопросы C/C++ 0 24.08.2010 11:54