Это вторая часть статьи. Первая часть стать находится здесь: Год после увольнения из Росатома (Часть 1)
Фирма, в которой я удаленно работаю, занимается разработкой устройств высокоточной GNSS-навигации. Одно из развиваемых направлений - судовая гражданская навигация. Для навигационных устройств, которые выдают данные по протоколам BINR и NMEA2/3, требуется ПО, которое бы все эти измерения красиво показывало на мобильных устройствах.
Разработку я веду на C++ - фреймверке Qt с использованием QML. Это очень удобно, так как сразу получается бесплатная компиляция под десктоп 32/64 bit для Linux и Windows, и, что самое главное, под платформу Android. Мой код интегрируется с проприетарной библиотекой, которая обеспечивает парсинг NMEA и BINR протоколов, и которая до этого проекта существовала для нескольких embedded-платформ под 16/32 bit, плюс под Windows 32 bit компилировалась через какой-то древний Borland-компилятор. Да, в таком деле все время приходится работать с легаси. Зато, если понадобится, мы сможем сделать сборку хоть под микропроцессор Эльбрус, благо на последней выставке "ЭкспоЭлектроника-2018" уже появилась куча отечественных устройств на нем.
Недавно, сделав крупный релиз, я организовал проверку работы системы в "боевых" условиях на яхте:
В самом начале работы был нарисован оригинал-макет того, как должна выглядеть страница с навигационными датчиками:
В ходе работы были некоторые трансформации, в результате получилось вот такое Android-приложение с навигационным экраном. Практически, один-в-один, как заказывали:
Все стрелочки прикольно упруго двигаются, а цифровые счетчики "прокручиваются" как настоящие. Такое поведение можно отключить в настройках, но мне так больше нравится. Далее пришлось научиться работать из C++ со встроенными сенсорами мобильного устройства в ОС Android:
Встроенные сенсоры - это демонстрационная возможность. На самом деле настоящие навигационные данные передаются по сети по TCP-протоколу или берутся из файловых логов, если работает режим имитации. В планах передача данных по Bluetooth и USB/Com. Меню у приложения многоуровневое, и выглядит так:
Далее наметилась работа на поддержку картографии. Картография - это вообще отдельный большой мир. В новых релизах появилось окно, в котором отображаются слои Open Street Map и Open Sea Map. Конечно, это все демонстрационно, так как для реальной навигации должны использоваться профессиональные морские карты, но реализовано это будет позднее:
Для карт такой стиль экрана не очень подходит, так что видимо предстоит работа по переделыванию на планарный стиль, с картой во весь экран, без этих всех олдстайловых рамочек, кнопочек и счетчиков.
В общем, работа кипит.
* * *
Этим постом я сдержал обещание рассказать о том, как обустраивает свою жизнь программист после увольнения из "теплого" места. Я неимоверно рад, что в мире есть Интернет, благодаря которому такая деятельность как удаленная разработка вообще стала возможна. Да, иногда приходится ездить в командировки, но это лишний раз мобилизует, потому что к очередным испытаниям надо доводить проект по-максимому до вылизанного состояния.
Всем удачи.