Как сделать шкалу загрузки

Добавил пользователь Morpheus
Обновлено: 04.10.2024

О программе

BootRacer – бесплатный инструмент для измерения скорости загрузки операционной системы Windows и программ, которые находятся в автозапуске

Что нового

Новое в версии. 8.72.2022.0121 Beta (21.01.2022):

  • Исправлена ошибка с выполнением ярлыков при запуске.
  • Обновлена темная тема.
  • Исправлены некоторые проблемы с масштабированием.

Новое в версии.8.70.2021.1123 (23.11.2021):

  • Переработан для Windows 11.
  • Полная совместимость с Windows 11.
  • Добавлена опция автоматического выбора темного режима.
  • 2 светлых и 2 темных темы.
  • Исправлено множество ошибок.

Новое в версии 8.0.2021.0126 (28.01.2021):

  • Новая Премиум-утилита QuickTweak: защитите конфиденциальность и ускорьте работу ПК.
  • Улучшения, оптимизации и исправления ошибок.

Системные требования

Полезные ссылки

Подробное описание

BootRacer - программа от разработчиков UnHackMe, позволяющая узнать, за какое время загружается ваша операционная система и программы из автозагрузки. Программа интегрируется в систему и загружается на раннем этапе загрузки, отслеживая все этапы загрузки системы. Вы можете проверить скорость загрузки операционной системы, автозагружающихся программ и сделать выводы о состоянии вашей системы.

Приложение может отслеживать скорость загрузки отдельных программ при старте системы, и показывать сколько времени занимает загрузка той или иной программы. Затем, вы можете оптимизировать систему, отключив долго загружающиеся программы прямо из интерфейса BootRacer.

BootRacer показывает полное время загрузки системы, чистое время загрузки Windows и время загрузки сторонних программ из автозапуска. Вы можете делать различные изменения в системе и отслеживать на временной шкале улучшение или ухудшение скорости загрузки и тем самым добиться оптимальной конфигурации вашей системы.

Дополнительно, BootRacer использует базы UnHackMe и автоматически блокирует вредоносные / рекламные / шпионские программы, которые могут загружаться при старте системы. Премиум пользователи получат дополнительные возможности оптимизации, защиты конфиденциальности и оформления программы.

Примечание. Не прерывайте работу программы и используйте только стандартные средства системы для её удаления. В случае проблем, используйте ярлык "Если пропали программы из Автозагрузки" из меню "Пуск - Программы - BootRacer". В крайнем случае, используйте официальную утилиту удаления по ссылке.

Разберёмся как создать и настроить линейный индикатор выполнения (прогресс-бар) в виде диаграммы в Excel.

В современную экономическую жизнь прочно вошли понятия КПЭ (ключевые показатели эффективности, или KPI) и дашборда, которые помогают нам увидеть насколько эффективно выполняются те или иные цели. Грамотная визуализация позволяет сделать это приятным и понятным глазу языком.

Мы уже разбирали с вами примеры пулевой диаграммы, диаграммы в виде спидометра, сейчас остановимся ещё на одном варианте визуализации — индикаторе выполнения (также встречаются названия индикатор процесса или прогресс-бар от английского progress bar).

Для начала давайте поймем, что же это именно такое?

Прогресс бар — это графический элемент в виде полоски (горизонтальной, вертикальной, круговой и т.д.), показывающий статус процесса с помощью заполнения полоски по мере выполнения. Вы часто можете видеть горизонтальный вариант графика во время ожидания загрузки файлов или установки программ.

Сегодня предлагаю подробно рассмотреть линейный вариант графика, который представляет собой простую горизонтальную или вертикальную полосу:

Виды линейного прогресс-бара

Также в целом можно выделить 2 способа построения графика:

  • Без делений на шкале; в этом случае полоска нарисована как единый объект.
  • С делениями. В этом случае дополнительно рисуется шкала, которая отображает уровни выполнения (к примеру от 0% до 40% — красная зона, от 40% до 70% — желтая зона и т.д.).

Построение линейного индикатора (прогресс бара)

