Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать температуру 
:(
    Опции темы
Delphist
Дата 20.4.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Как узнать температуру проца + скорость вращения вентилятора.
Только не говорите что это не возможно. Внизу исходник на асме. Мож кто перевести его может!

Присоединённый файл ( Кол-во скачиваний: 38 )
Присоединённый файл  65031655__VIATemp.rar


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
chipset
Дата 21.4.2005, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Есть теги _asm вроде ;)


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
AISIN
Дата 4.5.2005, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: 1
Всего: 1



Я знаю в компьютер вставляется микросхема LM79. Она может:
контролировать температуру, управлять вентиляторами, контроль вскрытия системного блока.
для определения вращения вентилятора.
номер базового порта base=0х290
получаем текущее значение счетчика outPort(Base+5,0х28.1)
//читаем значение регистра конфигурации
dwResult=0;
inPort(Base+5, 0x28,1)
uCur=dwResult;
//проверяем крутится ли вентилятор
if(uCur==0xFF)
return 0;
outPort(Base+5,0x47,1)///получим значение делителя
inPort(Base +6 ,&dwResult,1)//читаем значение делителя
switch(Cooler)
{
case 1:
uC=1<<((dwResult>>4)&0x03);
break;
case 2:
uC=1<<((dwResult>>6)&0x03);
break;
case 3:
uC=2
}
//считаем кол-во оборотов в мин для вентилятора(1350000/(uC*uCur));
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Leksey
Дата 10.5.2005, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: 1
Всего: 1



AISIN можно поподробнее о функциях: inPort и outPort
PM MAIL   Вверх
AISIN
Дата 10.5.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: 1
Всего: 1



Leksey программирование этих функций зависит от того какая у тебя операционка. Допустим в winde2000 нужно работать с драйверами устройства. А в winde98 необязательно использовать драйверы, а можно и использовать...
Аргументы inPort и outPort первый аргумент номер порта, второй передает или получает значение от порта, а третий определяет размер передаваемых данных. Допустим
Для 98
Код

#define IO32_WRITEPORT CTL_CODE(FILE_DEVICE_UNKNOWN,1\
                                          METHOD_NEITHER,FILE_ANY_ACCESS)
#define IO32_READPORT CTL_CODE(ILE_DEVICE_UNKNOWN,2,\
                                           METHOD_NEITHER,FILE_ANY_ACCESS)
включаем драйвер
hx=CreateFile("///")
//////////////////////////////
struct tagPort32
{
    USHORT wPort;
    ULONG   dwValue;
    UCHAR   bSize;
}
bool outPort(WORD wP,DWORD dw,BYTE size){
 if(hx==NULL)return false;
 DWORD Return;
 tagPort32 port; 
 port.bSize=size;
 port.dwValue=dw;
 port.wPort=wP;
 return DeviceIoControl(hx,IO32_WRITEPORT,    
     &port,sizeof(tagPort32),NULL,0,&dwReturn,NULL);
}


Это сообщение отредактировал(а) AISIN - 10.5.2005, 23:31
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.