|
|
最近在写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
} |
|