Вариант 1. Прогресс бар без шкалы

Давайте приступим к построению и начнем с самого простого варианта.

Для начала создадим таблицу, состоящую всего из 2 рядов с данными, в первом будет исходный процент (к примеру 85%), а во втором оставшаяся недостающая часть до 100% (т.е. в данном случае 15% = 100% — 85%):

Таблица с данными (Вариант 1)

Выделяем диапазон с данными A1:B2 и строим гистограмму с накоплением (в панели вкладок выбираем Вставка -> Диаграммы -> Линейчатая гистограмма с накоплением):

Построение линейчатой гистограммы с группировкой (Вариант 1)

Как видим Excel не совсем правильно интерпретировал данные и построил график с 2 рядами данных, поэтому для корректного отображения поменяем местами строки и столбцы (выделяем диаграмму и в панели вкладок Конструктор выбираем Строка/Столбец), этим мы добьемся отображения всех данных в одному ряду:

Смена строк и столбцов (Вариант 1)

Отлично, диаграмма уже начинает приобретать узнаваемый вид.

Далее устанавливаем минимальную и максимальную границы для оси (щелкаем правой кнопкой мыши по горизонтальной оси и попадаем в настройки Формата оси), как 0 и 1 соответственно, чтобы наша полоска полностью помещалась и показывалась на графике:

Настройки границ оси (Вариант 1)

В результате мы получаем следующий вид графика:

Установка минимальной и максимальной границы (Вариант 1)

Уберем ненужные на текущий момент детали в виде названия, дополнительных осей и прочего, чтобы они не отвлекали от построения (их, безусловно, можно не удалять и компоновать на ваше усмотрение):

Удаление лишних деталей (Вариант 1)

Как мы видим, полученная полоска занимает не всю ширину диаграммы, снизу и сверху мы видим пустые белые полосы.

Поэтому, чтобы растянуть диаграмму на всю возможную ширину и убрать лишние полосы, установим боковой зазор для ряда равным нулю (выделяем любой ряд с данными, щелкаем правой кнопкой мыши и выбираем Формат ряда данных -> Параметры ряда):

Настройка бокового зазора (Вариант 1)

В итоге получаем более компактный вид:

Установка нулевого бокового зазора (Вариант 1)

Остались небольшие детали, покрасим части полоски в подходящие цвета и добавим подпись данных на ряд:

Индикатор выполнения прогресса (Вариант 1)

Все готово, перейдем к следующему варианту.

Вариант 2. Прогресс бар со шкалой

Отличие этого варианта от предыдущего заключается лишь в дополнительной подложке под полоску, которая показывает уровни выполнения показателя, остальные части практически повторяют предыдущий вариант построения.

Для начала несколько модифицируем нашу таблицу и добавим на нее дополнительные ряды для построения шкалы:

В данном случае я указал шаг шкалы равным 10%, но можно поставить абсолютно любой по вашему усмотрению, главное чтобы сумма всех таких шагов давала 100% (10 шагов по 10% как в примере, или 20 шагов по 5% и т.д.).

Выделяем диапазон с данными A1:B11 и, как и в предыдущем примере, строим линейчатую гистограмму с накоплением:

Построение линейчатой гистограммы с группировкой (Вариант 2)

Повторяем алгоритм и меняем строки и столбцы местами, чтобы диаграмма приобрела необходимый нам вид:

Смена строк и столбцов (Вариант 2)

Как мы видим, у нас появилась достаточно длинная полоса, где в начале находится полоска, а в конце как раз разместилась шкала в виде маленьких разноцветных прямоугольников.

Покрасим каждый шаг шкалы в подходящий цвет, для этого левой кнопкой мыши выделяем каждый ряд по отдельности и делаем заливку соответствующим цветом (к примеру, первые 4 шага красим красным, 3 средние — желтым и 3 последние — зеленым):

Заливка шкалы цветом (Вариант 2)

Так как шкала должна быть подложкой (т.е. находиться позади основного ряда), то поместим основной ряд на второстепенную ось, чтобы он всегда находился над шкалой. Для этого в настройке формата ряда данных указываем построить ряд по вспомогательной оси (именно для ряда с основной полоской):

