阅读:2226回复:11
电池驱动的问题,请高手指点
我看了PB提供的电池驱动的样本代码,电池的状态都保存在gpStatus这个结构中,BatteryPDDGetLevels、BatteryPDDGetStatus等函数都是返回这个结构中保存的状态。
可是我看了整个代码,除了初始化之外,都没有对他赋值的地方。请高手指点在电池驱动是如何将电池的状态保存在gpStatus结构中的?我如果也写自己的电池驱动,应该将检测电池电量,检测是否使用电池,等代码加在什么地方? |
|
沙发#
发布于:2007-02-05 22:58
如果你使用的是标准的MDD lib 你就可以在BatteryPDDGetStatus函数中填写电池和充电相关的信息。如ACLineStatus BatteryLifePercent 等信息。他函数的第一个参数就是系统电源电池状态的一个结构体
|
|
板凳#
发布于:2007-02-05 23:04
根据你的硬件原理图,重写一下BatteryPDDGetStatus()就好了,也就是填充一个机构体
|
|
地板#
发布于:2007-02-06 13:50
谢谢两位高手的指点,我想问一下是不是BatteryPDDGetStatus、BatteryPDDGetLevels这两个函数会被内核不断调用的?另外请问一下BatteryPDDSupportsChangeNotification这个函数的功能是什么?
|
|
地下室#
发布于:2007-02-06 23:50
我试过这两个函数会隔大概秒级被调用一次。
BatteryPDDSupportsChangeNotification见: http://msdn2.microsoft.com/en-us/library/aa909615.aspx |
|
|
5楼#
发布于:2007-02-07 21:57
BatteryPDDGetLevels()只有初始化时调用,返回的是电池的电量级别
BatteryPDDGetStatus()会定期调用,时间间隔在注册表中设置,注册表项是“BatteryPoll” |
|
6楼#
发布于:2007-02-08 09:28
谢谢各位高手热心指点。我编译之后,在RelDir\SAMSUNG_SMDK2440_ARMV4IRelease可以看到生成了battdrvr.dll,可是在CE 的WINDOWS文件夹下面没有看到这个动态连接库,我在程序中设断点,发现BatteryPDDGetLevels()和BatteryPDDGetStatus()根本没有调用,请问如何才能把battdrvr.dll加到OS中,并且可以被系统调用
|
|
7楼#
发布于:2007-02-08 15:25
我跟踪了一下,发现在PM\BATTERY\battery.cpp的BatteryMonitorThreadProc函数中,执行到hevBatteryReady = OpenEvent(EVENT_ALL_ACCESS, FALSE, BATTERY_API_EVENT_NAME);这一句的时候,返回值是NULL。是不是在这之前是否还要进行一些电池驱动的初始化,请各位高手指点一下
|
|
8楼#
发布于:2007-02-09 09:09
解决了,原来是没有把相关的注册表项加进去,加上就OK了
|
|
9楼#
发布于:2007-02-09 16:08
请问哪个高手知道,CE检测到电池电压很低,进入SLEEP模式,是在哪里实现的?
|
|
10楼#
发布于:2007-10-17 00:33
恩,好
|
|
11楼#
发布于:2007-10-22 23:35
通告电源管理模块,强制进入SUSPEND状态.
|
|