Win CE 5.0 增加电池电量显示

摘自 http://blog.csdn.net/li0531/article/details/8818243

同时只在右上角显示一个 Label 控件,因此代码量精简了很多。

[DllImport("coredll")]
private static extern int GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate);
[DllImport("coredll")]
public static extern void SystemIdleTimerReset();
private SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX(); /// <summary>
///// 是否充电状态
///// </summary>
//private State AState = State.Normal;
/// <summary>
/// 电池当前状态 Charge:充电中;UnderCharge:电量不足;Normal:电池正常使用.
/// </summary>
public enum State
{
    /// <summary>
    /// 充电中
    /// </summary>
    Charge,
    /// <summary>
    /// 充电不足
    /// </summary>
    UnderCharge,
    /// <summary>
    /// 正常状态
    /// </summary>
    Normal,
    /// <summary>
    /// 充电完成
    /// </summary>
    ChargeFinally
};
private class SYSTEM_POWER_STATUS_EX
{
    public byte ACLineStatus = 0;
    public byte BatteryFlag = 0;
    public byte BatteryLifePercent = 0;
    public byte Reserved1 = 0;
    public uint BatteryLifeTime = 0;
    public uint BatteryFullLifeTime = 0;
    public byte Reserved2 = 0;
    public byte BackupBatteryFlag = 0;
    public byte BackupBatteryLifePercent = 0;
    public byte Reserved3 = 0;
    public uint BackupBatteryLifeTime = 0;
    public uint BackupBatteryFullLifeTime = 0;
}

/// <summary>
/// 创建电源指示
/// </summary>
private void GetBatteryState()
{
    if (GetSystemPowerStatusEx(status, false) == 1)
    {
        if (status.BatteryLifePercent >= 95)
        {
            labBattery.Text = "100";
            labBattery.ForeColor = Color.Green;
        }
        else if (status.BatteryLifePercent <= 20)
        {
            if (status.ACLineStatus == 1)
                labBattery.Text = status.BatteryLifePercent.ToString() + " +";
            else
                labBattery.Text = "! " + status.BatteryLifePercent.ToString();
            labBattery.ForeColor = Color.Red;
        }
        else
        {
            labBattery.Text = status.BatteryLifePercent.ToString() + (status.ACLineStatus == 1 ? " +" : "");
            labBattery.ForeColor = Color.Blue;
        }
    }
}

我是在 Timer 控件下以 10m 的频率调用这个方法的。

时间: 2024-10-14 13:25:25

Win CE 5.0 增加电池电量显示的相关文章

笔记本上任务栏显示电池电量使用情况的图标不见了怎么办?

带着笔记本电脑出门虽然方便,但总是担心用到一半会没电,所以需要不时的关注一下剩余电量.偶然一次发现Win7任务栏右下角通知区域里的电池状态图标不见了,完全不知道电量用到什么程度,太没安全感.可是打开Win7通知区域图标管理,却看到电源选项处是灰色不可更改的,这是怎么回事?试试用下面的方法来解决. Win7电源选项不可更改状态 点击Win7开始按钮,在搜索框中输入gpedit.msc并按回车,打开本地组策略编辑器. 打开Win7本地组策略编辑器 在“用户配置”下依次打开“管理模板”->“开始菜单和

Windows Embedded CE 6.0开发环境的搭建

最近开始在学习嵌入式,在这里首先得安装Windows Embedded CE 6.0,其中遇到了很多问题,电脑的系统以及相关配置都会在安装过程中受到影响,因此笔者就安装中的问题以及环境搭建来介绍一下. 第一步,安装VS2k5,安装完成后要安装VS2k5 SP1补丁(KB926601),否则后面的Platform Builder SP1无法安装. 第二步,安装Windows Embedded CE 6.0,官方下载地址为:http://www.microsoft.com/downloads/det

iOS-电池图标【结合贝塞尔曲线控制电量显示】

基于UIView类:WKJBatteryView WKJBatteryView.h #import <UIKit/UIKit.h> @interface WKJBatteryView : UIView /** value:0 - 100 */ - (void)setBatteryValue:(NSInteger)value; @end WKJBatteryView.m #import "WKJBatteryView.h" @interface WKJBatteryView(

读取bq26500电池电量 Driver

bq26500是用于锂离子电池.锂聚合物电池充电.放电控制和监控的集成电路芯片.利用它能够准确提供电池充电.放电.电池温度.充放电电压.电池电量等相关数据.不须要外接微处理器參与电池充电.放电等相关数据的计算. 本文简单的读取了电池的电量百分比和电压.如要读取其它參数依照datasheet给出的寄存器一一读取就可以. 连接示意图: 引脚pack+ 和 pack-分别连接正极和负极用来冲放电,HDQ是数据交互引脚,用来读取电池的參数,一般用一个gpio连接就能够. 时序图: 看图可知.逻辑1和0并

Android 电池电量进度条,上下滚动图片的进度条(battery)

最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条.我就自定义view实现了电量进度条.修改图片就可以达到自己想要的效果 一.自定义View,Battery.java,循环刷新界面,两张图片上下滚动,达到不断向右移动的效果.挺有意思的 package com.example.battery; import android.content.Context; import android.content.res.Re

小米2S电池电量用尽充电无法开机解决方法

背景: 昨晚睡觉前关机,记得电量还有百分之七八十,但早上起床后,指示灯一直红灯闪烁,按开机键和其他键都没反应!! 解决方法: 扣下电池,用万能充冲电,稍微多冲一会,因为我第一次充了10几分钟,按到手机上还是木有效果,再冲几十分钟后将电池放到手机上充电,就可以开机了,当然,电量显示很低,百分之一........,但是回复正常了,哈哈. 分析: 总结这个情况应该是电池过放电,造成休眠了

java计算器 图形用户界面 升级版v2.0 (限制位数显示+四舍五入的处理)

package com.rgy.entity; import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import java

Windows CE 5.0待机界面定制之一 - Taskbar的位置

第一步: 修改taskbar.cpp文件,使Windows CE 5.0的taskbar移动到窗口的顶端. 更改如下文件:/WINCE500/PUBLIC/SHELL/OAK/HPC/EXPLORER/TASKBAR/taskbar.cpp 注:由于修改的源代码分散在taskbar.cpp中,故未附上源代码 第二步: 编译 cd /WINCE500/PUBLIC/SHELL/OAK/HPC/EXPLORER/TASKBAR build -cd 第三步: 创建目录/WINCE500/PLATFOR

win系统环境变量中增加或修改环境变量后快速生效

win系统环境变量中增加或修改环境变量后,需重启系统才能使之生效. 下面介绍一种方法: 以修改环境变量"PATH"为例,修改完成后,进入DOS命令提示符,输入:set PATH=C: ,关闭DOS窗口.再次打开DOS窗口,输入:echo %PATH% ,值已经生效. 不用担心DOS窗口中的修改会影响环境变量的值,DOS窗口中的环境变量只是Windows环境变量的一个副本而已.但是对副本的修改却会引发Windows环境变量的刷新,这正是我们想要的!