Настройка типов осей (Вариант 2)

В результате настройки типов осей получаем:

Перенос основного ряда на вспомогательную ось (Вариант 2)

Далее также для обеих осей указываем 0 и 1 как минимальную и максимальную границы, чтобы график был ровно от 0% до 100%:

Установка минимальной и максимальной границы (Вариант 1)

Убираем название, оси данных и прочие ненужные в данный момент детали, настраиваем нулевой боковой зазор:

Установка нулевого бокового зазора (Вариант 2)

Так как шкала на полученной диаграмме не видна за основной полоской, то для основного ряда с данными установим прозрачность (щелкаем по ряду правой кнопкой мыши, в контекстном меню выбираем Формат ряда данных -> Заливка и границы -> Заливка):

Настройка прозрачности полоски (Вариант 2)

Также добавим подпись данных и получаем:

Добавление прозрачности и подписи данных (Вариант 2)

По усмотрению шкалу можно сделать не сплошной, а с разделителями, для этого установим для каждого ряда шкалы белую границу:

Индикатор выполнения прогресса (Вариант 2)

Спасибо за внимание!
Если у вас есть вопросы по теме статьи — пишите в комментариях.

Доброго времени суток, есть небольшое кроссплатформенное приложение (Windows, Linux), которое визуализирует данные. Данные достаточно большого размера и загрузка приложения занимает порядка 20 - 40 секунд. И пока приложение работает в одном потоке, из-за чего оно не отвечает во время загрузки. Необходимо сделать анимированную шкалу загрузки (например, типичные вращающиеся шестеренки).
Нашел два способа:
1. Создать отдельный поток в котором загружать и обрабатывать данные:

А в основном потоке, что-то типа:

2. Создать функцию, рисующую один кадр и очищающую очередь событий, и вызывать её во время загрузки:

Если 1, то каким лучше способом реализовать создание потока (какая библиотека), чтоб был доступ к экземплярам класса извне потока (СSensor).
Я склоняюсь к 1. Плюс 1, что можно делать сколько угодно сложные анимацию загрузки и процесс загрузки данных.

Я бы не мудурствуя лукаво выбрал такой подход:

1. Написать класс-интерфейс листенера менеджера ресурсов (ResourceManagerListener)

Интерфейс должен предоставлять методы типа:
class ResourceManagerListener
<
virtual void startLoading(int countResources) = 0;
virtual void resourceLoaded() = 0;
virtual void endLoading() = 0;

2. Для класса менеджера ресурсов добавить метод addListener(ResourceManagerListener *listener)
3. В метод загрузки Менеджера ресурсов добавить код, который в процессе загрузки вызывает соответствующие методы для каждого добавленного листенера.
4. Класс рендера сцены должен наследовать ResourceManagerListener
class Render: public ResourceManagerListener
и соответственно в реализации методов интерфейса:
void Render::startLoading(int countResources)
<
// тут включать отображение загрузки
>

void Render::resourceLoaded()
<
// тут рисуем прогресс загрузки
>

void Render::endLoading()
<
// тут выключаем отображение загрузки
>

5. Подписываем класс рендера на события процесса загрузки ResourceManager->addListener(render);

Прошу прощение за не красиво оформленный ответ :) - у меня оставалось 2 минуты до обеда )))
Надеюсь идея понятна.

OkMan
> то каким лучше способом реализовать создание потока (какая библиотека)


стандартная библиотека языка с++

Bave
Да, идея понятна, интересный вариант, и плюс все в одном потоке, спасибо)

Kartonagnick
Значит всё таки надо перейти на С11, попробовать таки этот thread.

OkMan
> и плюс все в одном потоке

Если у вас функция, которая грузит контент не залипающая - тогда проще действительно сделать в одном потоке.
Если залипает - единственный способ рисовать параллельно - это в отдельном потоке.

OkMan
> Значит всё таки надо перейти на С11, попробовать таки этот thread.

Можно и не переходить, а попользоваться бустовским аналогом.

