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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
& L6 E, f- b, ?5 i/ ^) i/ w
, y4 M% S( ^3 M* k6 O; A问题! h6 @9 I  U8 r, F8 w" b2 q
在获取CPU温度和风扇转速后- _6 n1 ?9 ^% |. C# s, M6 U: X
再次循环获取 CPU温度,数据就出现错误了,为什么?5 b8 D: j# R' b" w$ ~# ]9 ?& n( U
做了缓冲区满空判断
$ X2 E9 ^5 y8 t; z6 E' w下面是判断代码
1 |! R2 I* ]# w) k9 d' v! y  J$ ?* I# j" r0 G
void check_buffer(int in_out,int port)
: n; E6 z! N( z7 B4 s{7 ~; D: {. q; J5 P/ y
        DWORD dw_temp=0;
! _- }* W- a/ m% j. R+ {        GetPortVal(port,&dw_temp,1);! g8 l4 s/ Q; @" {. }
        if(in_out==INPUT)
5 l$ A! \) k6 p; P3 m( d$ ~3 l        {
& H7 H: a: g& ?( e8 H& C                while(dw_temp&0x02)& y& L, c, u  I
                {7 e5 r1 L4 m# ?' w
                        GetPortVal(port,(&dw_temp),1);4 W9 C  ]* W" f& c) H3 ]& m3 v
                        dw_temp=(BYTE)dw_temp;, s" V" M9 F& U& I% g9 [0 E
                        Sleep(5);}
" w; x  g( x$ B. N! M$ N        }& J8 n& I+ D# ?0 e
        else if(in_out==OUTPUT)        
; `. D3 Y' }0 p$ W{
) v7 |$ \; n0 d+ p- l+ R5 w                while(!(dw_temp&0x01))
' t% N8 P% B7 l4 T                {& F* }1 m3 k6 U, g/ J3 g
                        GetPortVal(port,&dw_temp,1);
7 r+ M9 v# h$ \1 {, G                        dw_temp=(BYTE)dw_temp;* x& p! X0 d" j% B( G- ~" a7 G
                        Sleep(50);6 [; ?! M; A/ Q6 t4 g- w7 Z7 t
                }
8 K/ a# O& Y$ p1 T; B, j1 }: W        }
+ R3 j* `* [* T( Q/ ?/ M, }7 \9 c( [0 B$ `
}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了4 G; K! L. q: Y2 a& \9 Y
在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 03:50 , Processed in 0.032043 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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