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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法& ]6 g1 S0 a1 ?8 _. P
1 A' d2 [( Z2 g9 }! _# h! {6 i4 N& x
问题
* ~& Z* n4 T4 Z在获取CPU温度和风扇转速后
0 y2 g0 b$ w0 N5 l再次循环获取 CPU温度,数据就出现错误了,为什么?, B' t) n* B" L: W% D8 C( n
做了缓冲区满空判断
5 k4 l4 `5 x, X4 C! x. |6 b, h5 J1 A) M下面是判断代码
; B' w) l( V: @1 X" G: Z0 c" u# ]2 F* G6 Y, t
void check_buffer(int in_out,int port)
" r; I' P% ^# T: a{7 p: i9 ?9 B( b6 A) r: n1 r
        DWORD dw_temp=0;; L  r3 d- ^% b1 f; r& C
        GetPortVal(port,&dw_temp,1);$ e) I2 S( Y) N7 B, Q
        if(in_out==INPUT)
% `& Q8 M% y( z$ W* G        {& F: y, v/ h  W' [7 Y5 K  w
                while(dw_temp&0x02)6 V" M. h5 q9 s0 m) u
                {/ S& J# G/ o( L, d! B* N9 E' E) S1 Y
                        GetPortVal(port,(&dw_temp),1);
4 M( R( d( i6 Q3 K9 U" v                        dw_temp=(BYTE)dw_temp;
" {, e) g8 P3 r( w. J% ?                        Sleep(5);}! O* t" D4 E% k$ k; D3 Q' L3 o8 Z
        }) ~0 W, G. @$ i7 D& E+ I! }
        else if(in_out==OUTPUT)        
' l% Z( C8 x6 C1 y. p3 f( A{. l, q$ X# Y: f* k# X( {9 k
                while(!(dw_temp&0x01))' _2 x- z" Z3 n7 m6 |, y
                {6 u, k0 k8 |2 b4 a% `
                        GetPortVal(port,&dw_temp,1);
: V: u7 i0 a/ }$ u# ]2 p3 _                        dw_temp=(BYTE)dw_temp;
0 I( P5 {" ]1 O' v  u2 ^                        Sleep(50);; Y! h2 D6 \( y8 I' X! _; a! m
                }3 l3 {3 N0 C. H( L  z, s
        }
/ P6 Q0 Q5 Q1 v  f. d) g2 {+ ]4 A) _. O
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了
% H2 D% B! Y" J5 L$ `在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 20:58 , Processed in 0.055100 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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