Re[2]: Список переходов в ДКА
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 30.09.25 21:08
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Переходы между состояниями ДКА обычно происходят в ответ на некие события.


Так точно!


Pzz>Вопрос, что представляют из себя твои события? Потому что, например, если ДКА реализует регулярное выражения, то события умещаются в один байт, и таблицу удобно хранить в виде таблицы переходов фиксированного размера, которая индексируются этим самым байтом.


Некое абстрактное событие.

Например, для станка с ЧПУ событием может быть замыкание концевика. Может генерироваться одно событие ENDSTOP_CLOSED, и доп. условия: BEGIN_ENDSTOP, END_ENDSTOP. Тут можно одно событие разложить на два: BEGIN_ENDSTOP_CLOSED и END_ENDSTOP_CLOSED. Но есть другой вариант — у нас два концевика на одной линии, и у нас физически одно событие ENDSTOP_CLOSED. Но у нас есть доп условия: MOVING_FORWARD, MOVING_BACKWARD.

Или другой вариант. Принимаем данные по UART в МК. События например, такие: CHAR_RECEIVED, RECEIVE_TIMEOUT_FIRES. Доп условия: может быть куча для события CHAR_RECEIVED, описывающая/характеризующая принятый символ, ещё доп условие — BUFFER_IS_FULL.


M>>СписокИсхСостояний : СписокСобытий -> ЦелевоеСостояние [? ДопУсловие] [- Описание];


Pzz>У меня есть смутное ощущение, что ДопУсловие ничего содержательно не добавляет, и только усложняет твою машинерию.


Pzz>Что вообще делает твой ДКА?


Что опишешь, то и делает

Например, ДКА для светофора
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.