Утиліта моніторингу та контролю енергоспоживанням портативних комп’ютерів
Розробка програмної утиліти для моніторингу та контролю енергоспоживання портативних комп’ютерів. Аналіз особливостей та дослідження найбільших витрат енергоспоживання в ноутбуках. Виявлення помилок зміни яскравості екрану. Опис інтерфейсу, тестування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 19.11.2014 |
Размер файла | 3,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
15
Размещено на http://www.allbest.ru/
АНОТАЦІЯ
В даному курсовому проекті проводиться розробка програмної утиліти для моніторингу та контролю енергоспоживання портативних комп'ютерів. Для цього було проведено аналіз особливостей та дослідження найбільших витрат енергоспоживання в ноутбуках. В результаті аналізу було виявлено перевитрати енергії та методи зниження її. Створена програма дозволяє побачити рівень зарядки батареї або її статус підключення до мережі, час до повної зарядки та розрядки батареї, налаштування параметрів таких, як яскравість світла екрану та рівні енергоспоживання для обмеження продуктивності комп'ютера. В завершенні проводиться описання готової утиліти для моніторингу та контролю енергоспоживання портативних комп'ютерів та низка тестувань для виявлення незначних помилок та їх усунення для надійної та стабільної роботи.
ЗМІСТ
Вступ
1. Огляд методів управління енергозбереженням Windows
2. Аналіз задачі розробки утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів та способи її вирішення
2.1 Аналіз задачі розробки утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів
2.2 Способи вирішення поставленої задачі
3. Розробка утиліти контролю і моніторингу енергоспоживанням портативних комп'ютерів
3.1 Вибір технології програмування
3.2 Розробка вузла керування яскравістю екрану
3.3 Розробка вузла виведення інформації про стан батареї
3.4 Розробка вузла інформації про стан плану енергоспоживання
3.5 Розробка вузла зміни плану енергоживлення
4. Опис інтерфейсу
5. Тестування
5.1 Виявлення помилок зміни яскравості екрану
5.2 Виявлення помилок зміни плану енергоживлення
5.3 Виявлення помилок коректного відображення стану батареї
Висновок
Список літератури
Додатки
Вступ
Кожен портативний пристрій має два способи живлення: мережа та живлення від батареї. В зв'язку з різними характеристиками портативних пристроїв (процесор, відео карта, тип та розмір екрану та інші енерговитратні вузли) батарея забезпечує енергоживленням обмежений час. Щоб забезпечити більший час використання батареї, потрібно обмежити певні налаштування портативного комп'ютера, тобто зменшити яскравість екрану та вибрати метод заощадження енергії.
Актуальність даного курсового проекту в тому, що утиліта моніторингу та контролю енергоспоживання дає можливість заощадження енергії батареї в портативних комп'ютерах. Залежно від вибраного методу рівня заощадження обмежує процесор для більшого часу роботи від батареї. Також є можливість заощаджувати, зменшивши рівень яскравості екрану за допомогою повзунка в інтерфейсі утиліти. Головною перевагою утиліти є її простий та зрозумілий інтерфейс, що забезпечує доступність для користувачів з різним рівнем знання комп'ютера.
1. Огляд методів управління енергозбереженням Windows
Центр мобільності, доступний тільки на портативних комп'ютерах, забезпечує централізоване управління деякими важливими функціями мобільного пристрою з інтерфейсу єдиного користувальницького. Для запуску Центру мобільності слід натиснути комбінацію клавіш Win + X.
Рис. 1.1. Центр мобільності Windows
Опис центра мобільності windows:
· яскравість. Просто повзунок можна змінювати яскравість екрану. Рекомендується зменшувати яскравість при роботі від батареї для зниження енергоспоживання;
· гучність. Використовуйте повзунок для зміни гучності динаміків. Відмітка чекбокса "Без звуку" цілком вимкнути звук (режим Mute);
· стан батареї. Дозволяє відстежуйте рівень заряду батареї для визначення часу роботи, а також змінювати план електроживлення;
· бездротова мережа. Перевірка стану підключення до бездротової мережі, а також включення / вимикання бездротового адаптера;
· обертання дисплея. Якщо використовується Windows 7 на планшетний ПК, використовуючи цей параметр, можна на льоту змінювати орієнтацію екрану з книжкової на альбомну і навпаки;
· зовнішній дисплей. Підключення додаткового монітора до портативного комп'ютера або настроювання властивостей дисплея;
· центр синхронізації. Перегляд стану синхронізації, запуск синхронізації або настроювання нового зв'язку з пристроєм. Також забезпечує доступ до настройок властивостей центру синхронізації;
· параметри презентації. Дозволяє включати режим презентації. Коли комп'ютер перебуває в цьому режимі, відключаються різні системні повідомлення, збереження екрану. Так само в цьому режимі вимикається режим сну і сну по тайм-ауту (функція не доступна в домашніх версіях операційної системи).
Рис. 1.2. Налаштування властивостей режиму презентації
Гнучка настройка функції управління живленням в стартовому меню
У Windows Vista головна кнопка управління відповідала харчуванням за виключення комп'ютера. Для виклику інших режимів, слід було натиснути додаткову кнопку, після чого з нового меню, вибрати потрібну функцію. У Windows XP викликалося окреме вікно вибору режиму: вимикання, сон і так далі. У Windows 7 головну кнопку можна налаштувати за своїм бажанням. Для цього треба натиснути правою кнопкою миші на панелі завдань, відкрити Властивості і перейти на закладку Меню "Пуск". На цій закладці можна встановити дію кнопки живлення.
Плани електроживлення
Основною функціональною відмінністю мобільного комп'ютера від стаціонарного є наявність вбудованої батареї. Саме вона дозволяє працювати з мобільним пристроєм практично де завгодно. Але, як відомо, не існує вічного джерела живлення. І заряд батареї обмежений. Тому, в портативних комп'ютерах слід знаходити компроміс між необхідною продуктивністю і часом автономної роботи. Кожна частина такого комп'ютера споживає енергію: лампа дисплея, пристрій читання дисків, жорсткий диск, адаптер бездротового зв'язку. Бажано, щоб при всьому при цьому, портативний комп'ютер працював якомога довше: робота через мережу Інтернет або робота з локальними документами, прослуховування музики або перегляд відео.
Найпростіша річ, яку слід зробити для цього, у разі не можливості підключення до розетки тривалий час - вибрати план електроживлення "Економія енергії". Крім цього, при відключенні від електромережі, Windows 7 автоматично перемкне функцію Aero з режиму скла в Standart.
Кожен з використовуваних планів електроживлення можна гнучко налаштувати. Поведінка жорсткого диска при роботі від мережі і від батареї, запит пароля при пробудженні комп'ютера, параметри фону робочого столу і багато іншого.
Також можна створити абсолютно новий план електроживлення, або змінити існуючий для включення / вимикання необхідних параметрів.
Пошук проблем енергоспоживання
Насправді, те, що легко налаштувати з використанням графічного меню, можна налаштувати за допомогою консольної утиліти powerсfg.exe. Розповідати тонкощі роботи з цією утилітою я не буду, все ж таки робота з нею не є простою справою. Але існує одна чудова функція цієї утиліти, яка допоможе знайти проблемні місця в роботі ноутбука і посприяє більш тонкої настройки планів електроживлення.
Для запуску утиліти слід запустити командну консоль з правами Адміністратора. Введіть CMD в полі Швидкого пошуку. У результатах виберіть cmd.exe з розділу Програми, натисніть на ньому правою кнопкою миші і виберіть пункт "Запуск від імені Адміністратора" (якщо робота відбувається від імені Користувача, буде потрібно ввести пароль Адміністратора). Відкриється командна консоль з підвищеними правами.
Рис. 1.3. Запуск командного консолі з підвищенням прав
У нашому випадку, файл був створений в корені диска D: і називається енергією report.html.
Відкривши цей файл за допомогою Internet Explorer, можна переглянути звіт про проблеми з енергоспоживанням та рекомендації щодо їх усунення.
Рис. 1.4. Файл-звіт про діагностику ефективності енергоспоживання
2. Аналіз задачі розробки утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів та способи її вирішення
2.1 Аналіз задачі розробки утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів
Кожен портативний комп'ютер може працювати від мережі або батареї. Батарея має обмежений час для підтримання енергії в портативному комп'ютері. Тому для зручного та ефективного використання портативних комп'ютерів було створено різні плани енергоспоживання, які мають рівні від обмеження продуктивності комп'ютера для забезпечення більшого часу роботи від батареї до максимальної продуктивності коли потрібно максимальну продуктивність комп'ютера з значною втратою максимального часу роботи від батареї. Управління цією системою включає в себе наступні можливості:
1. керування яскравістю екрану;
2. виведення стану підключення до мережі;
3. виведення стану зарядки батареї у відсотках;
4. виведення часу до повної розрядки батареї;
5. вибір плану енергоспоживання.
Реалізацію цих можливостей здійснює програма «Утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів». Жодна операційна система на сьогоднішній день не може обійтися без зручної і ефективної програми енергоспоживання. З зростаючими потужностями портативних комп'ютерів зростає і їх енерговитрати, які потрібно збалансовувати для зручного користування.
Можливість швидкого доступу до потрібної інформації та зручний інтерфейс є першочерговими вимогами до програми енергоспоживання, яка розробляється у курсовому проекті. Адже інтерфейс програми енергоспоживання розробляється спеціально для зручного користування у всіх операційній системі Windows . У програмі енергоспоживання буде об'єднано найнеобхідніші для користувача функції для роботи з файловою системою в наочному і простому вигляді.
2.2 Способи вирішення поставленої задачі
У курсовому проекті поставлену задачу можна вирішити за допомогою системних викликів операційної системи Windows. Адже за допомогою системних викликів ми можемо доступитися до ядра операційної системи та здійснити необхідні нам операції з енергоспоживанням. Крім цього потрібно забезпечити інтерфейс роботи з користувачем. Для вирішення поставленої задачі у курсовому проекті розроблений алгоритм роботи утиліти моніторингу та контролю енергоспоживанням портативних комп'ютерів, яка наведена на рис. 2.1.
Робота програми починатиметься з ініціалізації компонентів, яка включатиме в себе створення віконного інтерфейсу, ініціалізації полів та кнопок інтерфейсу. Після ініціалізації компонентів програми буде здійснений системний виклик для отримання інформації про енергоспоживання, які доступні на портативному комп'ютері. Наступним кроком буде отримання інформації про яскравість екрану та відображення цієї інформації у відповідних полях інтерфейсу програми. Ці дії будемо реалізовувати за допомогою системних викликів, які повертатимуть нам стан та рівень заряду батареї та яскравості екрану. Після виконання описаних вище етапів програма перейде у режим очікування дії від користувача.
При зміненні повзунка рівня яскравості змінюється яскравість екрану що дає зменшити споживання енергії екрану і більшої роботи від батареї. Або для кращої передачі насиченості кольорів, тобто збільшення яскравості екрану при перегляді медіа файлів або потужних ігор.
Для кращого планування продуктивності або зменшення витрат є список планів енергоспоживання. Кожен з цих планів має свої налаштування, які певним чином впливають на продуктивність комп'ютера, що дозволяє ще краще організувати витрати портативного комп'ютера.
Отже, робота утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів у курсовому проекті буде основана на використанні системних викликів операційної системи Windows.
Рис. 2.1. Граф-схема роботи програми енергоспоживання
3. Розробка утиліти контролю і моніторингу енергоспоживанням портативних комп'ютерів
Дана програма має такі основні функціональні вузли:
- керування яскравістю екрану;
- виведення інформації про стан батареї;
- виведення інформації про стан плану енергоспоживання;
- зміна плану енергоспоживання.
Вузол «Керування яскравістю екрану» дозволяє користувачеві зменшити або збільшити яскравість екрану відповідно, якщо збільшити яскравість батарея розрядиться швидше, якщо зменшити повільніше.
Вузол «Виведення інформації про стан батареї» виводить інформацію про батарею, чи заряджається вона чи ні, скільки часу залишилось до повної розрядки батареї.
Вузол «Стан плану енергоспоживання» звертається до реєстру, вибирає дані про стани енергоспоживання і виводить їх користувачі.
Вузол «Зміна плану енергоспоживання» звертається до системи і відправляє запит на зміну плану енергоспоживання.
3.1 Вибір технології програмування
Для виконання поставленого завдання використано мову програмування C# та середовище програмування Microsoft Visual Studio 2012.
Вибір мови програмування можна обґрунтувати тим, що мова C# має у своєму складі безліч класів та методів для роботи з файловою системою, процесами та потоками ОС Windows. У цієї мови є багато можливостей для реалізації найскладніших алгоритмів і роботи з операційною системою та апаратним середовищем. Також у мові програмування C# зручно працювати з технологією Windows Form.
Середовище програмування Microsoft Visual Studio 2012 має ряд переваг, таких як:
ь зручна робота з графічним інтерфейсом за допомогою технології Windows Forms;
ь підтримка .NET Framework;
ь має у своєму складі редактор коду з підтримкою технології IntelliSense і можливістю найпростішого рефакторінгу коду;
ь вбудований відлагоджувач може працювати не тільки як відлагоджувач рівня програмного коду, а також як відлагоджувач машинного рівня.
3.2 Розробка вузла керування яскравістю екрану
Керування яскравістю екрану передбачає звернення до gdi32.dll і встановлення коефіцієнту яскравості системи.
Рис. 3.1. Граф-схема вузла керування яскравістю екрану
Для початку розпочинається робота вузла керування яскравістю екрану і звернення до інтерфейсу Microsoft Windows Graphics Device, що дозволяє програмі використовувати графіку і форматований текст на відео екран. Далі виведення інформації про поточний рівень яскравості екрану. Ми можемо змінити за допомогою повзунка вибрати рівень яскравості екрану. Після цього зчитується вибраний рівень на повзунку та зменшується або збільшується яскравість самого екрану та відбувається завершення роботи цього вузла.
Для того, щоб отримати коефіцієнт яскравості використовується :
BOOL WINAPI GetDeviceGammaRamp(
HDC hDC,
LPVOID lpRamp
);
Функція GetDeviceGammaRamp отримує криву гамма-корекції (gamma ramp) на платах прямого виводу зображення кольорового дисплея, що мають драйвери, які підтримують завантажені криві гамма-корекції в апаратних засобах. Повертаються значення TRUE або FALSE.
Для встановлення коефіцієнту яскравості використовується :
BOOL WINAPI SetDeviceGammaRamp(
HDC hDC,
LPVOID lpRamp
);
Функція SetDeviceGammaRamp встановлює криву гамма-корекції (gamma ramp) на платах прямого виводу зображення кольорового дисплея, що мають драйвери, які підтримують завантажені криві гамма-корекції в апаратних засобах. Використовувана бібліотека Gdi32.lib .
hDC Визначає контекст пристрою розглянутої плати прямого виводу зображення кольорового дисплея.
lpRamp Вказує на буфер, куди функція може помістити поточну криву гамма-корекції плати кольорового дисплея. Крива гамма-корекції визначається в трьох масивах з 256 елементів величиною в СЛОВО (WORD), кожен з яких містить відповідність між значеннями RGB в буфері зображення і значеннями в цифровому аналоговому конвертері (ЦАП). Послідовність масивів є - червоний, зелений, синій.
Повертаються значення. Якщо ця функція завершується успішно, повертається значення - TRUE. Якщо ця функція завершується помилкою, повертається значення - FALSE.
3.3 Розробка вузла виведення інформації про стан батареї
Для того щоб отримати дані про стан батареї використовуються WinApi функції для роботи з батареєю.
Рис. 3.2. Граф-схема алгоритму вузла перегляду сервісів
Перше відбувається початок роботи вузла виведення інформації про стан батареї та виведення статусу зарядки від мережі Power on/off. Також отримуємо значення рівня заряду батарея та переводимо значення в співвідношення заряду батареї в відсотки. Далі обраховуємо час до повної розрядки батареї, також з урахуванням рівня енергозабезпечення максимальний час роботи від батареї до її повного розряду. І завершення роботи вузла.
Для отримання списку всіх сервісів використовуються WinApi функції
GetSystemPowerStatus(&sps).
switch (sps.ACLineStatus)
{
case 0:
return "Power off";
case 1:
return "Power on";
case 255:
default:
return "Невідомо";
break;
}
програмний утиліта ноутбук енергоспоживання
sps.ACLineStatus - повертає статус живлення «Power on», «Power off», «невідомо».
switch (sps.BatteryFlag)
{
case 1:
return "Високий";
case 2:
return "Низький";
case 4:
return "Критичний";
case 8:
return "Заряджається";
case 128:
return "Батарея відсутня";
case 255:
default:
return "Невідомий";
}
sps.BatteryFlag - повертає статус заряду "Високий", "Низький", "Критичний", "Заряджається", "Батарея відсутня", "Невідомий".
return (int)sps.BatteryLifePercent;
sps.BatteryLifePercent - повертає значення в відсотках статусу заряду.
return sps.BatteryLifeTime;
sps.BatteryLifeTime - повертає значення, що вказує на час приблизного живлення від батареї.
return sps.BatteryFullLifeTime;
sps.BatteryFullLifeTime - повертає максимальне значення часу живлення від батареї.
3.4 Розробка вузла виведення інформації про стан плану енергоспоживання
Даний вузол звертається до реєстру Windows і отримує дані про стан енергоспоживання. Доступ до реєстру забезпечується функціями стандартної бібліотека .NET.
Рис. 3.3. Граф-схема алгоритму інформації про стан енергозбереження
Перше відбувається початок роботи вузла виведення інформації про стан плану енергоспоживання. Далі проходить отримання доступу до реєстру windows даної операційної системи. Відкриття гілки, яка відповідає за план енергоспоживання та отримання інформації про відповідні рівні енергоспоживання з наявних. Далі отримуємо активний план енергоспоживання портативного пристрою. Завершення роботи з реєстром до якого ми звертались. Після всього цього відбувається завершення роботи цього вузла.
Щоб отримати дані про план енергоспоживання використовується:
RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes");
Звертається до реєстру Windows з планами енергоспоживання портативного комп'ютера.
string[] powers = Key.GetSubKeyNames();
Active = (string)Key.GetValue("ActivePowerScheme");
Виводить план живлення портативного комп'ютера, який активний.
3.5 Розробка вузла зміни плану енергоживлення
Для того щоб змінити план енергоживлення використовується системна утиліта Powercfg.
Рис. 3.4. Граф-схема алгоритму
Перше відбувається початок роботи вузла зміни плану енергоживлення. Наступним робимо аналіз та виведення поточного плану енергоживлення. Вибираємо новий план заощадження енергії з переліку можливих в списку, після цього встановлюється доступ до утиліти «powercfg». Після встановлення доступу до утиліти, відбудеться заміна поточного плану заощадження енергії на встановлений новий план. І після цього відбудеться завершення цього вузла.
Щоб змінити поточний план енергоживлення використовується:
private void ChangePow(RadioButton rb)
{
Active = (string)pow[rb.Text];
ProcessStartInfo prc = new ProcessStartInfo("Powercfg", "-setactive " + Active);
prc.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(prc);
}
ProcessStartInfo - визначає набір значень, використовуваних при запуску процесу.
Powercfg - за допомогою програми Powercfg можна змінити параметри електроживлення та налаштувати комп'ютер на використання за замовчуванням чекаючого або сплячого режиму.
prc.WindowStyle - повертає або задає стиль кордону вікна.
ProcessWindowStyle.Hidden - вказано, яким чином має виглядати нове вікно при запуску процесу системою. Hidden - прихований стиль вікна. Система відображає приховане вікно, чи не прорисовуючи його. Приховане вікно може обробляти повідомлення від системи або від інших вікон, але не може обробляти введення від користувача або відображати висновок.
Process.Start - запускає ресурс процесу, певний властивістю StartInfo цього компонента Process, і пов'язує його з компонентом.
4. Опис інтерфейсу
Програма «Утиліта моніторингу та контролю енергоспоживанням портативних комп'ютерів» можна запустити з виконавчого файлу Brightness.exe. Для її запуску необхідно платформу.NET 2.0, Windows не нижче 2000 встановлений на портативний ПК.
Дана програма є досить простою у використанні.
Рис. 4.1. Головне вікно програми
В програмі приступні наступні функції:
- зміна яскравості екрану;
- зміна плану енергоживлення;
- відображення інформації про батарею.
Керування яскравістю екрану відбувається з допомогою рухомого повзунка, перетягуючи його в ліву частину яскравість зменшується, а в праву збільшується.
Вибір плану енергоспоживання відбувається з допомогою перемикачів, кожному перемикачеві відповідає один план енергоживлення
Блок відображення стану батареї є дуже простим і інформативним він швидко реагує на всі зміни пов'язані з роботою батареї
5. Тестування
Відлагодження програми відбувається на основі спеціально створених тестів за допомогою автоматизованого відлагоджувача який присутній в середовищі Ms Visual Studio 2010, в покроковому режимі перевіряється значення потрібних змінних і вмістиме потрібних структур даних. За допомогою breakpoints відбувається запинка виконання програми в тих місцях де відбулася логічна помилка або в місцях визначених студентом.
5.1 Виявлення помилок зміни яскравості екрану
До помилок на цьому етапі відносяться помилки зміни яскравості екрану.
Рис. 5.1. Вікно програми з нормальним режимом яскравості
Якщо перетягнути повзунок в ліво яскравість зменшиться.
Рис. 5.2. Вікно програми із зменшеним режимом яскравості
Якщо перетягнути повзунок вправо яскравість збільшиться.
Рис. 5.3. Вікно програми із збільшеним режимом яскравості
5.2 Виявлення помилок зміни плану енергоживлення
До помилок на цьому етапі відносяться помилки некоректної зміни плану енергоспоживання.
Рис. 5.4. Вікно відображення поточного плану
Рис. 5.5. Вікно відображення зміненого плану
Як видно зміна плану пройшла успішно і даний блок працює коректно.
5.3 Виявлення помилок коректного відображення стану батареї
До помилок на цьому етапі відносяться помилки отримання коректних даних про стан батареї. На даному рисунку програма показує що батареє заряджається.
Рис. 5.6. Статусу живлення Power on
Якщо відключити живлення, програма відреагує на зміни і оновить свої дані.
Рис. 5.7. Статусу живлення Power on
Висновок
У результаті виконання курсового проекту створено системну утиліту «моніторингу та контролю енергоспоживанням портативних комп'ютерів», набуто практичні навички для роботи із системними викликами та розробки функціональних вузлів.
Розроблена утиліта відповідає всім вимогам поставленого завдання, має простий та зрозумілий інтерфейс, ефективні плани заощадження енергії та стабільну роботу без збоїв. Також у створеній утиліті є можливість зручно за допомогою повзунка змінювати яскравість екрану. Для перевірки результатів роботи утиліти було проведено тестування даної програми. У результаті тестування було знайдено та виправлено помилки.
Список літератури
1. В. Зиборов Visual C# 2010 на примерах
2. Системное программное обеспечение / А.В.Гордеев, А.Ю.Молчанов.
3. Э. Троелсен Язык программирования C# 2010 и платформа .NET 4.0
4. Колисниченко Секреты, настройка и оптимизация реестра Windows 7
5. Дж.Донован. Системное программирование.
Додатки
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
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);
short val;
private void SwitchImg()
{
Image img = Image.FromFile(@"img\8.png");
if (GetPowerStatus() == "Power on")
{
if (GetBatteryPercent() >= 95)
img = Image.FromFile(@"img\1.png");
if (GetBatteryPercent() < 95 && GetBatteryPercent() >= 20)
img = Image.FromFile(@"img\2.png");
if (GetBatteryPercent() < 20)
img = Image.FromFile(@"img\7.png");
pictureBox1.Image = img;
}
if (GetPowerStatus() == "Power off")
{
if (GetBatteryPercent() > 50)
img = Image.FromFile(@"img\3.png");
if (GetBatteryPercent() == 50)
img = Image.FromFile(@"img\4.png");
if (GetBatteryPercent() < 50 && GetBatteryPercent() > 10)
img = Image.FromFile(@"img\5.png");
if (GetBatteryPercent() <= 10)
img = Image.FromFile(@"img\6.png");
pictureBox1.Image = img;
}
if (GetBatteryFlag() == "Батарея відсутня")
{
img = Image.FromFile(@"img\8.png");
pictureBox1.Image = img;
}
}
Hashtable pow = new Hashtable();
string Active;
private void GetPowers()
{
RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes");
string[] powers = Key.GetSubKeyNames();
Active = (string)Key.GetValue("ActivePowerScheme");
string Shema;
foreach (string str in powers)
{
Key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\" + str);
Shema = (string)Key.GetValue("FriendlyName");
try
{
Shema = Shema.Remove(0, Shema.LastIndexOf(",") + 1);
}
catch { }
pow.Add(Shema, str);
}
}
private void Create_radio()
{
RadioButton[] rb = { radioButton1, radioButton2, radioButton3, radioButton4, radioButton5, radioButton6 };
int i = 0;
foreach (DictionaryEntry de in pow)
{
rb[i].Visible = true;
rb[i].Text = (string)de.Key;
if (Active == de.Value.ToString())
{
rb[i].Checked = true;
}
i++;
}
for (int j = 0; j < i - 1; j++)
{
int h = this.Height + 23;
this.Size = new Size(this.Width, h);
groupBox3.Height = groupBox3.Height + 23;
}
}
private void Form1_Load(object sender, EventArgs e)
{
trackBar1.Value = 5;
val = (short)trackBar1.Value;
val = (short)(val * 25.5);
SetBrightness(val);
label2.Text = GetPowerStatus();
label3.Text = GetBatteryFlag();
label4.Text = GetBatteryPercent().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();
}
SwitchImg();
GetPowers();
if (pow.Count != 0)
{
int h = this.Height + 53;
this.Size = new Size(this.Width, h);
}
Create_radio();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
val = (short)trackBar1.Value;
val = (short)(val * 25.5);
SetBrightness(val);
}
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = GetPowerStatus();
label3.Text = GetBatteryFlag();
label4.Text = GetBatteryPercent().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();
}
SwitchImg();
}
private void radioButton6_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton6);
}
private void radioButton5_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton5);
}
private void radioButton4_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton4);
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton3);
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton2);
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
ChangePow(radioButton1);
}
private void ChangePow(RadioButton rb)
{
Active = (string)pow[rb.Text];
ProcessStartInfo prc = new ProcessStartInfo("Powercfg", "-setactive " + Active);
prc.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(prc);
}
}
}
#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 "Power off";
case 1:
return "Power on";
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;
}
extern "C" __declspec(dllexport) void SetBrightness(int Brightness)
{
CGammaRamp GammaRamp;
GammaRamp.SetBrightness(NULL, Brightness);
}
Размещено на Allbest.ru
Подобные документы
Файлові системи CD-ROM, основні типи зберігання даних в комп'ютері: магнітний і оптичний. Основні характеристики накопичувачів CD-ROM. Типи звукових файлів, процес стиснення аудіоданих. Розміри портативних систем та проблеми сумісності комплектуючих.
контрольная работа [19,5 K], добавлен 28.10.2009Аналіз програмного забезпечення для проведення тестування в комп’ютерному класі. УТК (Універсальний тестовий комплекс). Асистент 2. OPEN TEST. Порівняння програм для тестування. Організація інтерактивного тестування за допомогою програми OPEN TEST.
реферат [30,3 K], добавлен 19.09.2008Вибір оптимальної конфігурації та характеристика сучасних персональних комп’ютерів і їх комплектуючих. Технічна характеристика кожного пристрою комп’ютера. Зовнішні запам'ятовуючі і пристрої введення інформації. Переваги пристроїв різних фірм.
дипломная работа [65,5 K], добавлен 06.07.2011Історія виникнення квантових комп’ютерів. Структура квантових комп’ютерів та принципи роботи. Квантовий комп’ютер на ядерних спінах у кремнію. Квантовий комп’ютер на електронному спіновому резонансі в структурах Ge–Si. Надпровідниковий суперкомп’ютер.
курсовая работа [579,4 K], добавлен 15.12.2008Утиліти як сервісні програми, що розширюють можливості ОС, допомагають діагностувати й усувати проблеми, забезпечувати роботу системи. Очистка та дефрагментація жорстких дисків. Архівування файлів на жорстких дисках серверів і клієнтських комп'ютерів.
аттестационная работа [2,7 M], добавлен 28.11.2013Загальна характеристика проблеми тепловиділення персональних комп'ютерів. Принципи і типи охолодження компонентів комп'ютера. Можливості модуля багатоканального контролера. Принципова схема і конструкція блоку контролю. Вимірювальна і сервісна апаратура.
отчет по практике [5,7 M], добавлен 23.01.2016Загальна характеристика та опис фізичної структури мережі. IP-адресація комп’ютерів та обладнання, що використовується. Операційна система сервера. Розрахунок довжини кабелю та коробу. Операційна система сервера, материнська плата, вартість обладнання.
курсовая работа [35,5 K], добавлен 28.05.2015Визначення поняття і дослідження структури топології комп'ютерних мереж як способу організації фізичних зв'язків персональних комп'ютерів в мережі. Опис схеми топології типів шина, зірка і кільце. Багатозначність структур топології комп'ютерних мереж.
реферат [158,1 K], добавлен 27.09.2012Поняття комп'ютерної мережі як спільного підключення окремих комп’ютерів до єдиного каналу передачі даних. Сутність мережі однорангової та з виділеним сервером. Топології локальних мереж. Схема взаємодії комп'ютерів. Проблеми передачі даних у мережі.
курсовая работа [605,0 K], добавлен 06.05.2015Специфіка діяльності систем віддаленого моніторингу та управління комп'ютером. Технології розробки систем моніторингу і управління та різноманітність мов програмування. Аналіз предметної області, структури додатку. Робота с XML, JSON та WebSocket.
дипломная работа [2,9 M], добавлен 08.06.2015