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

关于 CPU 温度 和风扇转速

[复制链接]
发表于 2010-2-25 21:21:15 | 显示全部楼层 |阅读模式
最近在写EPC的CPU温度 风扇转速获取方法
" U6 I( d' R3 A% G( E+ G8 }. z
6 V5 A2 V- v; s问题
9 k! t; b  y$ F9 p在获取CPU温度和风扇转速后
; T$ I7 |0 f' D, u+ C再次循环获取 CPU温度,数据就出现错误了,为什么?
8 H7 I, n$ n8 z4 l做了缓冲区满空判断& d! E5 V! O7 A* \! D, C% c
下面是判断代码
6 Z7 f9 S7 l! x$ R- z- ^, w7 o+ B; Z$ {6 Q# R
void check_buffer(int in_out,int port)" X9 S. k- m  G* A
{) j' g6 j& c  p, Z$ N+ y
        DWORD dw_temp=0;; K0 T6 c/ J" g% T' ^
        GetPortVal(port,&dw_temp,1);1 V) u) g( M# O% [
        if(in_out==INPUT) 8 `: l6 k+ R% K2 E; X* g
        {; Y" ~# i* @" ?& K' _4 V
                while(dw_temp&0x02)
6 ~( g) V  |2 G* a8 T                {
" Q  g, U. p* W, d0 B9 B* y5 |                        GetPortVal(port,(&dw_temp),1);
& Y  G. k0 \0 G% p/ v3 g                        dw_temp=(BYTE)dw_temp;9 q* q7 K: o: t# ]
                        Sleep(5);}
( H( _/ n- f7 e8 G9 }2 w! `* ^        }1 ]* a: @5 @! h$ ^9 [4 ?. E
        else if(in_out==OUTPUT)        
, x- j" J8 h, \% d+ Q: A{4 |( T# O" s/ l* i$ d
                while(!(dw_temp&0x01))
; |0 R$ ]  d5 d; ]; J                {
( k( F- P% z) y/ l9 a1 ?8 [1 `                        GetPortVal(port,&dw_temp,1);
; c5 t" X$ E  j+ i# p+ U, G& B+ |                        dw_temp=(BYTE)dw_temp;
! ^" g, S5 J" L& H" S4 B                        Sleep(50);' e' P" P; Z6 Q- f4 H
                }, B- ?: e- ?* g9 A
        }+ ?  C+ b; r5 X) a4 [5 ?" L

8 b2 U$ H4 F6 B7 y( V. v" w}
发表于 2010-2-26 15:24:49 | 显示全部楼层
能告诉我你是怎么读的吗
回复

使用道具 举报

 楼主| 发表于 2010-2-26 16:28:00 | 显示全部楼层
已经找到问题了
6 R" }* `1 @* Z8 a  ~. `: p6 Y) S在setportval 前后 都要进行一次缓冲区输入检测,原来我只是在setportval 前检测了,后没检测。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 06:53 , Processed in 0.020378 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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