Как считать температуру с датчиков на материнской плате?

Пытаюсь получить температуру процессора.

Уже пробовал использовать WQL (класс WMI MSAcpi_ThermalZoneTemperature), но, видимо, это еще не реализовано для всех платформ. На большинстве машин он просто возвращает все существующие сообщения об ошибках через HRESULT возвращаемое значение Сама температура не возвращается.

Идея состоит в том, чтобы прочитать эту температуру непосредственно через порт шины. Я нашел библиотеку, которая предоставляет функциональные возможности функций outp и inp, и с ее помощью удалось начать инициировать соединение (NTPort), однако, возникает вопрос, к какому порту подключаться для чтения данных. Микроконтроллер IT8728F. SpeedFan (приложение, которое может считывать температуру) в своих журналах сообщает, что считывает данные с порта 0x290. Однако при подключении к нему возвращаемые данные не похожи на температуру (всегда возвращается 29).

Итак, следующее, что пыталось сделать, — это прочитать данные с любого порта, пытаясь определить, выглядят ли какие-либо данные, которые прошли, как температура. Однако из каждого порта поступали некоторые данные, которые были либо слишком низкими, либо слишком высокими, чтобы быть реальной температурой.

int CPU_TEMP;
Outp(INDEX, BANK_SET);
Outp(DATA, Inp(DATA)|0x01);
for(CPU_TEMP=0x0;CPU_TEMP<0x999;CPU_TEMP++)
{
Outp(INDEX, CPU_TEMP);
printf("CPU temp: %iC\n", Inp(DATA));
}

0

Решение

возможно ваш процессор 29 градусов по Цельсию и стабильный. Это кажется законным для процессора.

Кроме того: это 0x00000029 или 29 декабря? это имеет большое значение

0

Другие решения

Других решений пока нет …