Реализация очереди задач с приоритетами на Qt
Введение Когда фоновые задачи в приложении неравнозначны по важности — например, обработка пользовательского ввода важнее фоновой синхронизации с сервером — простая FIFO-очередь не подходит: важная задача может застрять…
Сравнение программ для работы с Arduino: Arduino IDE, PlatformIO, Qt Creator с расширениями
Введение Перед тем как писать прошивку для Arduino, нужно выбрать инструмент разработки. В статье сравним три основных варианта: классическую Arduino IDE, более продвинутый PlatformIO (как расширение для VS…
Потоковый разбор больших JSON-файлов: альтернативы QJsonDocument для экономии памяти
Введение QJsonDocument::fromJson() загружает и разбирает весь JSON-документ в памяти целиком, что прекрасно работает для типичных ответов API размером в килобайты, но становится проблематичным для очень больших файлов —…
Готовый helper для конвертации единиц измерения (метры/футы, КБ/МБ и т.п.)
Введение Приложения, работающие с физическими величинами или объёмами данных, регулярно нуждаются в конвертации единиц измерения — расстояния, объёмов памяти, температуры. Разрозненные magic-числа конвертации, разбросанные по коду (value *…
Светодиодная матрица 8х8 (1088BS) и сдвиговый регистр 74HC595
Введение Светодиодная матрица 1088BS (8×8 точек) в чистом виде требует 16 пинов для прямого управления (8 строк + 8 столбцов) — что нереалистично при ограниченном количестве пинов Arduino.…
Real-time графики в Qt: обновление данных на лету без просадки FPS
Введение Графики, отображающие данные в реальном времени — телеметрию датчиков, биржевые котировки, аудио-визуализацию — предъявляют принципиально иные требования к производительности, чем статичные графики: данные нужно обновлять десятки раз…
Оптический разрывной датчик и ИК-модуль обхода препятствий для робота
Введение Оптический разрывной датчик (slot/break-beam sensor) и комплексный модуль «умная машинка, датчик препятствий, инфракрасный датчик, фотоэлектрический переключатель» — оба относятся к категории оптических датчиков обнаружения объекта, но с…
Producer-Consumer на QWaitCondition: классический паттерн в Qt-коде
Введение Паттерн «производитель-потребитель» — один из самых распространённых в многопоточном программировании: один или несколько потоков генерируют данные (производители) и помещают их в общую очередь, а другой поток (или…
Архитектура plugin-based приложения: пример расширяемого редактора
Введение В заключительной статье цикла соберём вместе концепции из предыдущих девяти статей в цельную архитектуру — спроектируем расширяемый текстовый редактор, где функциональность форматирования, экспорта и подсветки синтаксиса реализована…