2011-12-18 4 views
1

Итак, я сделал программу с WPF, C# и WMI в качестве небольшого проекта для сбора спецификаций компьютера и поместил его в SourceForge, потому что он был малоприличным для меня.
Вскоре я обнаружил, что SoftPedia подобрала его и заметила на скриншоте, что при чтении напряжения произошла ошибка. Это изображение зазубрины с их страницы:wmi C# - WMI Предоставление неверных показаний напряжения

http://i.stack.imgur.com/8QpBq.png

В данный момент я источник напряжения с помощью «CurrentVoltage», например,

foreach (var item in new ManagementObjectSearcher("Select * from Win32_Processor").Get()) 
{ 
    labelName.Content = (decimal.Parse(item["CurrentVoltage"].ToString())/10).ToString() + " v"; 
} 

Как вы можете видеть на картинке, он читает, как 0В на картинке. Мне было интересно, нужно ли мне переключать «CurrentVoltage» на «VoltageCaps», или если мне нужно будет что-то вроде чтения SMBIOS напрямую.

Если последний, пожалуйста, укажите, как это сделать, спасибо.

+0

Пожалуйста, открепите свой код четырьмя пробелами. – SLaks

ответ

2

На основе документации для Win32_Processor класса:

напряжения процессора. Если установлен восьмой бит, бит 0-6 содержит напряжение, умноженное на 10. Если восьмой бит не установлен, то установка бит в VoltageCaps представляет значение напряжения. CurrentVoltage устанавливается только тогда, когда SMBIOS обозначает значение напряжения.

Это означает, что, если он читает, как 0 когда маскируется 0x80, то вы должны использовать значение из VoltageCaps в «состоянии» напряжения в качестве одного из 3-х перечисленных значений VoltageCaps, если результат выполнения запросов не NULL , и в этом случае напряжение неизвестно.

+0

Есть ли какой-либо другой метод, используя C#, чтобы получить напряжение? – LMS

+0

Ничего не примечательного источника; Прости! Я использую для доступа к данным IPMI/Raw датчика из C++, который, как правило, является источником всех показаний, отображаемых в информации WMI. – Petesh

+0

Это может показаться глупым, но возможно ли использовать C++ в C#, возможно, используя DLL в C++ и ссылки на него в C#? Если предыдущий был возможен, и я сделал это, была ли ошибка, как в предоставленной картинке? – LMS