|
|
最近在写EPC的CPU温度 风扇转速获取方法- b2 A) ~$ g q1 f+ Y5 n# D0 e
9 f8 i+ ]) m6 P问题' j3 l) h/ Y8 G0 H0 \8 T* B
在获取CPU温度和风扇转速后
; d% ^; |, A: ]3 p! O8 K2 V再次循环获取 CPU温度,数据就出现错误了,为什么? @2 H" g Z% n% k v$ w+ s' D
做了缓冲区满空判断% U- M1 Z6 w- F/ f; F) w7 n
下面是判断代码8 w) D) V" g' N$ m- y2 V
! b3 L9 A2 D8 t2 e9 z: ]void check_buffer(int in_out,int port)9 q8 L( ?# K. o( ~) I; n
{
" ^( Q9 [% ]( f; K$ w; e$ N DWORD dw_temp=0;
" ^5 Z# j" c" D4 O! ~5 H GetPortVal(port,&dw_temp,1);6 E1 a% a: |* N M( I# `8 f
if(in_out==INPUT)
R! Q& N) e% y& B8 i+ J {% F4 |! W4 S/ F" ?2 Q
while(dw_temp&0x02)* F8 R7 h1 `3 Q) }5 Z# I% q. N
{
) }- x2 ]* c* h& ]8 @) @ GetPortVal(port,(&dw_temp),1);
- I+ B a( U2 `, v: i1 d1 r3 p# T dw_temp=(BYTE)dw_temp;
/ f6 d- |' [9 e' X6 L Sleep(5);}
8 H0 r( D- q. }8 v' N5 [' a }
; O8 V4 N/ a7 |" W5 x/ ~( b3 } else if(in_out==OUTPUT)
! N& r& O2 @ }# u" h& ~, w{. h9 K- @ ]- s% W
while(!(dw_temp&0x01))1 s/ I2 c: Z; m' F! F' ~1 H
{
' l1 F: C9 k+ q& S+ T GetPortVal(port,&dw_temp,1);8 b% @7 m: {- M- e% E A
dw_temp=(BYTE)dw_temp;
# t3 S$ a1 W4 f7 \; k1 S Sleep(50);
, o- Q5 g6 B" ~7 X8 J }
! L& P6 i( o% p# ~: f" n }
/ E8 o+ \' ?9 | _: o1 G& z" b: x
# _; g( U/ C/ I( a s/ M} |
|