Но если есть возможность перейти - лучше перейти, поскольку мир вокруг меняется. Не стоит застревать в прошлом веке.

Kartonagnick
На 11 стандарт перешёл в основном в небольших программках. Попробовал thread - удобная штука, но нужно быть аккуратным при работе с handle-ми, т.е. не пытаться что-нибудь отрисовать из другого потока, а то контексты то разные.
Функция не залипающая, но достаточная объёмная по коду, идут много разного рода вычислений, и придется тогда их оборачивать.

USB монитор загрузки компьютера - это устройство на базе PIC18F2550, которое показывает производительность вашего компьютера с помощью двух аналоговых стрелочных измерителей и индикатора RGB LED. Конструкция основана на стандартном VU-метре, который управляется с помощью ШИМ от микроконтроллера.

Вместо одноцветного мигающего светодиода (как в типовом ПК) в этом проекте используется RGB-светодиод, интенсивность которого изменяется в зависимости от уровня использования загрузки процессора, а цвет - от чтения / записи HDD. Также была добавлена кнопка, позволяющая быстро включать и отключать устройство без необходимости делать это мышкой на экране.

Аппаратная часть

Аппаратное обеспечение основано на микроконтроллере PIC18F2550, который имеет встроенный USB. Минимальное количество компонентов использовалось для подключения устройства к порту USB, а также к коммутатору, стрелочным индикаторам и LED RGB. Общая принципиальная схема приведена далее.

USB-устройство на основе PIC - схема

Два потенциометра включены в конструкцию, чтобы провести быструю калибровку мощности полного отклонения, требуемой VU-метром (поскольку это может меняться на разных стрелочниках). Резисторы RGB LED были выбраны в соответствии с техническими данными светодиодов, чтобы обеспечить максимальную яркость, так как будем контролировать выход с помощью ШИМ. МК PIC работает на частоте 20 МГц, что позволяет использовать полную частоту ФАПЧ 48 МГц (это полезно, поскольку плавное ШИМ-управление светодиодом требует максимально возможной скорости процессора).

Плата печатная монитора загрузки

Чтобы разместить устройство на минимально возможном пространстве, разработана односторонняя печатная плата. Тем не менее, конструкция достаточно проста для того, чтоб ее можно было легко собрать на макетке, если у вас нет возможности для травления печатных плат. Вот изображение печатной платы.


Обратите внимание, что разъем USB направлен вниз, это позволяет подключить соединение внутри корпуса, позволяя проложить кабель по задней панели устройства. Возможно заменить кабель USB, если требуется, на более длинный или короткий, либо вообще напрямую припаять кабель к печатной плате.

Все подключенные устройства соединяются с использованием разъемов в стиле Molex, что позволяет легко собирать и разбирать индикатор. Вот готовая печатная плата с деталями и со всеми подключенными периферийными компонентами.


Чтобы изменить шкалу VU-метра, снимите пластиковую крышку с передней части и используйте острый нож, чтобы срезать существующую.

После удаления наклейки отсканируйте изображение в Фотошопе и проведите замену логарифмической линейной процентной шкалой.


Получив желаемый дизайн, распечатайте его на толстой глянцевой фотобумаге, а затем вырежьте по своим размерам. Затем новую шкалу снова приклейте к измерителю (с использованием полоски двухстороннего скотча) и снова соберите индикатор, используя клей.

Прошивка контроллера

Управляющая программа контролирует положение двух индикаторов с помощью двух встроенных модулей генератора ШИМ, включенных в PIC18F2550. Это обеспечивает точную ШИМ с 10-битным разрешением без нагрузки на сам процессор. Программа принимает процент от 0 до 100 и устанавливает соответствующий рабочий цикл для перемещения стрелок.

Единственная проблема здесь заключается в том, что измерители VU являются в основном логарифмическими (посмотрите на расстояния на исходной маркировочной панели, вы увидите, что разметка дБ не ровная, с правой стороны измерителя наблюдается гораздо большее деление на дБ). Это означает, что при рабочем цикле 50% стрелка будет указывать чуть вправо, а не прямо, как здесь нужно.

