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

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

но не повезло. - перечислитель.Current " выбросил исключение.

Как я могу добиться этого ? Спасибо.

ошибка :

"эта система не поддерживает обязательные объекты WMI (1) - Проверьте файл исключений rnnot поддерживается rnrn at Система.Управление.ManagementException.ThrowWithExtendedInfo (ManagementStatus errorCode)rn at Система.Управление.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext ()rn на Седарлогик.WmiLib.SystemStatistics.RefreshReadings() в D:DownloadsTempMonitorSrcTemperatureMonitorSlnWmiLibSystemStatistics.cs: линия 25rn at Седарлогик.WmiLib.SystemStatistics.get_CurrentTemperature() в D:DownloadsTempMonitorSrcTemperatureMonitorSlnWmiLibSystemStatistics.cs: линия 87rn at TemperatureMonitor.SystemTrayService.CheckSupport() в D:DownloadsTempMonitorSrcTemperatureMonitorSlnTemperatureMonitorSystemTrayService.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


Я знаю, что этот поток старая, но я хотела добавить к нему немного другой подход. Получите make / model с чипа ввода-вывода на материнской плате и получите лист данных для указанного чипа ввода-вывода (я буду использовать чип ITE IT8783F для справки здесь). Посмотрите под что-то вроде контроллера среды и вычислите порты доступа и чтения. Да... вы будет должны понимать 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

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