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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
: k: I3 f; |! `( I  b. x) h7 y4 ?! v- f
问题3 A+ a  f$ S* k# b$ y- a: R$ {
在获取CPU温度和风扇转速后
2 e6 m5 m% M; _6 D- P( N% ~1 J7 v再次循环获取 CPU温度,数据就出现错误了,为什么?
- ^' M8 v7 v5 l' X! I做了缓冲区满空判断
3 Z6 Q  }/ }3 b, m$ z; U下面是判断代码
- P& A/ e! n+ b( ~! Z9 ^& f
+ P: i! c5 r  [" }' Q9 |$ [void check_buffer(int in_out,int port)4 i  h7 P" L6 ~6 ^: F* ]- V
{3 n# B4 n5 }! T# s: R
        DWORD dw_temp=0;
4 }7 F' Z( r+ o3 r) |        GetPortVal(port,&dw_temp,1);3 X3 K5 D: X" a2 f7 j7 J$ N
        if(in_out==INPUT)
, O$ r9 e& B8 J- |        {
- }: e% Y4 u( Y+ a4 ^1 Z7 }                while(dw_temp&0x02)
# L8 M5 i: j( E1 k# R& Y, e' {                {
7 p4 ?' Z& u' w9 x7 z                        GetPortVal(port,(&dw_temp),1);$ o6 T& J0 N2 t0 Q5 p' z
                        dw_temp=(BYTE)dw_temp;
+ r! B7 V+ u; Z  v: P5 T1 j                        Sleep(5);}
" @" J% O! F. C1 @" s- P        }3 I: _( s' N+ l0 |: n
        else if(in_out==OUTPUT)        
6 C2 k, ^8 `5 t8 G) U7 h  ^# [2 X{( d7 j: p. t0 \3 Y8 j
                while(!(dw_temp&0x01))
, e" a, s$ m) C+ A6 r! C5 F/ z                {# l2 v9 r. }9 J9 @
                        GetPortVal(port,&dw_temp,1);% n' Z% F/ Z0 K
                        dw_temp=(BYTE)dw_temp;2 o9 s3 T( A! p4 ^" S  z7 m
                        Sleep(50);
+ T: t6 B( D, g: o3 ^! i                }* A3 K; O, s$ g
        }
5 k5 u& \& h! O! q9 i' C+ K% |9 e( Y; k& W
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了+ |+ I' r8 {4 i; l9 N. I) [9 m  S
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-21 22:16 , Processed in 0.038578 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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