@Eprinter
инженер, полиграфия

Какую среду/язык выбрать для написания управляющей программы, работающей под Windows и Linux?

Не программист, просто хобби такое. 20+ лет назад начал с Delphi5-7, потом стало не хватать, перешёл на RadStudioXE. Появилось желание функционально доработать один проект, попутно добавив возможность компилировать и под Windows, и под Linux (желательно вплоть до Малины). Программа управления ж.д. макетом, связь сейчас по двум USB-COM, но потребуется большее количество (3-4).
Текущая версия выглядит так:

63aaf665f375b954010401.png
Стандартные кнопки-ползунки, вывод текста и битмапов, рисование линий, всплывающие подсказки.
Не могу определиться с выбором:
- Lazarus (пару простых программ под Windows написал ранее, но толком не прочувствовал, под Linux не пробовал)
- перейти на Си (МК от Атмел и ардуинки много лет использую, базовые понятия о языке есть)
- или какой другой язык (может есть простой и удобный под мои задачи)
Уже склонился было к Лазарусу, всё-таки опыт с паскалем какой-никакой имеется, но начитался про другие кросс-платформенные IDE и засомневался. Интересует в первую очередь простота реализации и надёжность работы с COM-портами (эмуляция через USB, на том конце ардуинки или FTDI), а об этом нигде не пишут. Плюс простота создания графического интерфейса. Создание и отладка под Windows, после компиляция под разные версии Linux, желательно с минимумом переделок.
Спасибо.
  • Вопрос задан
  • 715 просмотров
Решения вопроса 1
Ну в общем-то Delphi нормально умеет компилироваться под линукс. Hemul GM подтвердит
На счёт малинок не уверен.

Можно ещё C# + Avalonia попробовать. Работа с USB-COM там вполне стабильная и интерфейсы красивые.
Под малинку нормально собирается и работает, но порог вхождения не нулевой
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
@RR_Zz
Qt + QtCreator и С++.
Работа с COM-портами есть в примерах, непосредственно в IDE, выкачивается как пример, который можно тут же начать переделывать под себя.
С++ там не сложный, если знаете С, то этого достаточно чтобы освоится.
Есть конструктор GUI.
Если использовать для работы с окружением классы Qt. Обращение к файловой системе, UART, конфиги, базы данных. То получится очень переносимое решение.
Ответ написан
Adamos
@Adamos
Есть вариант разделить монолит на две части:
- консольное приложение на С, разбирающее команду из своего ввода и рулящее портами
- и интерфейс, который передает ему команды, буквально на чем угодно - хоть С++, хоть Питон, хоть вообще веб-стек.
Например, так работает https://ru.wikipedia.org/wiki/Transmission
Ответ написан
@Quiensabe
VR-разработчик
Возможно странный вариант, но я такие штуки делаю на Unity.
Работа с COM-портом везде плюс-минус одинаковая, а под Unity есть еще и готовые ассеты для этого.
Написание логики - тоже разницы большой нет.

Но зато в Unity (или Unreal) - большой плюс в крайне легком построении интерфейса, правках, и вообще любом визуале. Рано или поздно захочется добавить красивые кнопочки, тени, эффекты, трехмерные паровозики... А тут оно все из коробки, с кучей готового контента (в т.ч. бесплатного), и возможностью собрать билд хоть под линукс, хоть под мак или андроид...

p.s. на малинке можно запустить только если поставить на нее андроид.
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
Внезапно, java+javafx (удобно и довольно просто) или классика в виде java+awt\swing (странно).
А так, почему бы GUI не реализовать поверх opengl, библиотек много для разных языков, прикрутить к С или лазарусу. Если привычные языки брать.
Можно еще на golang, современно, похож на С, компилируется в натив без зависимостей и рантаймов, но с GUI не все так однозначно.
Я тоже когда то начал с паскаля\rad через С к ++ и на java. Сейчас ковыряю golang, нравится. Но самое удобное по чаcти gui это javafx, реально самое удобное что я видел.

В части com, лучше уходи от этого в сторону tcp\udp. Для тяжелых случаев есть преобразователи, для простых nodemcu и ему подобные. Это просто более кросплатформенное, более удобное и т.д.
Ответ написан
eugenex15
@eugenex15
flutter
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
В задаче есть такая матрица выбора. По горизотнали - технологии работы с USB/COM/TCP/UDP. Их много. Но в простом варианте (если бы ком-порты стояли в железе) то линукс бы видел такие устройства-файлы.
/dev/ttyS[0123]
И это было-бы прекрасно. В духе линукс. С переходниками и адаптерами - сложнее но принцип наверное такой-же.

И второе измерение матрицы - это собсно на чем делать UI. Конешно если автор знает делфи - то пускай берет лазарус и кодит. Но я-бы предложил рассмотреть вариант веб-интерфейса. Это - более современно и вообще веб-интерфейсы сейчас имеют вид - более привлекательный чем Windows95/Delphi лет 20 назад. По картинке с железной дорогой - вроде ничего сложного нету. Сейчас браузерны игры и то посложнее выглядят. Вот как-то так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы