Как получить информацию о температуре процессора из 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
теперь вам просто нужно выяснить, что вы хотите с ним сделать. Помните, если вы обнаружите, что вы получаете сумасшедшие дурацкие номера, вы либо тянете из неправильного регистра, либо вам может понадобиться для реализации коэффициента масштабирования (как и при показаниях напряжения). Это тоже должно быть в паспорте.