找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 15367|回复: 12

如何获得台式机的cpu温度和风扇的速度

[复制链接]
发表于 2009-12-23 13:32:58 | 显示全部楼层 |阅读模式
不知道如何才能获得cpu的实际温度.
$ i0 D5 q' G2 x9 N) D. d! ~: u(1)通过Wmi的话好像没有相关的值win32_fan等找不到相关的值
4 v* C9 C& _3 E7 m  Q(2)通过win32API好像没有相关的函数
. ?" ~7 [' V/ i) w$ S(3)网上有人说通过smbus的i2c可以。不过我从来每做过希望哪位大哥指点最好是有示例的代码。
  {2 p3 W3 Q' W(4)我看NB和Epc都是通过ec来实现当时在台式机上实现不了. z: x& ~4 ~) ]5 l6 x
总之希望各位老大多多帮忙,谢谢
 楼主| 发表于 2009-12-23 19:17:51 | 显示全部楼层
哪位大哥帮帮忙啊,公司急着要的。
回复

使用道具 举报

发表于 2009-12-24 11:02:43 | 显示全部楼层
那得看你的系统怎么支持温度的吧,CPU旁边有没有sensor?
回复

使用道具 举报

 楼主| 发表于 2009-12-24 14:07:07 | 显示全部楼层
我是要获得台式机主板上的温度。之前有代码是用ec读的温度用在主板上不行。系统怎么支持温度你是说acpi或amp吗?sensor的话应该没有。我是需要一中通过的方式。希望有谁有源代码帮我下
回复

使用道具 举报

发表于 2009-12-28 19:05:51 | 显示全部楼层
台式主板使用的Supper I/O CHIIP的 Hardware monitor 功能來偵測,控制溫度及FAN Speed等值
回复

使用道具 举报

 楼主| 发表于 2009-12-29 11:51:36 | 显示全部楼层
谢谢你的回复我也找到了对应的资料。我的是winband的型号。我下了他的说明书。他说295是地址端口,296是数据端口。主板温度是8位的输入27h,这个可以得到正确的温度。cpu内部温度是9位的50h为高位,51h为低位。我于是用winio输入50h,51h到295,在296读出来是-1。不知道如何算,希望楼上的指教下。谢谢了
回复

使用道具 举报

发表于 2009-12-29 17:23:36 | 显示全部楼层
你的SIO 是winbond W83627DHG , 還是NCT6775F ? / t5 w) {2 \6 W1 |# m, `5 u, }' Z, `

7 A- E% I, L% \5 N0 p, [! U. @) g. b是如何讀取的? 有沒有代碼?
回复

使用道具 举报

发表于 2009-12-29 17:33:58 | 显示全部楼层
W83627EHF共可監測3個溫度: CPU溫度, System溫度, Aux溫度.
' [; K  g. S$ j! ?' L7 Z4 B
$ p# L; }! a$ \" H* ^5 B0 ySystem溫度要讀取 bank 0 暫存器Index[27h].
3 k6 q" D/ v- v; X- D9 sCPU溫度要讀取 bank 1 暫存器Index[50h] 和 Index[51h].) I0 ^+ W5 [! h! C( i9 @8 r% U4 r
Aux溫度要讀取 bank 2 暫存器Index[50h] 和 Index[51h].% z& q, t2 p" X' X4 b
$ }/ U2 f( X0 Y- s# C2 [4 H  ?( h! x
Index[50h] 為溫度的整數部分.
" ~6 P+ L) E4 |' l$ H. g0 l6 t' N$ S
: t. C3 `; P2 @- } Index[51h]的 bit7 如果為 1, 代表溫度要加上 0.5 .
2 ?" `* K0 F' f  S
3 z3 R5 l  H/ Q1 s) P[ 本帖最后由 topway 于 2009-12-29 17:35 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-12-29 19:16:43 | 显示全部楼层
char a[4];" Q3 t% O4 f% y( v/ C! _/ p" n3 V. V/ V- J
DWORD temp =0;
2 j- ~/ N/ {$ wSetPortVal(0x295,0x50,1);- z: |( t6 C9 @& S
GetPortVal(0x296,&temp,1);
& j+ ~- P0 e" R: b0 W0 X. ]( Z我是用winio来读的。文档我也看了。50h和51h那里应该如何来写呢。我这样写读出来的是-1,9 f, B2 ?8 \; H/ T% B1 }. g
SetPortVal(0x295,0x27,1);2 n6 ?1 Z% D! e3 P
GetPortVal(0x296,&temp,1);& T' z1 p1 k  E- H9 j. z" e! o
这个系统温度读出来是对的。是不是bank1的位置要移位啊?
回复

使用道具 举报

发表于 2010-1-4 10:30:22 | 显示全部楼层
是award bios还是ami bios,一般award是295,296。但是ami的是A15,A16。
回复

使用道具 举报

发表于 2010-1-4 10:31:23 | 显示全部楼层
不过要看你是否有去改default的设定了,如果你把AMI的改成295,296也是可以的,所以要问你们做BIOS的了。
回复

使用道具 举报

 楼主| 发表于 2010-1-4 13:01:45 | 显示全部楼层

回复 11# laoshumice 的帖子

谢谢你楼上的。是不是说传感器的型号的话是没有关系的。只要读出bios的厂家,award bios的都是295,296,ami bios的都是A15,A16。除了这两中每其他的可能了把?
回复

使用道具 举报

发表于 2010-1-12 13:53:39 | 显示全部楼层

回复 12# lzjdlsl 的帖子

我见过的好像就是这两个port了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-6-8 08:26 , Processed in 0.049300 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表