|
|
最近在写EPC的CPU温度 风扇转速获取方法0 D: M k* F: R' V8 ~6 i+ Y4 y+ z
2 v" v( s+ l& [1 N* L问题
3 L# l( Z& u! a% g在获取CPU温度和风扇转速后' b7 W7 {3 R8 o/ N0 ?8 e
再次循环获取 CPU温度,数据就出现错误了,为什么?7 x* ` K7 W: w! W) b
做了缓冲区满空判断3 D) X% b! n8 S4 Z' m- C2 i
下面是判断代码5 @& H7 b) Q0 B. k
0 k! P" k7 {( d7 Q7 Pvoid check_buffer(int in_out,int port)
+ W6 J- Y$ q F* R3 |{
7 W* z: u0 `+ {, s4 } DWORD dw_temp=0;; \- x! k4 H! q, A) x9 z6 B) W
GetPortVal(port,&dw_temp,1);# |- e* Q$ _. K" j2 d( D y
if(in_out==INPUT) % e N0 Q0 b! {& ]) U0 q: H
{
4 P7 z6 f9 D2 B q* h% Z) f while(dw_temp&0x02)
" Q4 ^' C- Y- D, G: d& q0 k {
& B4 a a4 c9 w" A: `1 V GetPortVal(port,(&dw_temp),1);7 ~ V0 Y8 p* F q* R5 t
dw_temp=(BYTE)dw_temp;- B) \% J1 V% C$ Z4 u* \
Sleep(5);}
( X6 X* W. W$ S' E% ~) d }
$ R& [, N* D& s- s: v else if(in_out==OUTPUT) ]* {8 `# o- \
{
9 w+ E, n+ Y& n' D while(!(dw_temp&0x01)): q; }- x7 x/ W- i
{0 C! T |& L0 x6 ^! m+ z T
GetPortVal(port,&dw_temp,1);3 H* r/ s4 G0 m, r( B: p7 E
dw_temp=(BYTE)dw_temp;: o W& F1 v, I* y
Sleep(50);
0 f5 c/ G4 D) o6 c9 d }4 ?3 u) z5 Y( b2 M- R
}
8 G# y f& a+ X$ k4 }
( t! D% n, x' c) {; g- p& i! t: I} |
|