Для перевода из линейной шкалы в логарифмическую требуется немного работы и математики. Сначала настроим устройство и подключим мультиметр к выходу ШИМ от PIC, чтобы измерить эффективный выход в мВ. По мере увеличения рабочего цикла измерим выходную мощность в мВ, чтобы получить 25%, 50%, 75% и 100% по новой шкале. Это позволяет построить график, показывающий взаимосвязь между входным напряжением и отображаемым процентом:


Как видите на рисунке, когда была получена аппроксимация кривой логарифмического выхода, использовалась функция линии тренда в Excel, чтобы вычислить аппроксимацию полинома для кривой. Затем этот расчет был скопирован в программу, что позволило МК рассчитать правильную базу рабочих циклов ШИМ на желаемом процентном соотношении.

Для светодиода RGB устройству потребовалось еще 3 канала ШИМ, поскольку VU-метр использует 2 встроенных генератора ШИМ. Цикл широтно-импульсной модуляции светодиодных цветов составляет 60 Гц и дает 128 уровней яркости.

Чтобы получить правильное смешение цветов на LED индикаторе, важно учитывать относительные уровни яркости цветов, так как светодиод RGB не выдает одинаковую яркость для разных цветов. Это приведет к плохо согласованным уровням, когда попытаемся получить определенные комбинации RGB.

Чтобы обойти эту проблему, установил фототранзистор на макетке, подключенный к мультиметру. Фототранзистор выдает переменное напряжение в зависимости от количества света, которое он получает - как простейший экспонометр. Связав светодиод RGB и фототранзистор вместе с помощью черной изоленты, получилось установить ШИМ каждого цвета на разных уровнях. Выходное напряжение фототранзистора для каждого цвета и уровня было затем нанесено на график с использованием Excel. На графике видно что красный - самый яркий цвет, затем синий, а затем зеленый:


Опять же, используя функцию линии тренда в Excel, построите линейную линию и получите расчет, необходимый для аппроксимации яркости светодиода при известной входной мощности. Используя зеленый светодиод в качестве эталона (так как это самая низкая яркость), можете рассчитать остальные.

Выход каждого цвета измеряется с помощью фототранзистора, подключенного к источнику питания 5 В и мультиметра. К светодиоду применяется 256-шаговое разрешение ШИМ, а яркость выводится от 0 до 255 с шагом 32 уровня. Выходное напряжение красного, зеленого и синего измеряется отдельно. Все три цвета показывают линейный вывод.

Исходя из результатов, от 0 до 255 показаны линейные линии тренда, показывающие прогнозируемый уровень освещенности на всех выходных мощностях. Цвет с наименьшей максимальной интенсивностью (зеленый) используется с 0, представляющим выкл, и 255, представляющим максимальную яркость. Два других цвета масштабируются в соответствии с множителем линии тренда:

Красный = 0,0071 * х

Синий = 0,0064 * х

Где х - это шаг ШИМ. Затем надо должны масштабировать результат в соответствии с диапазоном цвета самой низкой интенсивности (зеленого), то есть для красного цвета, если x = 187:

Масштабная интенсивность = (255 / 1,1985) * (0,0047 * x)

Где 1,1985 - максимальная яркость зеленого светодиода, а 255 - количество шагов в шкале.

Затем, чтобы получить требуемый выход ШИМ (x) из масштабированной интенсивности (y), просто решаем уравнение и упрощаем:

х = 47 * у / 71

Таким образом, если яркость по отношению к зеленому равна 255, фактический выход ШИМ для красного должен быть 168,8.

Синий рассчитывается точно так же:

х = 47 * у / 64

Чтобы настроить шкалу, просто меняем последний номер (71 или 64). Если вы увеличиваете число, выходная линия тренда становится более плоской (меньше светоотдачи), а если уменьшаете - линия тренда становится круче (больше светоотдачи). Это можно использовать для настройки на ваш индивидуальный светодиод.

