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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
( J8 w' U) Z$ T" r% K! H. `- e: ]. G) K6 V  a1 H
问题6 {! R+ Z' \' z  M0 U: ~! z% D
在获取CPU温度和风扇转速后
$ }9 p+ N/ B, `) u$ d) r/ w. C$ h( j再次循环获取 CPU温度,数据就出现错误了,为什么?
* f: `( p; }, A; W* C4 e& G. k做了缓冲区满空判断
% m' n! I# c; F, p1 U0 \下面是判断代码& ^$ @4 c1 M5 a( k( y6 a3 z3 Y
  ~5 z( Z6 v! c; E/ g
void check_buffer(int in_out,int port)) O3 T5 p- R3 y" G8 W: a
{' y1 G% f6 a) ?( d, \) p
        DWORD dw_temp=0;
5 v' D  S" r" E. @1 Y        GetPortVal(port,&dw_temp,1);3 Q; Y: [/ ?2 r' ^" _$ O
        if(in_out==INPUT) & F; i; U/ W; M2 E, W1 V" ~; c
        {9 W$ g6 L+ r# P& p! ]) ]
                while(dw_temp&0x02)
' C. l% s! ]3 E                {$ P& }% U! R% s1 u) D/ x1 a; H
                        GetPortVal(port,(&dw_temp),1);6 W/ Z$ V' r: K4 R/ c2 C, P9 N
                        dw_temp=(BYTE)dw_temp;
+ U5 u$ a# @' ?+ R! L( ]  T                        Sleep(5);}$ v9 G- G. W7 r7 m$ ~
        }5 N0 X5 m* q# O2 Q6 C7 U
        else if(in_out==OUTPUT)        
1 b, `' Z" t$ \{
9 L9 R7 F  r& |7 q                while(!(dw_temp&0x01))
7 S7 l9 S3 j! r9 W/ h* Z) r3 h                {( O" d, v/ ?+ U* Q1 p2 _! j- \; H
                        GetPortVal(port,&dw_temp,1);
0 O) F- V! n: I7 s                        dw_temp=(BYTE)dw_temp;
0 K" @6 p& X5 U- Z                        Sleep(50);2 y( l& n: O5 c" P7 O' J: Z0 J) @
                }
6 v% _; e& c& R        }
" D, K/ {* j  d, V  J. C
4 d0 s( s/ H( q* c* j}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了  l' p, S1 N0 G4 i
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-4 19:20 , Processed in 0.044117 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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