Простое программирование Arduino

Тема в разделе "Флудилка", создана пользователем totuin, 21 фев 2014.

  1. totuin

    totuin Нерд

    Появилась программа, предназначенная для программирования Arduino людьми не владеющими никакими языками программирования. Проект создается на языках FBD, или LAD, широко известных в промышленном программировании. На языке FBD и LAD, программа создается путём рисованиея схемы в графическом редакторе, с последующей автоматической компиляцией в скетч Ардино. Программа бесплатна, и работает на операционной системе Windows. Сайт программы - flprog.ru
     
  2. Unixon

    Unixon Оракул Модератор

    Кроссплатформенность? Исходники?

    Судя по используемым библиотекам сделано на базе OSS, но закрыто и ограничено форточками...
     
  3. totuin

    totuin Нерд

    Написано на смолтолке. Возможен перенос на линукс и мак. Исходников нет, но программа бесплатна. Проект в развитии, это первый релиз
     
  4. Unixon

    Unixon Оракул Модератор

    А за какое вознаграждение авторы согласились бы перелицензировать программу под одну из лицензий OSI (GPL, BSD, MIT, etc. на выбор) и продолжать ее развитие на условиях этой лицензии? Ну и перенести все на тот же гитхаб скажем...
     
  5. Alex19

    Alex19 Гуру

    Очень интересная программа.
    Завтра попробую вкратце с ней разобраться.

    Если у Вас есть простые примеры работы с портами и условиями, скиньте пожалуйста ссылки.
     
    Последнее редактирование: 14 мар 2014
  6. Alex19

    Alex19 Гуру

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

    Удачи в Вашем проекте.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Прикольно!А нет программы которая бы считывала мысли и сразу бы их в НЕХ коды компилировала?
     
  8. Alex19

    Alex19 Гуру

    Мне именно так и поставили задачу:D, когда просили найти программу. Не найдя такой.
    Остановился на этой, так как человек умеет работать с Siemens Logo, там тоже можно программировать блок схемами.
     
  9. totuin

    totuin Нерд

    Вышла новая версия программы. Добавлены блоки управления сервомоторами, шаговыми двигателями, часы реального времени, дисплей. Так же реализована работа со строками. Скачать можно на сайте программы flprog.ru. Там же в разделе "Документация" доступны видеоуроки и примеры проектов написанных в программе
     
    Alex19 нравится это.
  10. Unixon

    Unixon Оракул Модератор

    totuin, а в чем вы FLProg разрабатываете? С помощью каких инструментов?
     
  11. totuin

    totuin Нерд

    Язык SmallTalk. Он в принципе самодостаточен. На нем же написан и сайт. Только пускач написан на дельфях, и то в связи с некоторыми особенностями запуска приложений на SmallTalk. Картинки редактирую в паинте. Вполне хватает. Иконки из бесплатных библиотек, ну и некоторые специфичные от Сименса. Надеюсь они не будут на меня в претензиях.)))
     
  12. Unixon

    Unixon Оракул Модератор

    А исходники проекта так свет никогда и не увидят? :)

    Когда-то разбирался немного со smalltalk... не помню с какой реализацией, Squeak что ли, но там все распространялось в виде образа базы объектов. У вас так же устроено?
     
    Последнее редактирование: 6 апр 2014
  13. totuin

    totuin Нерд

    Пока нет, если я сам не справлюсь с проектом, то возможно и передам в какие ни будь руки, которым доверяю. Это же как ребенок, и я не готов пока работать над проектом совместно с кем - то. Да и как я уже писал, язык очень специфичен, и например тот же githab не имеет репозитория кода для SmallTalk - а. В определенной узкой команде совместно еще работать можно, если поднять свой репозиторий, договориться о правилах ведения кода, правилах мержа и о многом еще. А если поднять общественный репозиторий версий, и разрешить всем там работать, проект умрет в течении нескольких итераций. Я восемь лет работаю на этом языке, и мы пробовали разные варианты ведения работы в команде. Открытый код у нас не получился.
     
  14. Unixon

    Unixon Оракул Модератор

    Да не, хотя бы релизы в readonly, чтобы можно было адаптировать/делать сборки под свою платформу, совершенно не обязательно собственно процесс разработки наружу выставлять. Понятно, что групповая разработка это совершенно отдельная проблема.
     
  15. totuin

    totuin Нерд

    Вы немного не понимаете специфику работы смолтолка. Есть виртуальная машина. Это тот самый ексешник который запускается (у меня flp.exe). Есть так называемый образ. Образов два вида. Один - это образ разработчика. Он содержит в себе всю среду разработки, все классы , дебагер, в общем все в чем разарбатывается проект. В процессе работы все изменения кода регулярно публикуются в хранилище версий. Это база данных где весь код раскидан по миллиону таблиц и хранится вся история проекта. При необходимости создать релиз, запускается образ второго типа, так называемый runtime образ. Туда из хранилища кода загружается необходимая версия проекта, он там сжимается, выгружаются ненужные пакеты и классы и он становится совершенно не доступен для редактирования. И вот он уже отдается пользователю.
    Нет промежуточных результатов.
     
  16. Unixon

    Unixon Оракул Модератор

    Образы всегда представляют собой платформо-зависимый бинарник или возможна выгрузка объектов в некоторый неисполняемый файл БД ? Т.е. возможно ли разделить проект на платформо-независимую базу объектов и платформо-зависимую виртуальную машину?
     
  17. totuin

    totuin Нерд

    Именно так. Образы платформо - независимые. для применения в других ОС достаточно поменять файл виртуальной машины. И они есть для линуксы, мака и солярис. Но есть небольшая тонкость. Если в программе используются вызовы API то на другой ОС будут падения в этом месте. Часть стандартных функций реализованы с переключением на разные апи в зависимости от используемой ОС. Но если стандартнных функций не хватает, то я пишу собственные вызовы библиотек. Тут естественно вызовы библиотек других ос не прописываются. В моей программе пока два таких места. Это запуск Arduino IDE с передачей ей файла скетча, и работа с cоm портом. Самое смешное что в в базовой поставке есть классы которые дают этот функционал для линукса, но не сделаны обертки для винды. поэтому их пришлось писать самому. Переключение между вызовами можно сделать, но нужно время и эксперименты в целевых ОС. Для линукса я как уже писал буду это делать после создания симулятора. Для мака пока в туманном будущем (когда заработаю на мак ))))) ). Если Вам хочется попробовать поэкспериментировать, то я могу Вам отправить файлы виртуальной машины, рунтайм образ, и инструкции для запуска. А Вы мне расскажете где были падения, и пришлете файлик error.log. Там сохраняется дамп ошибок с параметрами. Кстати очень мощный инструмент отладки. Но это завтра. Для контактов, моя почта support@flprog.ru
     
  18. Unixon

    Unixon Оракул Модератор

    OK, только я сначала еще отсмотрю ваше видео с хабра.
     
  19. Unixon

    Unixon Оракул Модератор

    totuin, существует ли в FLProg человекочитаемое текстовое представление проекта, которое можно использовать для обмена фрагментами схем посредством, например, чата или форума? Насколько я понял из ваших демо-роликов, вполне возможно выгружать проект в тот же XML или JSON и потом загружать его обратно в объекты и визуализировать.
     
  20. totuin

    totuin Нерд

    Сам файл проекта. Этим файлом можно обмениваться. Планируется выгрузка проекта в виде картинки png, для обеспечения возможности печати. С принтером пока не разобрался, да и времени не хватает. Сам проект, это достаточно сложная объектная структура, с сложными внутренними связями. При открытии проекта важно восстановить идентичность объектов, а так же неповторяемость инстансов. Это когда один и тот инстанс объекта находится в переменных разных объектов. При открытии сохраненного проекта важно восстановить это состояние. Насколько я знаю парсеризация объектной структуры в XML не позволяет этого сделать без дополнительных танцев с бубном. Применяемый мной парсер в sixx поддерживает эту функциональность по умолчанию. И вообще я не очень понимаю что Вы подразумеваете под человекочитаемое представление. Тот же XML то же читается с трудом. Да и sixx на него очень пожож. Вот пример внутреннего содержания файла проекта:

    <sixx.object sixx.id="0" sixx.type="Project" sixx.env="Arduino" >
    <sixx.object sixx.id="1" sixx.name="programm" sixx.type="FBDProgramm" sixx.env="Arduino" >
    <sixx.object sixx.id="2" sixx.name="networks" sixx.type="OrderedCollection" sixx.env="Core" >
    <sixx.object sixx.id="3" sixx.type="FBDNetWork" sixx.env="Arduino" >
    <sixx.object sixx.id="4" sixx.name="label" sixx.type="NetworkLabel" sixx.env="Arduino" >
    <sixx.object sixx.id="5" sixx.name="comment" sixx.type="String" sixx.env="Core" ></sixx.object>
    <sixx.object sixx.id="6" sixx.name="name" sixx.type="String" sixx.env="Core" ></sixx.object>
    <sixx.object sixx.name="isCollapse" sixx.type="False" sixx.env="Core" />
    </sixx.object>
    <sixx.object sixx.id="7" sixx.name="blocks" sixx.type="OrderedCollection" sixx.env="Core" ></sixx.object>
    </sixx.object>
    </sixx.object>
    <sixx.object sixx.name="project" sixx.idref="0" />
    <sixx.object sixx.id="8" sixx.name="variables" sixx.type="OrderedCollection" sixx.env="Core" ></sixx.object>
    </sixx.object>
    <sixx.object sixx.id="9" sixx.name="inputs" sixx.type="OrderedCollection" sixx.env="Core" ></sixx.object>
    <sixx.object sixx.id="10" sixx.name="outputs" sixx.type="OrderedCollection" sixx.env="Core" ></sixx.object>
    <sixx.object sixx.id="11" sixx.name="globalVariable" sixx.type="OrderedCollection" sixx.env="Core" ></sixx.object>
    <sixx.object sixx.name="isFBD" sixx.type="True" sixx.env="Core" />
    <sixx.object sixx.id="12" sixx.name="controllerDescription" sixx.type="ArduinoDescriptor" sixx.env="Arduino" >
    <sixx.object sixx.id="13" sixx.name="name" sixx.type="String" sixx.env="Core" >Arduino Uno</sixx.object>
    <sixx.object sixx.id="14" sixx.name="pins" sixx.type="OrderedCollection" sixx.env="Core" >
    <sixx.object sixx.id="15" sixx.type="ArduinoDigitalInputOutputDescription" sixx.env="Arduino" >
    <sixx.object sixx.id="16" sixx.name="number" sixx.type="SmallInteger" sixx.env="Core" >0</sixx.object>
    <sixx.object sixx.id="17" sixx.name="positionPoint" sixx.type="Point" sixx.env="Core"