2010-10-11 139 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