2010-09-01 44 views
8

Cách nhận thông tin Nhiệt độ CPU từ Bios bằng cách sử dụng C# Tôi đã thử mã này trong CPU temperature monitoringLàm thế nào để nhận được thông tin Nhiệt độ CPU từ Bios bằng cách sử dụng C#?

Nhưng không may mắn. 'enumerator.Current' đã ném một ngoại lệ.

Làm cách nào tôi có thể đạt được điều này? Cảm ơn.

Lỗi:

"Hệ thống này không hỗ trợ cần đối tượng WMI (1) - kiểm tra ngoại lệ tập tin \ r \ nKhông hỗ trợ \ r \ n \ r \ n tại Hệ thống .Management.ManagementException.ThrowWithExtendedInfo (ManagementStatus errorCode) \ r \ n tại System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext() \ r \ n tại CedarLogic.WmiLib.SystemStatistics.RefreshReadings() trong D: \ Tải xuống \ Tem pMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs: dòng 25 \ r \ n tại CedarLogic.WmiLib.SystemStatistics.get_CurrentTemperature() trong D: \ Downloads \ TempMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs: dòng 87 \ r \ n tại TemperatureMonitor.SystemTrayService.CheckSupport() trong D: \ Downloads \ TempMonitorSrc \ TemperatureMonitorSln \ TemperatureMonitor \ SystemTrayService.cs: dòng 260"

+0

Ngoại lệ của nó là gì? – Hogan

+2

Bạn sẽ cần phải có được một nhà cung cấp WMI được cải thiện từ nhà sản xuất bo mạch chủ của bạn. Đừng tin vào việc nhận được một. –

+0

Bạn có thể xem tất cả các đối tượng WMI bằng "WMI Studio". Nó là một nhà thám hiểm cho các đối tượng WMI. Bạn có thể tìm thấy nó bằng công cụ tìm kiếm yêu thích của bạn. – linuxuser27

Trả lời

0

tôi muốn giới thiệu các phương pháp sau đây. Có một số ứng dụng miễn phí giám sát nhiệt độ CPU và hiển thị nó. Hãy thử tải xuống một số rồi phân tích ứng dụng để xem họ đang gọi phương thức nào để khám phá cách thức hoạt động của chúng. Có thể họ có cách tiếp cận rất khác với phương pháp hiện tại của bạn. Ngoài ra bạn có thể có thể chỉ cần gửi email cho họ và hỏi làm thế nào họ đã làm điều đó ...

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

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

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

+2

@Anuya: Vậy làm thế nào bạn có được nhiệt độ CPU cuối cùng? Hãy chia sẻ. –

2

Bạn cần phải hỗ trợ nhiều cảm biến phần cứng khác nhau để thu thập dữ liệu nhiệt độ. Cách tốt hơn là hãy sẵn sàng sử dụng các giải pháp như thế này:

1) Mở phần cứng Monitor - mã nguồn mở .NET 2.0 Ứng dụng:

http://openhardwaremonitor.org/

2) Core Temp - ứng dụng miễn phí và NET API để lấy dữ liệu nhiệt độ:

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

1

tôi biết chủ đề này là cũ, nhưng tôi muốn thêm vào nó với một chút của một cách tiếp cận khác nhau. Lấy mẫu/ra khỏi chip I/O trên bo mạch chủ và lấy bảng dữ liệu cho chip I/O nói (tôi sẽ sử dụng chip ITE IT8783F để tham khảo ở đây). Nhìn dưới một cái gì đó giống như bộ điều khiển môi trường và tính toán truy cập và đọc cổng. Có ... bạn sẽ phải hiểu HEX và MSB và LSB và tôi sẽ không đi vào các tính toán/giải thích ở đây (ngoài phạm vi). Bây giờ, trong trường hợp này cổng truy cập là 295 và cổng đọc là 296.Đọc tiếp trong phần này có một bảng cho Thanh ghi Bộ điều khiển Môi trường. Trong trường hợp này, nhiệt độ CPU trong đăng ký 2Ah (hoặc 0x2A). Vì vậy, mã VB/C# tôi đã sử dụng để kéo thông tin trông giống như sau:

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 

Bây giờ, bạn chỉ cần tìm ra những gì bạn muốn làm với nó. Hãy nhớ rằng, nếu bạn thấy rằng bạn đang nhận được số điên lập dị, bạn hoặc là kéo từ đăng ký sai hoặc bạn có thể cần phải thực hiện một yếu tố mở rộng quy mô (như bạn làm với các bài đọc điện áp). Điều này cũng nên nằm trong bảng dữ liệu.

+0

Đây là tài liệu liên quan từ Intel, Giám sát CPU với DTS/PECI từ tháng 9 năm 2010, http://download.intel.com/design/intarch/papers/322683.pdf với một số thông tin về cách giải thích dữ liệu nhiệt độ từ bộ xử lý Intel. –

Các vấn đề liên quan