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