|
|
最近在写EPC的CPU温度 风扇转速获取方法" P E3 U7 ^4 `( c6 }9 A& b
b7 B1 q/ l- {2 E$ M* ^
问题( k+ R- ^- l* x- A6 g% P6 o8 c
在获取CPU温度和风扇转速后: v3 |" J; ^( v
再次循环获取 CPU温度,数据就出现错误了,为什么?
$ b, ]% I8 l+ M; |做了缓冲区满空判断
" Q, ^, p; b5 x0 i- Y4 O下面是判断代码; W2 z. s B+ I7 T. h
+ [. q# C0 F6 v! Mvoid check_buffer(int in_out,int port)
4 X. t) ?% L, [% C{
% T' P; r) p" X% M- D DWORD dw_temp=0;
9 G# c# h/ d$ i8 O+ X' \, S GetPortVal(port,&dw_temp,1);
% }" ]5 ~7 e) i4 u4 U if(in_out==INPUT)
\1 e" e0 t+ o# u6 V8 d {
$ ^- L0 `3 u" R" w; B s3 o while(dw_temp&0x02)) e, N! U, N4 `2 a# `; q
{$ ^) ]$ R! d% ^7 c. f! j' v
GetPortVal(port,(&dw_temp),1);
" S8 R9 b8 ~' s7 Q" `# b dw_temp=(BYTE)dw_temp;
. t0 J4 x; N& g- S p- \$ S Sleep(5);}
* @4 J: g0 O# `" K9 X9 h }0 S* S, R0 V% M5 U
else if(in_out==OUTPUT) + K" I5 x+ c) p9 J E
{$ i9 W4 k: l) F& b3 O' ]+ \/ ^; W
while(!(dw_temp&0x01))
3 P: _/ F; g3 L {( W3 N" d& I6 \- p
GetPortVal(port,&dw_temp,1);
5 j1 T { p' l+ ], N e; U dw_temp=(BYTE)dw_temp;3 u1 v3 h! q. N& Q$ w- V
Sleep(50);
) m8 m. u# _& d9 G }
- Q4 A% Z9 X* M/ D }
- C, R4 J% t8 S5 u; X7 i3 G9 l9 A, z. B( U" d
} |
|