在Delphi中,在没有WMI支持的情况下读取芯片组上的温度和风扇速度

时间:2012-06-24 13:56:41

标签: delphi

我已经搜索过但没有发现德尔福的情况,我正在使用XE2如何从Unvoton NCT6776F芯片读取传感器信息。我猜我需要在某个地方进行一些装配,但是我怎么也找不到如何开始。以下是该芯片的注册表详细信息。

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

如果有人知道如何阅读这些地址并获得所需信息,我将非常感激。如果有人可以发布一些示例代码,那就更好了。我实际上要做的是在我的服务器软件中添加一个温度传感器测量仪用于监控目的。由于我正在构建的应用程序的性质,我需要直接集成数据而不使用第三方应用程序。

感谢。

亚历。

1 个答案:

答案 0 :(得分:0)

根据lm-sensors wiki的信息 - 使用LPC总线访问设备。有一个专用的GPLed linux driver可以下载以访问linux下的设备。如果我自己计划实现一个实现,我不会看这个来源,因为有可能污染为访问设备而编写的任何专有代码。

为了使用delphi执行外围I / O(如inb / outb指令或其等效指令),您应该查看问题how to write to I/O ports in Windows XP