Программное обеспечение индикатора

  1. Загрузка процессора (всего или на ядро)
  2. Использование жесткого диска (всего или на физический диск)
  3. Использование памяти
  4. Использование сети (на карту / устройство)

Вот скриншот приложения в действии:

Кроме того, мониторинг сети позволяет сменить полосу пропускания по умолчанию (которая была бы 1000 Мбит / с для высокоскоростной карты Ethernet) и установить ее на более низкий уровень. У меня обычно это значение 15 Мбит / с, что является максимальной пропускной способностью моего широкополосного соединения.

Вы также можете настроить индикатор загрузки жесткого диска, чтобы установить цвет который должен отображаться если диск пишет, читает или обе операции сразу. Есть возможность изменять интенсивность отображаемого цвета в зависимости от использования HDD, то есть при интенсивном использовании винчестера светодиод становится ярче.

Приложение также поддерживает отображение статуса индикатора жесткого диска на панели задач. Это полезно если вы хотите чтобы и USB-устройство, и рабочий стол показывали, что происходит с жесткими дисками.


Форум по обсуждению материала ИНДИКАТОР ЗАГРУЗКИ ПК И SSD


Про использование технологии беспроводного питания различных устройств.


Что такое OLED, MiniLED и MicroLED телевизоры - краткий обзор и сравнение технологий.


Приводятся основные сведения о планарных предохранителях, включая их технические характеристики и применение.


В каком направлении течет ток - от плюса к минусу или наоборот? Занимательная теория сути электричества.


Такой стильный стрелочный дисплей служит для представления данных о работе серверов. Он отображает процент загрузки процессора, оперативной памяти и жестких дисков компьютера. Данные показываются с помощью трех аналоговых приборов стрелочного типа – вольтметров постоянного тока на 10 В (или любые подходящие, подобрать сопротивление для полного отклонения стрелки не проблема). За контроль над работой системы отвечает модуль Raspberry Pi Zero вместе с системой, состоящей из двух операционных усилителей LM358, питаемых от повышающего преобразователя 5>12 В (готовый модуль с Али).

Электрическая схема

Приставка-индикатор загрузки компьютера - памяти, HDD, процессора

Схема ЦАП на ОУ 358

Для того, чтобы подключить к выходам вольтметры, нужна простая программа, написанная на языке Python, которая генерирует три сигнала ШИМ, пропорционально нагрузке данного элемента контролируемого сервера. Схема на ОУ – аналоговый преобразователь сигнала ШИМ напряжения.

Приставка-индикатор загрузки компьютера - памяти, HDD, процессора

Плата с деталями – 2 LM358

ЦАП преобразует сигнал ШИМ с амплитудой 3,3 В поступающий с Raspberry Pi в напряжение в диапазоне от 0 до 10 В. аналоговые Выходы – 1, 2 и 3 – подключены непосредственно к датчикам на панели, а входы ШИМ – 1, 2 и 3, подключенные к контроллеру.

Конструкция индикатора

Самое сложное тут не собрать схему – а распечатать красивые 3 шкалы. Вот рисунок, который можете использовать для своего устройства.

Приставка-индикатор загрузки компьютера - памяти, HDD, процессора

Рисунки новой шкалы индикаторов

Затем вырезаете его и наклеиваете поверх родной шкалы стрелочных приборов.

Приставка-индикатор загрузки компьютера - памяти, HDD, процессора

Шкала вольтметра

Вид готового устройства

Индикаторы установлены на пластине, покрашенной серой краской. Можно встроить её в корпус компьютера, а можно оформить в виде отдельной приставки-коробки. Вся система монтируется в компактном корпусе, так что снаружи ничего, кроме стрелочных индикаторов не видно.

Приставка-индикатор загрузки компьютера - памяти, HDD, процессора

Готовый индикатор – 3 шт.

Все питается одним общим напряжением 5 Вольт с блока питания ПК. С одной стороны, оно питает Raspberry Pi Zero, а с другой – через преобразователь на 12 Вольт – схему аналогового генерирования напряжения управления от 0 до 10 В для стрелочников. Схема и прошивка МК не приводится – так как это уже отдельная история…

Читайте также: