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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法5 a( S& }4 Z# Y1 I
! B8 ~8 R% V0 X; S3 l) \
问题0 D5 O  l& @% i; I1 e6 A; y
在获取CPU温度和风扇转速后
, J8 ]) ?3 D2 b2 h2 p8 F3 ]' K9 B再次循环获取 CPU温度,数据就出现错误了,为什么?
0 N" X7 N6 ~# k做了缓冲区满空判断6 t- E0 }1 J8 i1 K" k
下面是判断代码
/ b# Q1 u; z( Q& u9 x0 C8 S4 B5 x2 c$ o3 j" S% `
void check_buffer(int in_out,int port)
  f9 g3 T, S; A1 x9 N{5 A4 |1 P+ ]- Z3 Z' \2 k7 b& ~
        DWORD dw_temp=0;  d0 g+ ~( a, y0 @, M6 I. ]
        GetPortVal(port,&dw_temp,1);5 D2 v7 r# x9 B0 ^( K9 E
        if(in_out==INPUT)
) h2 A7 X: p) ?! ?# H6 k1 z        {; W5 q* ]" M& ]0 Y6 Q! s. Y
                while(dw_temp&0x02)
; ?0 ?9 n) o3 Z3 ~/ j6 P6 m                {
  l6 L( E" {& ^& @: _                        GetPortVal(port,(&dw_temp),1);
" p" j9 i' z7 f- A                        dw_temp=(BYTE)dw_temp;; Q  M5 v2 [* C4 ~! I9 [
                        Sleep(5);}
6 b6 T5 B- l5 F% b4 i) ~        }
. r5 D  X& |5 g% L; U8 Q' S0 R        else if(in_out==OUTPUT)        
7 g) [/ O5 s4 {1 a{
! \( u5 ]- s. a: x5 s# X                while(!(dw_temp&0x01)); X* D6 ?( Y+ Z4 d+ Y4 }$ `6 e& D
                {4 M" a! |3 U' U; w2 t
                        GetPortVal(port,&dw_temp,1);/ h' }* b' v0 n  J9 `- i
                        dw_temp=(BYTE)dw_temp;
& V( j; G+ A1 H                        Sleep(50);
& v1 V- R/ g' R                }+ X" `7 b; j' ^* I- i
        }
/ g" }: U% Q% X7 j8 ]' w0 M% X3 O7 q) K
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了0 C$ P% ^4 E& V4 h$ V
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-5 00:26 , Processed in 0.016761 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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