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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
; c; f% ?4 j8 I$ ?! g. |
+ j9 w& R  Y' p6 \  M问题: X+ D: Z3 Q7 ^( q& i9 f/ y
在获取CPU温度和风扇转速后' E' o5 ?4 }! |1 p1 x
再次循环获取 CPU温度,数据就出现错误了,为什么?3 q2 _6 U2 M; Q3 Z9 S
做了缓冲区满空判断
  {0 \1 B: y9 J- z: s+ D  Y3 x下面是判断代码; O3 I; i$ w2 i7 d+ w
9 a+ F4 K+ f5 f' j+ ?9 m! s
void check_buffer(int in_out,int port)
& W4 W$ N4 G- f% N+ }$ b{0 Q" i2 g3 D5 s, E' P4 n1 Z
        DWORD dw_temp=0;
  w  K1 y) x+ B- m, N5 w        GetPortVal(port,&dw_temp,1);
$ {7 i5 Q3 k0 n4 K. M4 {        if(in_out==INPUT)
! h5 L8 w& [1 \3 s" C7 q+ \9 G" f" j& E        {
5 t2 _8 N, K# J7 f                while(dw_temp&0x02)
7 P+ |1 L2 P. L                {
+ {( |: C% V5 J% b) F8 G; e                        GetPortVal(port,(&dw_temp),1);
+ \3 `, B& q' \. e+ {' b' w                        dw_temp=(BYTE)dw_temp;
# L% G2 k- O3 A6 z! k' F                        Sleep(5);}. j, B& _( W9 Y
        }
8 j. r) j7 h( p        else if(in_out==OUTPUT)         / N6 j0 H$ M$ B
{
7 M" Q( _: z7 W2 d                while(!(dw_temp&0x01)): Y4 Y! t: L( H, n! s% Y7 U6 F! n' s
                {
+ h1 c7 u5 X: U" ~, ~3 D5 O                        GetPortVal(port,&dw_temp,1);# A, j+ A' c# k% V' F) s
                        dw_temp=(BYTE)dw_temp;. M6 x7 w* `* w* ~. ~) F' |) M
                        Sleep(50);2 R9 u* ?3 c1 M8 G* m  [! ~
                }
% t' k% Q! W* P2 X  q8 Y        }
0 P" h! U1 Q& c
8 M: T& S5 E* Y% V}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了9 I  A  |3 k& V% Z6 a4 g. }& H0 k
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 05:40 , Processed in 0.051899 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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