|
|
最近在写EPC的CPU温度 风扇转速获取方法
r: B7 \3 H" G0 [' b# E9 A
( g/ a. G( w. D问题
) z9 L5 K1 P" N在获取CPU温度和风扇转速后: z) m; [" {, d& B, K/ S
再次循环获取 CPU温度,数据就出现错误了,为什么?
; J9 y; T. `9 L" z @2 G& O做了缓冲区满空判断/ E# U, s# ~8 z
下面是判断代码
; V' U$ `+ k/ F
, K2 e% K) h$ Ivoid check_buffer(int in_out,int port)( `' u- {3 W) l0 {% P+ ~4 d
{2 [% e; m7 l N: Z' [& `4 ]3 ^0 @
DWORD dw_temp=0;# b0 g! e# H; k9 f' i! u
GetPortVal(port,&dw_temp,1);
1 n- V& h9 ` ~, b3 x! E: R if(in_out==INPUT)
; K+ v' K& [' `7 a! N {" U. G! t6 D; Q9 m
while(dw_temp&0x02)9 G ?& u# i+ Z
{3 b" h& C& A3 B, b [. A+ U' u
GetPortVal(port,(&dw_temp),1);
) j1 Z" _& P9 P8 D4 v" v dw_temp=(BYTE)dw_temp;
+ p9 I* z ?4 h z) q Sleep(5);}
2 b7 |1 I: [8 Y* Q, y' r/ a$ v }5 W+ i) B2 Z$ x- } J) p
else if(in_out==OUTPUT) : ^* W4 K8 ~0 a
{0 P. {: Q4 h" O' y3 }' |+ z
while(!(dw_temp&0x01))
+ q5 o' C$ E. S' Z { x$ Q3 ?+ w+ j$ }
GetPortVal(port,&dw_temp,1);/ F9 @1 {+ c+ P, i7 d" y
dw_temp=(BYTE)dw_temp;4 ^0 J1 o; W. n3 w3 `5 \
Sleep(50);
Q$ t$ V. b6 q H }& q; J: A( F/ e3 k) j
}: m0 K$ u- p% Y
: Z+ c& R' A) K6 L C3 i& u4 j} |
|