FLProg и пингвины

в 16:49, , рубрики: arduino, linux, Блог компании FLProg, програмирование микроконтроллеров, программирование микроконтроллеров

FLProg и пингвины - 1

Добрый день.
Я разработчик программы FLProg – среды визуального программирования плат Arduino.
В обсуждениях на форуме посвященном программе и в личных сообщениях мне очень часто задавали вопрос о возможности запуска программы под ОС Linux. К сожалению, я не являюсь линуксоидом, и не имел возможности проверить работу программы под этой системой.
Но буквально сегодня один из пользователей программы сделал мне новогодний подарок. Он провел серьезное исследование вопроса запуска программы под различные версии Linux, и написал статью на эту тему. Я очень ему благодарен, и поскольку считаю, что читателям Хабра это то же будет интересно, представляю эту статью Вам.

Дорогие друзья,

Хочу написать пару слов об использовании FLProg под Линуксом.

Я заведую лабораторией автоматики на инженерном факультете одного частного университета. Мы много работаем с платформой Arduino и у нас всё заточено под Линукс. Кроме того, у нас большой популярностью пользуются русские разработки и русский язык. FLProg был встречен на ура, но к энтузиазму прибавилось и недоумение, почему у русских отсутствует версия под профессиональную операционку.

Но к счастью не всё так запущено.

От разработчика я узнал, что FLProg написан на SmallTalk с использованием вызовов Win API. Со SmallTalk-ом я знаком мало, но у меня есть большой опыт работы например с Си#, который тоже использует Win API, и у меня накопился положительный опыт кроссплатформенного использования подобных приложений. Поэтому у меня не возникло в принципе сомнений, что FLProg должен запуститься под Линуксом.

Для начала я просто скопировал файлы FLProg из Windows в Линукс и запустил программу из командной строки. Ожидания меня не обманули — FLProg запустился и бесперебойно работал под Убунту 12.10 и 14.04, а также openSuSe Evergreen 13.1. Разумеется, для работы с Win API Линукс требует соответствующей среды. Такой средой могут быть дистрибутивы использующие либо объединенное ядро LUK, либо стороннее ПО, как правило Mono или dotGNU (обе воспроизводят под Линуксом среду .NET). У меня во всех трех случаях установлена Mono. В настоящее время Mono поддерживают платформы Debian, Ubuntu, Red Hat, Suse, CentOS, Gentoo и Arch. В SuSe Mono установленя по умолчанию; в других дистрибутивах её надо установить из репозитория или исходников. В настоящее время это процесс достаточно отлаженный и автоматизированный, так что думаю нет надобности описывать его в деталях. Важно, чтобы у вас была версия вашего дистрибутива была по возможности поновее. Например, Убунту поддерживает Mono начиная с 12-й версии, а Fedora Core — с 10-й.

Но что делать, если у вас старая версия Линукса, или возникли проблемы в установлении Mono? (Например, Scientific Linux, которая хоть и является клоном
Red Hat, но Win API поддерживает крайне неохотно; Mono приходится устанавливать из исходников, долго и муторно доводя их до ума вручную.) Тогда на помощь приходит старый, добрый wine. В моем случае я запускал FLProg командой wine './FLProg' из командной строки под Убунту, openSuSe Evergreen 13.1 и Scientific Linux 6. Как и следовало ожидать, FLProg охотно запустился и стабильно работал во всех случаях. Если при этом, Убунту 12 ругается на несовместимые или отсутствующие модули:

FLProg и пингвины - 2

это можно проигнорировать, так как речь идет о глюках в реализации поддержки режима i386 под системой amd64 и эти глюки устранены в новых версиях wine. На работе FLProg это не отражается.

Тут мне, возможно, укажут, и вполне справедливо, что нет смысла тупо копировать файлы FLProg-а на Линукс и рисковать, что что-нибудь накосячу, когда FLProg устанавливается стандартной процедурой с использованием инсталятора Smart Install Maker. Разумеется, я пошел по этому пути. Сразу оговорюсь: есть нюансы.

Во-первых, для работы со Smart Install Maker вам понадобится wine. А у wine своя, автономная система файлов и папок, имитирующая систему Windows. Следует учесть, что если инсталятор предлагает установку программы в папке по умолчанию как здесь:

FLProg и пингвины - 3

то на самом же деле она будет находится в папке как здесь:

FLProg и пингвины - 4

Если вам не принципиально, где размещены файлы FLProg-а, можно всё оставить как есть. В противном случае вам придется вручную подогнать размещение папок под существующую или предполагаемую организацию.

Во-вторых, может случиться, что инсталятору придется помогать руками. Если, например, если под Убунту и SuSe весь процесс гладко прошел в автоматическом режиме, то под Scientific Linux 6 мне пришлось вручную создавать требуемые папки:

FLProg и пингвины - 5

Возможно, что прочие дистрибутивы Линукса таят разные другие сюрпризы. Постараюсь в меру возможностей протестировать FLProg на разных дистрибутивах и версиях.

И в-третьих, FLProg установленный «по всем правилам» начинает заметно тормозить. Это особенно заметно на машинах с 2гб памяти и посредственным тактовым генератором. Частично это можно объяснить тем, что теперь вызов программы происходит в измененной среде:

FLProg и пингвины - 6

но только частично, так как при вызове программы из командной строки FLProg по-прежнему тормозит. Вероятнее всего это происходит из-за того, что wine сохраняет управление библиотеками в фоновом режиме.

Так что за вами выбор метода установки и вызова FLProg-а. Если вы решите запускать FLProg из командной строки, то проблем у вас не возникнет. Если же открывать каждый раз папку FLProg вам не охота и вы хотите запускать его глобально или, как у меня, из системного меню, то следует помнить, что FLProg ищет файлы в текущей папке и может вам выдать ошибку отсутствия файла:

FLProg и пингвины - 7

Лечится это очень просто: можно написать простой скрипт, который будет открывать нужную папку:

FLProg и пингвины - 8

и поместить её, например, в ~/bin. Можно также создать новый пункт в системном меню (например под alacarte в оболочке Gnome, как у меня):

FLProg и пингвины - 9

и вызывать скрипт через него или прописать обе команды прямо в командной строке через ";" — кому как удобно.

Если вы используете инсталятор для установки FLProg, то инсталятор создаст на рабочем столе две иконки — FLProg.desktop и FLProg.lnk. FLProg.lnk. можно сразу же удалить — он работать не будет; зато FLProg.desktop полностью рабочий — его можно оставить на рабочем столе или перетащить на панель задач — как кому удобнее:

FLProg и пингвины - 10

Если вы работаете в Убунту под оболочкой Unity, то каких-то существенных проблем у вас тоже не будет. Если вы установили FLProg с инсталятором, то программа отлично запускается через Dash Apps Lens:

FLProg и пингвины - 11

В моем случае видны три иконки — это результат установки через инсталятор и добавления FLProg в системное меню в разных местах и разным образом. На других компьютерах картинка может быть другая. Следует отметить, что в любом случае в панели задач FLProg будет отражатьса либо как приложение wine:

FLProg и пингвины - 12

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

Я еще раз хочу поблагодарить Former Naval Person за проделанную работу.
Так же хочу представить еще несколько проектов пользователей программы FLProg.

Передача данных о температуре на сайт http://narodmon.ru/ через WIFI

Контроль заряда аккумуляторных батарей от 230в при отсутствии солнечной энергии.

Симуляция проекта FLProg в Proteus

Ну и естественно в честь нового года: Новогодняя мигалка

Поздравляю всех читателей Хабра с Новым Годом

Автор: totuin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js