ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1948回复:9

问个电源管理的问题

楼主#
更多 发布于:2008-07-16 17:34
那个电源使用方案:交流电源
怎么我用外部电源显示交流电源,用电池也显示交流电源,奇怪,以前做产品没用到电池,现在想把这个功能加上去,请问具体该怎么搞,请高手给个思路
WINCE/EVC/VS2005群:18219722
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-16 17:35
还有下面那个插座也不会变
WINCE/EVC/VS2005群:18219722
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-16 17:37
还有电量显示,我现在是自己做了一个AD驱动来检测电池的电压,不知道有没有更简单的
WINCE/EVC/VS2005群:18219722
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
地板#
发布于:2008-07-17 10:31
你应该确认使用外部电源和电池切换时检测脚是否有变化,另外确认电池驱动是否正确判断到了检测脚的变化。
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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里面
现在的疑问就是:我加在哪里好,什么方法怎么加好?
WINCE/EVC/VS2005群:18219722
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
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
                }
WINCE/EVC/VS2005群:18219722
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
6楼#
发布于:2008-07-18 11:34
用户被禁言,该主题自动屏蔽!
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
7楼#
发布于:2008-07-22 02:38
是在batt驱动里面修改.
zq2002
论坛版主
论坛版主
  • 注册日期2003-12-30
  • 最后登录2018-09-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望185点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-07-24 16:27
楼主不是实现了么。
micy
驱动牛犊
驱动牛犊
  • 注册日期2005-11-17
  • 最后登录2011-11-23
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望32点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-07-29 20:15
学习
游客

返回顶部