Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра «Електронні обчислювальні машини»
/
Лабораторна робота № 3
З дисципліни:
«Системне програмне забезпечення»
Тема: «Виведення інформації про стан батареї»
Мета : Навчитись виводити інформацію про стан батареї ПК.
Теоретична частина
За допомогою індикатора акумулятора можна активізувати інший план живлення. Хоча індикатор акумулятора зазвичай використовується в портативних ПК, він може також відображатися на екрані настільного комп’ютера, якщо він підключений до джерела безперебійного живлення (UPS) через USB, або до іншого короткотривалого акумуляторного пристрою.
Індикатор акумулятора розташований в області сповіщень на Windows панелі завдань. Індикатор акумулятора полегшує відстеження споживання електроенергії портативним ПК під час його використання.
Якщо навести мишу на піктограму акумулятора, можна побачити залишок його заряду у відсотках, а також план живлення, що використовується у Windows.
Індикатор акумулятора також показує, працює портативний ПК від електромережі чи від акумулятора. Коли рівень заряду акумулятора низький, індикатор відображає сповіщення над піктограмою акумулятора.
Завдання: створити просту програму яка буде показувати інформацію про стан батареї ПК.
Для виконання цього задання була написана сама програма для виводу інформації про стан батареї на мові С# і DLL бібліотека з описом функцій які також будуть використовуватись при виконані наступних лабораторних з курсу СПЗ.
Код DLL бібліотеки з описом функцій.
#include "brightness.h"
#include "gammaramp.h"
extern "C" __declspec(dllexport) char * GetPowerStatus()
{
SYSTEM_POWER_STATUS sps;
if (GetSystemPowerStatus(&sps))
{
switch (sps.ACLineStatus) // печатаем статус питания
{
case 0:
return "Відключено";
case 1:
return "Підключено";
case 255:
default:
return "Невідомо";
break;
}
}
return "Unknown";
}
extern "C" __declspec(dllexport) char * GetBatteryFlag()
{
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
switch (sps.BatteryFlag) // статус заряда
{
case 1:
return "Високий";
case 2:
return "Низький";
case 4:
return "Критичний";
case 8:
return "Заряджається";
case 128:
return "Батарея відсутня";
case 255:
default:
return "Невідомий";
}
}
extern "C" __declspec(dllexport) int GetBatteryPercent()
{
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
return (int)sps.BatteryLifePercent;
}
extern "C" __declspec(dllexport) int GetBatteryTime()
{
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
return sps.BatteryLifeTime;
}
extern "C" __declspec(dllexport) int GetFullBatteryTime()
{
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
return sps.BatteryFullLifeTime;
}
Код програми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Brightness;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.Collections;
using System.Security;
using System.Security.AccessControl;
using System.Security.Permissions;
using System.Diagnostics;
namespace Brightness
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern string GetPowerStatus();
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern string GetBatteryFlag();
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern int GetBatteryPercent();
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern int GetBatteryTime();
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern int GetFullBatteryTime();
[DllImport("brightness_dll.dll", CharSet = CharSet.Ansi)]
public static extern void SetBrightness(int Brightness);
private void Form1_Load(object sender, EventArgs e)
{
label2.Text = GetPowerStatus();
label3.Text = GetBatteryFlag();
label4.Text = GetBatteryPercent().ToString() + "%";
label5.Text = GetBatteryTime().ToString();
int total = GetBatteryTime();
if (total == -1)
label5.Text = "Невідомо";
else
{
int s, m, h;
s = total % 60;
total = total / 60;
m = total % 60;
h = total / 60;
label5.Text = h.ToString() + ":" + m.ToString() + ":" + s.ToString();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = GetPowerStatus();
label3.Text = GetBatteryFlag();
label4.Text = GetBatteryPercent().ToString() + "%";
label5.Text = GetBatteryTime().ToString();
int total = GetBatteryTime();
if (total == -1)
label5.Text = "Невідомо";
else
{
int s, m, h;
s = total % 60;
total = total / 60;
m = total % 60;
h = total / 60;
label5.Text = h.ToString() + ":" + m.ToString() + ":" + s.ToString();
}
}
}
}
Результат виконання
/
При підключеному живленні
/
При відключеному живленні
Висновок: Я навчився виводити інформації про стан батареї ПК.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!