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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
. @4 Q' l$ q3 N
+ r. n- k: P) ]$ H2 F$ r( n问题
% h3 X/ R, b2 ^4 s* Z在获取CPU温度和风扇转速后7 u0 Z% B- U! x8 H5 @9 Y6 A; f
再次循环获取 CPU温度,数据就出现错误了,为什么?- G  F$ j6 L8 S1 j9 D, l3 Z
做了缓冲区满空判断
' c! F, m" ~' B, m7 O下面是判断代码9 s- n. o# I) G+ a. t! Z* X& g
& P! c" i: o: x# W6 b* H( f% @
void check_buffer(int in_out,int port)
, |+ |& k+ [% z# ?6 [! _3 E{
8 _7 |/ p+ l8 X6 {% U. J8 o1 C        DWORD dw_temp=0;
; W) e( E# U' o+ D0 I        GetPortVal(port,&dw_temp,1);
# C/ H) C; ~. y# N% J# ~& c        if(in_out==INPUT)
$ o2 u, g# E8 _        {
, R$ q8 [( k8 m+ u" y                while(dw_temp&0x02)3 Z' L8 J* y) @9 T  T* S3 E7 T
                {1 V" H* n7 d$ \9 x
                        GetPortVal(port,(&dw_temp),1);
3 ~3 _$ ^% R( g1 H6 V' {                        dw_temp=(BYTE)dw_temp;
! V4 w6 u3 j" g8 k                        Sleep(5);}
2 N6 b1 j8 l$ n        }
5 F$ v* m4 Z! A; n        else if(in_out==OUTPUT)        
9 Q/ t, j1 f8 p8 R4 B{
( ^0 z& L$ y0 V1 |6 h! v# q                while(!(dw_temp&0x01))( R" C* l0 \5 L' B5 o9 v
                {! v8 M) |6 G& b# U) W1 @
                        GetPortVal(port,&dw_temp,1);! H1 s0 f- H; H1 t( B6 V& X9 O* d" k
                        dw_temp=(BYTE)dw_temp;$ `. w% o8 R' t- }& B$ ^6 d
                        Sleep(50);7 i$ Z, k1 `8 a: C& {2 P
                }/ P% T0 m9 W3 [2 d/ W9 K! }4 Y* `5 _
        }4 X& {7 }" x% }8 X. E* y: [

+ w/ K5 M! j  M2 \' o% B}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了! T: v0 @( a+ j# b; V4 u2 }- k
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 18:06 , Processed in 0.073592 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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