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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
8 U# c2 ^- {/ G0 y- R" [+ r7 V' m
! S! i' N: h5 Q, t问题
3 n9 Q, f+ M& n" v# \5 \; d' a在获取CPU温度和风扇转速后
9 t- B9 W9 \9 M/ Z. ~再次循环获取 CPU温度,数据就出现错误了,为什么?4 n4 b( X$ G6 f) `7 I
做了缓冲区满空判断
# r5 @- f9 Y+ H5 S* I6 H; q  f! \下面是判断代码
: \  |) ^# `0 H+ L5 L' H. P. x/ x+ q8 f4 S$ F& f/ K6 w
void check_buffer(int in_out,int port)
: G, z2 W7 S0 h# Q; ^* I5 T- @{
2 S+ R4 V/ a1 s' g" ]9 f8 G0 S        DWORD dw_temp=0;
( z5 {- @$ y& g2 m" e        GetPortVal(port,&dw_temp,1);7 }/ m/ d1 T  U
        if(in_out==INPUT)
; H) _# v& B& b4 F$ d+ Z        {
: w9 u0 L+ e' n2 p! ^+ ^- K                while(dw_temp&0x02)8 G4 ?( R3 V: c% Q( w
                {
; M* W0 f. y, q                        GetPortVal(port,(&dw_temp),1);
+ |% D9 B' b3 b! t2 ^  K# \& Z                        dw_temp=(BYTE)dw_temp;
1 o( B$ H$ k3 V                        Sleep(5);}  j) {# a, j2 q  N# c  D
        }
. E/ Z, n* p5 j+ M6 `9 X        else if(in_out==OUTPUT)        
* F( ?& G& T% R' e& V: f- H: Z{
; \( u, A5 [: F: e1 g" {1 ~- z                while(!(dw_temp&0x01))
/ z0 ?( m0 ?5 M# T: y! I" U                {
9 m9 M! [+ j- t( R                        GetPortVal(port,&dw_temp,1);1 x4 q" I- O! A6 T7 s# W. }1 f
                        dw_temp=(BYTE)dw_temp;1 O# k# w, f8 q: q. V6 {' F2 b
                        Sleep(50);
0 c1 `4 x: {  u& g% `! f                }
% C: S" L& N7 }1 s" V& z+ ^        }1 X# X$ Z9 Y+ h, C6 v
# L+ F0 k& g; h9 {0 d( }# z
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了
0 s) c- v/ b5 U% w在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 17:12 , Processed in 0.586346 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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