Разработка «зрелищной» программы. Интерфейс оператора, GUI и маркетинг

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Для торгового автомата, описанного в статье, потребовалось дополнить программу новыми функциями. Требовался интерфейс оператора - несколько диалоговых окон:

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

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

Для Заказчика была важна зрелищность. Диалоговые экраны должны были быть красивыми и положительно влиять на продажи его автоматов, особенно при демонстрации возможностей на выставках. Вот такой маркетинг. Для этого был нанят дизайнер, дизайн экранов несколько раз переделывался, обсуждался всем коллективом Заказчика. Результат в виде картинок для каждого экрана прислали нам как исходное, например:

Моей задачей было прежде всего - "не испортить дизайн". Надежность, простота в отладке и минимум проблем при последующем сопровождении само собой разумелись.

После некоторых раздумий решил использовать Python с библиотекой Pygame. Скорости Raspberry Pi хватало, даже если постоянно пересылать картинку. Конечно, в оконном режиме и с постоянной пересылкой не всё так радужно, но в полноэкранном режиме и с однократной пересылкой фона никаких задержек не заметно. Основной плюс - короткий простой исходник и мой полный контроль над распределением ресурсов процессора.

Небольшое отступление. Приходилось разрабатывать программы пульта оператора с интерфейсом пользователя для больших корабельных радиоэлектронных комплексов. Сложные правила, большая и непростая программа, но объемы данных от разных источников были небольшими, и Питона хватало. Писали две большие программы пульта оператора для гидроакустических станций, там объемы данных за единицу времени большие и без C/C++ уже никак. На Raspberry Pi не самый производительный процессор, но отличный видеочип и превосходная поддержка его в Pygame. На Raspberry Pi старались избегать тяжеловесных GUI библиотек, обычно ограничивались Pygame, SDL2, Tkinter. Если Заказчик не настаивал на конкретной библиотеке. Но вернемся к нашей задаче.

Одновременно программа должна была выполнять чтение UART с данными о состоянии автомата, опрос модуля АЦП ADS1115 ( подключенного к термопаре ), опрос 3G/4G модема по SNMP протоколу ( уровень сигнала сети и IP ), отправку телеметрии на сервер. Графический интерфейс пользователя не должен была мешать этим задачам. Добавьте к этому периодическое желание Заказчика что-то улучшить в интерфейсе, добавить или убрать кнопку, и т.п.

Для воспроизведения основного видео мы использовали программу hello_video.bin, достоинство - очень быстрый старт повтора, основное ограничение - поддержка только видеофайлов *.h264. Поверх этого видео иконки аварии отображались с помощью программы pngview, пример вызова:

./pngview -b 0x0000 -x 115 -y 360 alert_icon1.png &

Эту же программу использования для показа черного квадрата на весь экран до запуска основной программы. Было такое пожелание Заказчика, меньше показывать тексты и загрузку ОС после включения автомата.
Для показа обучающих видео выбрали omxplayer, пример вызова для отображения видео в окне:

omxplayer "How to clean the filter.mp4" --orientation 90 --no-keys --layer 4 --win 1045,190,1530,880 &

Заказчику требовалось два варианта исполнения GUI, для вертикального ориентированного монитора и горизонтального. Программу писали у себя на своем Raspberry Pi, процесс отладки:

Для отладки взаимодействия с новым "железом" использовали кой-какие простые имитаторы, например потенциометр как имитатор разной температуры от термопары + модуль АЦП ADS1115, три Arduino Uno для эмуляции плат цветной подсветки в тороговом автомате:

Окончательно отлаживали удаленно на торговом автомате Заказчика, для этого уже пришлось на настольном ПК Заказчика устанавливать VNC viewer, одного SSH уже не хватало. Это касается графических окон. Для отладки было удобнее запускать программу в оконном режиме, чтобы одновременно видеть сообщения в терминале.

Видео на нашем мониторе, как выглядит результат:

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

Далее писали версии для другого состава оборудования автомата, добавляли поддержку других 4G модемов, поддержку других протоколов и многое другое. В настоящий момент у Заказчика в сети более 10000 торговых автоматов с различными версиями наших программ. Принципиальных отличий в интерфейсе от описанной версии у них мало, работает без замечаний.

Источник: https://habr.com/ru/post/686612/


Интересные статьи

Интересные статьи

В этой статье речь пойдёт о некотором моём предложении для сообщества. Это вдвойне сомнительное предложение из-за того, что мой личный трип на битриксе уже закончился. Две недели безвылазно на учёбе п...
Как мы пилили десятки гайдлайнов, зачем искали свой путь и что теперь можем посоветовать вамРТЛабс — генеральный подрядчик Минцифры по Госуслугам. На протяжении двенадцати лет мы видели портал в десят...
Предположим, вы устраиваетесь на новую работу, заполняете кучу бумажек. Один из вопросов в короткой незатейливой анкете звучит примерно так: «Вы бы согласились за хорошие деньги отштукатурить комнату ...
Прошлый учебный год я вёл занятия в школе робототехники. Класс состоял из подростков 12-13 лет, способных и дисциплинированных. В моих подопечных меня устраивало всё, кроме одного маленького нюанса ...
Коммуникационные тренды: взгляд из-за рубежа, 22.10.2019 Дайджест подготовлен iMARS Communications. «В эпоху digital мир вынужден адаптироваться к жизни в цифровой среде. С каждым днем по...