|
最近在写EPC的CPU温度 风扇转速获取方法
! k+ m. M# w5 F; P6 V" X, X& H, b4 @& z( `
问题
+ j3 `, Q$ e& S- U在获取CPU温度和风扇转速后4 t5 m: O% L0 d5 R% U
再次循环获取 CPU温度,数据就出现错误了,为什么?
' C# r' y* A+ u+ z6 n5 U做了缓冲区满空判断
( X6 ~; Q: m' o2 x下面是判断代码- C. q( I# l# Z& \* u; t; `3 _
. O8 N2 E5 R. C
void check_buffer(int in_out,int port)8 ]6 a- M9 k) N' O2 U4 x
{2 n, X; b. i1 D( y% J0 y) b n
DWORD dw_temp=0;
4 H. [# S# }- X* j1 c GetPortVal(port,&dw_temp,1);
% t( i" [' t0 b9 U if(in_out==INPUT)
; h) q0 c8 Q2 N" [4 G) _) \* L& ? {
& ~6 ^ `) K/ a; H. v0 p while(dw_temp&0x02)
) L6 I, i k6 q: U1 ^" X6 j {& z: I) h& v( H: [, P
GetPortVal(port,(&dw_temp),1);6 |7 `- k/ V! A! b$ j
dw_temp=(BYTE)dw_temp;
: U% X% r+ Z6 J% w# P Sleep(5);}
^/ b) F, M5 _( e% Y }+ d$ z; w9 @7 V" G% z5 c+ J Q
else if(in_out==OUTPUT) 0 V8 o/ u& w* ^) M8 {: s- Y' h
{
- T* F$ o0 q# u0 J" u- ]. ^ while(!(dw_temp&0x01))9 f4 S/ b8 b# f* I7 F/ A
{
. N: o. z5 ]2 P2 h GetPortVal(port,&dw_temp,1);
7 a$ r; {" X7 A/ w% [. Y dw_temp=(BYTE)dw_temp;$ z( V* p; \( J" j6 S2 @# n" r) s
Sleep(50);' e8 g7 X' g P, U( E; Y7 k
}
* A0 f x6 y4 M7 H9 s3 d2 U' c }: A# B/ S; f% g. U g8 u2 d5 L5 Y
8 n0 i" F+ |- R! `) s
} |
|