ochkarik_ 0 13 марта, 2010 Опубликовано 13 марта, 2010 · Жалоба Добрый день. Хотелось бы еще раз более подробно поговорить о switch-технологии. Ввиду наличия свободного времени начал разрабатывать библиотеку классов для этого дела, хотелось бы узнать мнение специалистов о правильности самого подхода. В целом, идея такова. Создать набор виртуальных классов, реализующих базовую функциональность. Сами автоматы создаются в виде наследников. Требование - должна быть реализована виртуальная функция переходов. Функция может быть написана как вручную, так и сгенерирована автоматически из dot файла (формата GraphViz) (в этом случае имеем дополнительно картинку, соответствующую функции переходов). Такая библиотека кажется довольно удобной, особенно в случае программирования логических контроллеров (управление различными задвижками, пневмоцилиндрами, контакторами и т.д.), так как допускает множественное использование единожды написанного автомата сразу для нескольких объектов (для этого используются шаблоны). Единственная проблема - недостаток опыта. Хочется создать не просто одиночный проект, а именно библиотеку, а здесь все зависит от того, по тому ли пути пошел в самом начале. В общем, подскажите, стоит ли игра свеч, и в каком направлении двигаться. В прикрепленных файлах - самое начало. Может, у кого есть подобные вещи - прошу поделиться, в целях, так сказать, повышения образованности. StateMachines.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Ресурсов сожрет немеряно... По сравнению с концепцией "точка входа в подпрограмму, реализующую автомат есть состояние автомата". Применительно к АВР - это статическая переменная размером в 2 байта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sensor_ua 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба http://ru.wikipedia.org/wiki/%D0%A3%D1%81%...%84%D1%84%D0%B0 http://en.wikipedia.org/wiki/Protothreads Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Ага. Ну и конструкцию новомодную ГЦЦ-шную тоже нельзя не упомянуть static int count; static void *pc=NULL; void *thread_proc(void *pc) { if(pc !=NULL) goto *pc; //.............CODE................. //...........MORE CODE.......... // example of the State StateN: if(PIND & (1<<In_Pin)) count += 1; return &&StateN; } Вызов такого треда pc = thread_proc(pc); Впрочем, в помянутых Protothreads это как вариант и так есть. ЗЫ помогает избавиться от двухбайтового оверхеда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alcosar 0 14 марта, 2010 Опубликовано 14 марта, 2010 (изменено) · Жалоба Фреймворк использующий иерархические машины состояний http://state-machine.com/. Реализация на С и С++ под разные архитектуры. Изменено 14 марта, 2010 пользователем alcosar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sensor_ua 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Finite State Machine Operating System (FSMOS) http://www.nilsenelektronikk.no/nenesos.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Возможно Вам будет интересно почитать http://www.rsdn.ru/article/alg/Static_Fini...ate_Machine.xml Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Ввиду наличия свободного времени начал разрабатывать библиотеку классов для этого дела, хотелось бы узнать мнение специалистов о правильности самого подхода. Вы не первый и не последний. IMHO главная проблема писателей подобных систем - чрезмерная универсальность, превышающая реальные потребности решаемых с помощью подобных инструментов задач. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Вы не первый и не последний. IMHO главная проблема писателей подобных систем - чрезмерная универсальность, превышающая реальные потребности решаемых с помощью подобных инструментов задач. +1 Где предел абстрактности? Иногда идея возводится в абсолют. Не знаю как у кого, но я, если превышаю какой-то порог универсальности, то потом этим воспользоваться всё равно не могу. То есть, по прошествии какого-то времени, мне надо сначала изучить свой же (!!!) вариант реализации и уж потом им воспользоваться. Написание документов и описаний (делаю всегда) не очень помогает. Надо перечитать документ (описание) вспомнить, вникнуть, и уж потом воспользоваться. Если созданной библиотекой с таким уровнем абстракции, пользоваться постоянно, то, безусловно, это себя окупит. А если от раза к разу, то это работа ради идеи. Это моё мнение. Не знаю как у кого, но у меня, как мне кажется, организм борется с избытком информации. И борется простым методом. Я забываю. Начисто. Хорошо усваиваю и тут же забываю. Доходит до смешного. Бывали случаи когда я наново создавал некоторые вещи. Потом находишь - "Во! Так я это уже делал! Интересно! И решение интересное!" :) Применительно к данной тематике, я бы предпочёл несколько разных решений, пусть менее универсальных, но более наглядных с точки зрения универсальности. Либо применил бы промежуточное ПО (скорее всего именно так). То есть реализовал бы систему с управлением состояниями в виде внешних данных. Интерпретатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ochkarik_ 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Сколько всего вкусного )))) Спасибо всем за отзывчивость. Информации не на одну неделю. Нужно все это переосмыслить. Пока более всего заинтересовал вариант, на который дал ссылку Dima_G. (Кто-нибудь пользовал? В IAR откомпилится?) Ладно, буду думать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sansnotfor 0 24 марта, 2011 Опубликовано 24 марта, 2011 (изменено) · Жалоба Сделал перевод статьи о конечных автоматах. Эта статья где-то упоминалась на форуме - Martin Gomez "Embedded State Machine Implementation" Изменено 24 марта, 2011 пользователем sansnotfor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться