C语言电池助手(代码实例)

C语言电池助手

按照教材学习C语言一般都只涉及数据类型、指针、数组、链表等这样一系列的基础知识
但是在寒假里出于兴趣和强烈的好奇
笔者突发奇想想知道能否用C语言访问系统的电池参数
由此笔者查阅资料以后尝试写了一个乞丐版的电池助手

时至暑假,笔者突然想起了这个远古程序,决定把它收录进自己博客中

代码

#include <stdio.h>
#include <windows.h>
#include <conio.h>

void gotoxy(int x,int y)
//句柄操作:实现光标的移动;
{
    COORD pos;
    HANDLE hOutput;
    pos.X=x;
    pos.Y=y;
    hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOutput,pos);
}

int main(void)
{
    SYSTEM_POWER_STATUS sps;        //定义访问电池的结构体;
    GetSystemPowerStatus(&sps);     //读取结构体指针的内容;
    system("color F0");
    system("mode con cols=40 lines=8");
    gotoxy(5,1);
    printf("是否连通电源:%s",sps.ACLineStatus==0?"否":"是");
    gotoxy(5,2);
    printf("电池百分比:%d%%",sps.BatteryLifePercent);
    gotoxy(5,3);
    switch(sps.BatteryFlag){
        case 0:
            printf("电池状态:低电量");
            break;
        case 1:
            printf("电池状态:高电量");
            break;
        case 4:
            printf("电池状态:极低电量");
            break;
        case 8:
            printf("电池状态:充电中");
            break;
        case 128:
            printf("未检测到电池!");
            break;
        case 255:
            printf("无法读取电池状态!");
            break;
    }
    if(sps.ACLineStatus==0){
        int h,s;
        h=sps.BatteryLifeTime/3600;
        s=(sps.BatteryLifeTime-h*3600)/60;
        gotoxy(5,4);
        printf("电池剩余使用时间:%d时%d分",h,s);
    }
    else{
        gotoxy(5,4);
        printf("电池剩余使用时间:您已接通电源!");
    }
    system("pause");
    return 0;
}

其中gotoxy是对光标的移动
而核心代码则是main函数中的
最最关键的则是由系统定义的结构体:

SYSTEM_POWER_STATUS sps;        //定义访问电池的结构体;
GetSystemPowerStatus(&sps);     //读取结构体指针的内容;

而后便是调用该结构体中的各项参数:

ACLineStatus			//是否接通电源
BatteryLifePercent		//电源百分比
BatteryFlag				//电池状态
BatteryLifeTime			//电池预计使用时间

感想

到这里可以发现
实现访问和显示电池参数不需要自己设计程序和算法
无非只是需要知道C语言中已定义好的结构体:
SYSTEM_POWER_STATUS
而笔者的这段代码也无非只是可以实现一些最基础的功能
仅供学习娱乐而已
其依旧是一个较为基础的控制台程序

其实笔者甚至想在低电量(小于20%)时调用 Beep() 函数
然而 Beep() 的蜂鸣声总有些莫名的魔性
笔者不得不放弃了这个想法

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值