Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Программа на Qt для ультразвуковых толщиномеров: перенос с C# на C++, график сигнала на OpenGL, общий протокол на C, версии для Windows и Linux

Используемые навыки C/C++/C# Linux OpenGL Qt Программирование на C

Описание

Производитель ультразвуковых толщиномеров получал от заказчиков один и тот же вопрос: «А под Linux программа есть?». Программы под Linux не было, и её написал я, Евгений Росляков. Разработкой занимаюсь с 2016 года. Работаю как самозанятый, по договору, а бухгалтерия получает от меня закрывающие документы. Сам из Москвы, с производителем работали удалённо, приборы мне прислали на стол.

Толщиномеры меряют стенки труб, котлов и резервуаров, а покупают их энергетические компании, заводы, службы технадзора. Прибор работает в поле сам по себе, но после обхода инженер подключает его к компьютеру, сливает замеры, строит отчёт и сдаёт его в архив. Для этого нужна программа на компьютере.

Старую программу лет десять назад написали на C# под Windows. Она работала, но заказчики массово переводили рабочие места на российские дистрибутивы Linux, и производитель начал терять тендеры: в требованиях стояло «совместимость с отечественной ОС». Запуск через слой совместимости работал через раз, а отчёты печатались криво.

Было и второе неудобство. Протокол обмена с прибором описан в прошивке на C, а в программе для компьютера его когда-то переписали заново на C#. Любое изменение в прошивке приходилось повторять дважды, и версии регулярно расходились.

Решение

Выбрал Qt и C++. Одна кодовая база собирается под Windows и Linux, интерфейс выглядит одинаково, а работа с USB-портом и файлами не требует отдельного кода под каждую систему. Qt используется по открытой лицензии LGPL, с динамической компоновкой библиотек: производителю не нужно покупать коммерческую лицензию, которую в России сейчас не продают.

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

В итоге в проекте сошлись все три языка из строки C/C++/C#. На C — общая библиотека протокола. На C++ с Qt — новая программа. Старый код на C# я разобрал как спецификацию: из него восстановил формулы пересчёта и формат старых файлов замеров, чтобы архивы прошлых лет открывались в новой программе.

Самое интересное — экран сигнала. Инженеру нужно видеть эхо-сигнал с прибора и двигать стробы, по которым считается толщина. В старой программе график рисовался стандартными средствами и подтормаживал на длинных записях. Новый рисую через OpenGL: даже запись на десятки тысяч точек двигается и масштабируется плавно на слабом офисном ноутбуке. Карту толщин по точкам обхода тоже вывожу через OpenGL, цветом от зелёного до красного.

Отчёты строятся по шаблону производителя и сохраняются в PDF. Проверял печать на Linux на нескольких принтерах, потому что именно на ней старая программа и ломалась.

Сборки под Linux сделал пакетами для двух самых распространённых у заказчиков дистрибутивов. Права на USB-порт выдаются при установке, без ручной настройки системы.

Результат

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

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

Архивы старой программы открываются в новой. Это было обязательным условием: у многих заказчиков отчёты за годы обходов.

Есть и то, что пока не сделано. Обновление прошивки прибора через новую программу работает только под Windows: драйвер загрузчика микроконтроллера под Linux капризничает, и я не стал выпускать сырую версию. Это следующий этап.

Старая программа на C# ещё полгода поставляется для тех, кто не готов обновляться, но новых функций в ней уже не будет.

Если у вас есть прибор и старая программа только под Windows, напишите мне через freelance.ru. Посмотрю код и протокол и скажу, что можно перенести, а что лучше переписать.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Перенос с Delphi учёта ремонтов на заводе: код на Pascal в Lazarus, замена отчётов на Visual Basic, утилиты VB.NET и склада на Power Builder без потери данных
Перенос с Delphi учёта ремонтов на заводе: код на Pascal в Lazarus, замена отчётов на Visual Basic, утилиты VB.NET и склада на Power Builder без потери данных
16
Веб-разработка и IT Создание сайта на MODX вместо пяти CMS: перенос сайтов группы компаний с HostCMS, NetCat, Diafan и DataLife Engine
Создание сайта на MODX вместо пяти CMS: перенос сайтов группы компаний с HostCMS, NetCat, Diafan и DataLife Engine
17
Маркетинг и Продвижение Продвижение в интернете бухгалтерской компании: блог, AI Content Editing, AEO и оптимизация поиска ChatGPT
Продвижение в интернете бухгалтерской компании: блог, AI Content Editing, AEO и оптимизация поиска ChatGPT
25
Веб-разработка и IT Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
19