2012-06-24 47 views
3

我已經搜索和搜索,但沒有發現如何在Delphi中,並且我正在使用XE2如何從Unvoton NCT6776F芯片讀取傳感器信息。我猜測我需要某個程序集,但是我無法找到關於如何開始的東西。這裏是芯片的註冊表細節。從Delphi中讀取Windows中無WMI支持的芯片組的溫度和風扇速度

Bus Type = ISAIO 
One NCT6776F 

Unvoton NCT6776F, IndexReg=A35, DataReg=A36 
============================================================= 
Fan1 Fan Speed, Bank 6, Offset 0x30, 0x31 RPM = 1350000/(Data=HighByte[12:5], LowByte 

[4:0]) 
Fan2 Fan Speed, Bank 6, Offset 0x32, 0x33 RPM = 1350000/(Data=HighByte[12:5], LowByte 

[4:0]) 
Fan3 Fan Speed, Bank 6, Offset 0x34, 0x35 RPM = 1350000/(Data=HighByte[12:5], LowByte 

[4:0]) 
CPU Voltage, Bank 0, Offset 0x20  Voltage = Data* 0.008 
VCCSA Voltage, Bank 0, Offset 0x21  Voltage = Data* 0.008 
+3.3V Voltage, Bank 0, Offset 0x22  Voltage = Data* 0.016 
Gfx Voltage, Bank 0, Offset 0x24  Voltage = Data* 0.008 
+5V Voltage, Bank 0, Offset 0x25  Voltage = Data* 0.008/ (10./40.) 
+12V Voltage, Bank 0, Offset 0x26  Voltage = Data* 0.008/ (10./66.2) 
3.3VSB Voltage, Bank 5, Offset 0x50  Voltage = Data* 0.016 
VBAT Voltage, Bank 5, Offset 0x51  Voltage = Data* 0.016 
CPU Temperature, Bank 7, Offset 0x17, 0x18 PECI Count = (Data=HighByte,LowByte<15:6> 

hightest bit as sign bit) 
High: PECI Count>-15; Midium: -40<PECI Count<=-15; Low: PECI Count<=-40 
System Temperature, Bank 0, Offset 0x27 Temperature = Data 
Peripheral Temperature, Bank 1, Offset 0x50 Temperature = Data 
Chassis Intrusion, Bank 0, Offset 0x42, BitMask 0x10 1 = Bad, 0 = Good 
      (Clear Bit: Bank 0, Offset 0x46, BitMask 0x80) 

Power Supply Failure, NCT6776F, Logical Device 0x0B, CRF7h, BitMask 0x01 0 = Good, 1 

= Bad 

如果任何人有任何想法,我怎麼能讀這些地址,並獲得所需的信息,我將非常感激。如果任何人都可以發佈一些示例代碼,那會更好。我實際上試圖做的是將溫度傳感器量表添加到我的服務器軟件中以進行監控。由於我正在構建的應用程序的性質,我需要直接整合數據並且不使用第三方應用程序。

謝謝。

Alex。

+0

看看['此POST'](HTTP執行外圍I/O: //stackoverflow.com/a/1541345/960757)(例如本頁上相關部分的第四個命中)。 – TLama

+0

我在應用程序中爲許多其他功能使用WMI,但是這個「Select * FROM Win32_TemperatureProbe」不起作用。我認爲SuperMicro沒有正確實施它。無論如何,查詢時它不會返回任何內容。需要找到另一種方式。 – AlexPlasma

+0

如果不支持WMI,則需要枚舉安裝在Windows系統上的設備驅動程序,並找到直接與驅動程序對話的方式。如果此芯片組沒有驅動程序,則必須編寫一個驅動程序,這必須使用Windows設備驅動程序DDK以常規C代碼完成。 –

回答

0

根據關於lm-sensors wiki的信息 - 使用LPC總線訪問設備。有一個專門的GPLed linux driver,可以下載到Linux下訪問該設備。如果我自己計劃執行某個實現,則不會考慮此源,因爲可能會使用任何專用代碼來訪問設備。

爲了用delphi(如在inb/outb指令或它們的等效物),你應該看看的問題how to write to I/O ports in Windows XP

+0

我看了一下使用IO.DLL,但是誰能解碼我應該使用CPU溫度給定的上述數據的地址?抵消?銀行? IndexReg?任何想法如何找到正確的地址?謝謝。 – AlexPlasma

+0

我很確定驅動程序已經寫入Windows。但是,OP不知道如何與Windows驅動程序層進行通信,並且WMI未針對此特定設備驅動程序啓用。 –

相關問題