ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1954回复: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
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分
地下室#
发布于: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
游客

返回顶部