|
|
  |
[Вроде решено] Массив указателей на функции. Указатель на массив |
|
|
|
Feb 4 2017, 12:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(jcxz @ Jan 31 2017, 01:34)  . . . . Нет. PC - вот лучшее место для хранения состояния автомата состояния!  Параллельное ПЗУ разнообразной емкости и разрядности данных, аналогичный регистр-защелка по данным, обратная связь выхода регистра на адресные входы ПЗУ. Входные сигналы - также на адресные входы ПЗУ. Автомат однако. Декодер манчестерского кода был сделан по такой схеме.
|
|
|
|
|
Feb 4 2017, 12:29
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Feb 4 2017, 12:28)  Да, наверное есть случаи, когда Ваш метод имеет смысл. Спасибо, я попробую. Да, наверное такой случай можно придумать и вообще в порыве энтузиазма притянуть еще пару случаев. Но в общем довольно НЕЧИТАЕМО на самом деле. Причина в том, что под читаемость попадает и привычность стиля. Для меня еще огромный недостаток, что при работе/отладке в реальных условиях, а не на столе под отладчиком, нет ЕСТЕСТВЕННОГО наглядного вывода развития событий автомата и истории вылета автомата. Цитата(jcxz @ Feb 2 2017, 15:19)  Вариант с switch/case при кол-ве состояний >=20 много хуже получается и это, имхо, очевидно. МОНОЛИТНЫЕ Автоматы с большим количеством состояний просто незачем делать. У меня есть не один проект, где при лобовом использовании автоматов состояний были-бы тысячи. Вместо этого есть порядка десятка связанных автоматов с десятком, ну двумя десятками состояний. При этом они находятся тоже не в одном switch/case. Например, часть из них уходит в ОТДЕЛЬНЫНУЮ функцию переключения состояний автомата. В этой же функции вся отладка консольная.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 5 2017, 07:53
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(zltigo @ Feb 4 2017, 16:29)  нет ЕСТЕСТВЕННОГО наглядного вывода развития событий автомата и истории вылета автомата. Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum Цитата(jcxz @ Feb 2 2017, 13:38)  мой метод значительно упрощает код, он становится легче для анализа и отладки. Кстати, расскажите подробнее про отладку - как то происходит? Вот как быстро понять текущее состояние автомата?
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 5 2017, 12:14
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Feb 5 2017, 09:53)  Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum  Использование отладчика, например, в заполярье на сопке не есть хорошая идея. Точнее очень плохая, поскольку там нет ни специалиста, ни компьютера и исходниками и проектом, ни отладчика. Ну а то, что выводится у консоль, то удаленно доступно и лог сбрасывается. При этом отладка может быть и не включена - состояния автомата с сопутствующими данными пишутся в некий буфер и при ошибке распечатывается предистория, как дошли до состояния такого. И вообще - отладчик универсальный инструмент, но специализированный инструмент можно сделать лучше.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 5 2017, 14:18
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(zltigo @ Feb 5 2017, 15:14)  При этом отладка может быть и не включена - состояния автомата с сопутствующими данными пишутся в некий буфер и при ошибке распечатывается предистория, как дошли до состояния такого. Да, у меня тоже такое есть, имя состояния выводится после времени установки. Но тут то просто - процесс медленный, все выводится в реальном масштабе времени. С быстрыми автоматами буферизация данных становится сама по себе непростой задачей. Код {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"
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 5 2017, 18:17
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Feb 5 2017, 16:18)  С быстрыми автоматами буферизация данных становится сама по себе непростой задачей. По этой причине незачем печатать развернутые сообщения (выбор детализации, как по объему распечатки, так и по набору состояний ) и, как уже писал, запуск распечаток от одного заданного состояния до другого. Причем есть буфер для запоминания трассы автомата, который вообще постфактум может быть распечатан - дошли до интересующего состояния и распечатали. Ну и проблемы отладки автоматов это, обычно медленные автоматы, которые от разнообразных внешних воздействий зависят. Быстрые обычно внутренние, их можно и на столе отладчиком посмотреть.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 6 2017, 04:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Feb 5 2017, 20:35)  Тут уже мое "заполярье" - иногда приходится реализовывать протокол обмена по описанию, все вроде симуляторами проверил, а с реальным дивайсом в поле не работает, а он за тысячи километров. Тогда и меня должны понять, поскольку у меня "протокол по описанию" нередко бывал на многие ТЫСЯЧИ страниц. Тут уж никакой симулятор "на столе" не изобразишь для отладки, тем более без ошибок. Ну и встречное оборудование на реальных сетях все время меняется. И служит все десятки лет. Вот перед Новым Годом по подключению очередного комплекта оборудования разработанного и вылизанного более 10 лет назад "компетентные органы" https://ru.wikipedia.org/wiki/СОРМ мозг выносили - типа у них "все правильно".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 7 2017, 00:59
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Dog Pawlowa @ Feb 4 2017, 12:28)  Я же написал уже, что у меня запись и восстановление оптимизированы по месту, а у Вас всегда пишутся и читаются все регистры, которые задействованы во всей функции поддержки автомата. А Вы не поняли и недостаток пытаетесь выдать за достоинство. Я Вас ни в чём не собираюсь убеждать. Каждый пишет в меру своего умения и знаний. Насильно обучить чему-то невозможно. Кто хочет, тот поймёт и все преимущества моего метода, плюсы и минусы и случаи когда его удобно применять. Ибо они очевидны. Описал этот метод не для того чтобы с кем-то спорить тут. Использовать его только понимающим. Остальные - пройдите мимо, не вам это. Цитата(Dog Pawlowa @ Feb 5 2017, 09:53)  Вот как быстро понять текущее состояние автомата? Включить мозг и догадаться, что PC сохраняется по фиксированному адресу ОЗУ - посмотреть там.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|