找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 8006|回复: 2

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写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
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了6 O! M- t* @; b) ^
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2024-5-20 19:56 , Processed in 0.020254 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表