阅读:2074回复:9
问个电源管理的问题
那个电源使用方案:交流电源
怎么我用外部电源显示交流电源,用电池也显示交流电源,奇怪,以前做产品没用到电池,现在想把这个功能加上去,请问具体该怎么搞,请高手给个思路 |
|
|
沙发#
发布于:2008-07-16 17:35
还有下面那个插座也不会变
|
|
|
板凳#
发布于:2008-07-16 17:37
还有电量显示,我现在是自己做了一个AD驱动来检测电池的电压,不知道有没有更简单的
|
|
|
地板#
发布于:2008-07-17 10:31
你应该确认使用外部电源和电池切换时检测脚是否有变化,另外确认电池驱动是否正确判断到了检测脚的变化。
|
|
地下室#
发布于:2008-07-17 10:58
if(m_stPowerStatus.ACLineStatus==AC_LINE_ONLINE)
{ RETAILMSG(1,(TEXT("Power state AC\n"))); } else if(m_stPowerStatus.ACLineStatus==AC_LINE_OFFLINE) { RETAILMSG(1,(TEXT("Power state DC\n"))); } 在应用程序里用上面两个判断了一下发现一直处于AC状态 可能是因为原硬件没有这个检测脚,导致电源状不变,现在我想用EINT1来模拟做检测 1:EINT1响映后为高则为AC状态(使ACLineStatus=AC_LINE_ONLINE) 2:EINT1响映后为低则为DC状态(使ACLineStatus=AC_LINE_OFFLINE) 我的初步想法就是把他加在BATTDRVR或PM里面 现在的疑问就是:我加在哪里好,什么方法怎么加好? |
|
|
5楼#
发布于:2008-07-17 12:37
功能倒是实现了,在BATTDRVR里加了一个判断,不知道专不专业
DWORD WINAPI BatteryAPIGetSystemPowerStatusEx2( PSYSTEM_POWER_STATUS_EX2 pstatus, DWORD dwLen, BOOL fUpdate ) { static SYSTEM_POWER_STATUS_EX2 status; BOOL fBatteriesChangedSinceLastCall; FILETIME ftNow; SYSTEMTIME st; if ( ! pstatus ) return( 0 ); try { if ( fUpdate ) { // get latest information BatteryPDDGetStatus (&status, &fBatteriesChangedSinceLastCall); if(EINT1FLAG) status.ACLineStatus = AC_LINE_OFFLINE; else status.ACLineStatus = AC_LINE_ONLINE; if ( status.ACLineStatus != AC_LINE_OFFLINE ) { if ( !v_fOnExternalPower ) { v_fOnExternalPower = TRUE; BatteryAPIStopwatch (FALSE, FALSE); // stop } |
|
|
6楼#
发布于:2008-07-18 11:34
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于:2008-07-22 02:38
是在batt驱动里面修改.
|
|
8楼#
发布于:2008-07-24 16:27
楼主不是实现了么。
|
|
9楼#
发布于:2008-07-29 20:15
学习
|
|