2010-10-11 120 views
4

我写了一小段代码来读取笔记本电脑当前的电池充电/放电。 我遵循this MSDN page上的示例代码。阅读笔记本电脑当前的电池充电/放电速率

我的程序更新信息,每隔100ms(通过调用的DeviceIoControl功能与IOCTL_BATTERY_QUERY_STATUS作为控制代码),但读值变化后,只有5-10秒。 例如,如果我将屏幕亮度从最小值更改为最大值,则速率仅在5-10秒后更新。我在Windows 7 32位上使用过Visual C++ 2010。

是否有人知道如何获得充电/放电率的实时读数?

+0

你为什么认为这是不正确的? Th延迟可能是由于硬件(某些电容器)某处的电荷缓冲,并且只有当该电荷耗尽时,才会导致电池耗尽。 – 2010-10-11 18:12:19

+0

我得到的值是正确的,我正在问一个方法(如果有的话)以更快地看到这些变化。我不认为有一个电容器因为功耗增加的20W的延迟大约8秒,这将需要一个非常大的电容! – user472507 2010-10-11 19:09:39

回答

4

取决于传感器的精度,它是可能的状态仅由电力设备驱动程序更新每隔5-10秒时显著变化发生。

+3

相对最近的一篇博客(http://blogs.msdn.com/b/oldnewthing/archive/2010/09/24/10067119.aspx)由雷蒙德陈似乎相关,即使它正好是在不同的上下文API调用:“这些电池电量来自于硬件本身,所以你在谁制造主板的仁慈一些笔记本电脑的更新在1秒间隔的数值;有的可能需要5秒钟或更长时间。” – TheUndeadFish 2010-10-11 19:42:25

+0

我在另一台笔记本电脑上运行该程序,并在那里每2-4秒更新一次。我还发现一些新的惠普笔记本电脑没有这种传感器。 – user472507 2010-10-12 14:14:08