k155la3 27 4 февраля, 2017 Опубликовано 4 февраля, 2017 · Жалоба . . . . Нет. PC - вот лучшее место для хранения состояния автомата состояния! :yeah: Параллельное ПЗУ разнообразной емкости и разрядности данных, аналогичный регистр-защелка по данным, обратная связь выхода регистра на адресные входы ПЗУ. Входные сигналы - также на адресные входы ПЗУ. Автомат однако. Декодер манчестерского кода был сделан по такой схеме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 4 февраля, 2017 Опубликовано 4 февраля, 2017 · Жалоба Да, наверное есть случаи, когда Ваш метод имеет смысл. Спасибо, я попробую. Да, наверное такой случай можно придумать и вообще в порыве энтузиазма притянуть еще пару случаев. Но в общем довольно НЕЧИТАЕМО на самом деле. Причина в том, что под читаемость попадает и привычность стиля. Для меня еще огромный недостаток, что при работе/отладке в реальных условиях, а не на столе под отладчиком, нет ЕСТЕСТВЕННОГО наглядного вывода развития событий автомата и истории вылета автомата. Вариант с switch/case при кол-ве состояний >=20 много хуже получается и это, имхо, очевидно. МОНОЛИТНЫЕ Автоматы с большим количеством состояний просто незачем делать. У меня есть не один проект, где при лобовом использовании автоматов состояний были-бы тысячи. Вместо этого есть порядка десятка связанных автоматов с десятком, ну двумя десятками состояний. При этом они находятся тоже не в одном switch/case. Например, часть из них уходит в ОТДЕЛЬНЫНУЮ функцию переключения состояний автомата. В этой же функции вся отладка консольная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба нет ЕСТЕСТВЕННОГО наглядного вывода развития событий автомата и истории вылета автомата. Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum ;) мой метод значительно упрощает код, он становится легче для анализа и отладки. Кстати, расскажите подробнее про отладку - как то происходит? Вот как быстро понять текущее состояние автомата? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum ;) Использование отладчика, например, в заполярье на сопке не есть хорошая идея. Точнее очень плохая, поскольку там нет ни специалиста, ни компьютера и исходниками и проектом, ни отладчика. Ну а то, что выводится у консоль, то удаленно доступно и лог сбрасывается. При этом отладка может быть и не включена - состояния автомата с сопутствующими данными пишутся в некий буфер и при ошибке распечатывается предистория, как дошли до состояния такого. И вообще - отладчик универсальный инструмент, но специализированный инструмент можно сделать лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба При этом отладка может быть и не включена - состояния автомата с сопутствующими данными пишутся в некий буфер и при ошибке распечатывается предистория, как дошли до состояния такого. Да, у меня тоже такое есть, имя состояния выводится после времени установки. Но тут то просто - процесс медленный, все выводится в реальном масштабе времени. С быстрыми автоматами буферизация данных становится сама по себе непростой задачей. {27.01.17-08:09:46} "Filling" Time Water A B >Cycle A c0 p0 w0 f11 4 4 A:1/6945525 B:0/0 >F reduced A factor10 prod714 14 4 A:2/2310679 B:0/0 {27.01.17-08:09:48} "Discharge finished" Post pulses=4 W.counter: a/r/s/n 4/899/0/4; W. volume: r/a=3979400/4752; ConcA pulses r/a: 28/2 vol: r/a=20600/1428 ConcB pulses r/a: 0/0 vol: r/a=0/0 S. volume: r/a=4000000/6180; 16 4 A:2/2310679 B:0/0 Num Date Time Liter A% B% Err 0240:27.01.17-08:09-000.0-23.106-0.000-15 {27.01.17-08:09:49} "Error" 15 Low water pressure {27.01.17-08:09:56} "Error-2" {27.01.17-08:09:57} "Waiting" Stagnation 283572 0,5% |0,5% 0,5% |0,5% A:4,0l|A+B:1,5l |B:1,5l {27.01.17-08:09:58} "Filling" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба С быстрыми автоматами буферизация данных становится сама по себе непростой задачей. По этой причине незачем печатать развернутые сообщения (выбор детализации, как по объему распечатки, так и по набору состояний ) и, как уже писал, запуск распечаток от одного заданного состояния до другого. Причем есть буфер для запоминания трассы автомата, который вообще постфактум может быть распечатан - дошли до интересующего состояния и распечатали. Ну и проблемы отладки автоматов это, обычно медленные автоматы, которые от разнообразных внешних воздействий зависят. Быстрые обычно внутренние, их можно и на столе отладчиком посмотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба Быстрые обычно внутренние, их можно и на столе отладчиком посмотреть. Тут уже мое "заполярье" - иногда приходится реализовывать протокол обмена по описанию, все вроде симуляторами проверил, а с реальным дивайсом в поле не работает, а он за тысячи километров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 6 февраля, 2017 Опубликовано 6 февраля, 2017 · Жалоба Тут уже мое "заполярье" - иногда приходится реализовывать протокол обмена по описанию, все вроде симуляторами проверил, а с реальным дивайсом в поле не работает, а он за тысячи километров. Тогда и меня должны понять, поскольку у меня "протокол по описанию" нередко бывал на многие ТЫСЯЧИ страниц. Тут уж никакой симулятор "на столе" не изобразишь для отладки, тем более без ошибок. Ну и встречное оборудование на реальных сетях все время меняется. И служит все десятки лет. Вот перед Новым Годом по подключению очередного комплекта оборудования разработанного и вылизанного более 10 лет назад "компетентные органы" https://ru.wikipedia.org/wiki/СОРМ мозг выносили - типа у них "все правильно". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 7 февраля, 2017 Опубликовано 7 февраля, 2017 · Жалоба Я же написал уже, что у меня запись и восстановление оптимизированы по месту, а у Вас всегда пишутся и читаются все регистры, которые задействованы во всей функции поддержки автомата. А Вы не поняли и недостаток пытаетесь выдать за достоинство. Я Вас ни в чём не собираюсь убеждать. Каждый пишет в меру своего умения и знаний. Насильно обучить чему-то невозможно. Кто хочет, тот поймёт и все преимущества моего метода, плюсы и минусы и случаи когда его удобно применять. Ибо они очевидны. Описал этот метод не для того чтобы с кем-то спорить тут. Использовать его только понимающим. Остальные - пройдите мимо, не вам это. Вот как быстро понять текущее состояние автомата? Включить мозг и догадаться, что PC сохраняется по фиксированному адресу ОЗУ - посмотреть там. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 7 февраля, 2017 Опубликовано 7 февраля, 2017 · Жалоба PC сохраняется по фиксированному адресу ОЗУ - посмотреть там. А потом ? - искать по окну дизассемблера? Не выглядит особенно удобным по сравнению со значением из enum. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться