Как получить информацию о температуре процессора из биоса с помощью C#?

Как получить информацию о температуре процессора из Bios с помощью C# Я попробовал код в мониторинг температуры процессора

Но не повезло. 'enumerator.Current' выдал исключение.

Как я могу достичь этого? Благодарю.

Ошибка:

"Эта система не поддерживает требуемые объекты WMI (1) - проверьте файл исключений \ r \ n Не поддерживается \ r \ n \ r \ n в System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)\r\n в системе.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()\r\n в CedarLogic.WmiLib.SystemStatistics.RefreshReadings() в D:\Downloads\TempMonitorSrc\TemperatureMonitorSln\WmiLib\SystemStatistics:..SystemStatistics.get_CurrentTempera () в D:\Downloads\TempMonitorSrc\TemperatureMonitorSln\WmiLib\SystemStatistics.cs: строка 87\r\n в TemperatureMonitor.SystemTrayService.CheckSupport() в D: \ Downloads \ TempMonitorSitorS Temperature \ Температурный уровень \ Температура системы \ Температурный интервал \ температурный контроль температуры CS: линия 260"

3 ответа

Решение

Я бы порекомендовал следующий подход. Есть несколько бесплатных приложений, которые отслеживают температуру процессора и отображают его. Попробуйте загрузить некоторые из них, а затем проанализировать приложение, чтобы увидеть, какие методы они вызывают, чтобы узнать, как они работают. Возможно, у них совсем другой подход к вашему существующему. Также вы можете написать им письмо и спросить, как они это сделали...

http://www.alcpu.com/CoreTemp/

http://www.techpowerup.com/realtemp/

http://malektips.com/core-temp-cpu-windows-system-tray-taskbar.html

Вам нужно поддерживать множество различных аппаратных датчиков для сбора данных о температуре. Лучше всего взять готовые решения, подобные этим:

1) Open Hardware Monitor - приложение с открытым исходным кодом.NET 2.0:

http://openhardwaremonitor.org/

2) Core Temp - бесплатное приложение и.NET API для получения данных о температуре:

http: // www.alcpu.com/CoreTemp/developers.html

Я знаю, что эта ветка старая, но я хотел добавить к ней немного другой подход. Снимите марку / модель с микросхемы ввода / вывода на материнской плате и получите спецификацию для упомянутой микросхемы ввода / вывода (для справки я буду использовать микросхему ITE IT8783F). Посмотрите под чем-то вроде Environment Controller и рассчитайте порты доступа и чтения. Да... вы должны понимать HEX, MSB и LSB, и я не буду вдаваться в расчеты / объяснения здесь (выходит за рамки). Теперь в этом случае порт доступа - 295, а порт чтения - 296. При чтении ниже в разделе приведена таблица для регистров контроллера среды. В этом случае температура процессора находится в регистре 2Ah (или 0x2A). Итак, код VB/C#, который я использовал для получения информации, выглядит так:

Private Function GetCPUTemp() As UInt32
    Dim tCpu As UInt32
    Dim stCpu As Short
    PortAccess.Outputb(&H295, &H2A)
    stCpu = PortAccess.Inputb(&H296)
    tCpu = CType(stCpu, UInt32)
    Return tCpu
End Function

Теперь вам просто нужно выяснить, что вы хотите с этим делать. Помните, если вы обнаружите, что вы получаете сумасшедшие дурацкие числа, вы либо извлекаете данные из неправильного регистра, либо вам может потребоваться ввести коэффициент масштабирования (как вы делаете с показаниями напряжения). Это тоже должно быть в техпаспорте.

Другие вопросы по тегам