реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> [Вроде решено] Массив указателей на функции. Указатель на массив
k155la3
сообщение Feb 4 2017, 12:07
Сообщение #46


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(jcxz @ Jan 31 2017, 01:34) *
. . . .
Нет. PC - вот лучшее место для хранения состояния автомата состояния! yeah.gif

Параллельное ПЗУ разнообразной емкости и разрядности данных, аналогичный регистр-защелка по данным,
обратная связь выхода регистра на адресные входы ПЗУ.
Входные сигналы - также на адресные входы ПЗУ.
Автомат однако.
Декодер манчестерского кода был сделан по такой схеме.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 4 2017, 12:29
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 5 2017, 07:53
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 2 659
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Feb 4 2017, 16:29) *
нет ЕСТЕСТВЕННОГО наглядного вывода развития событий автомата и истории вылета автомата.

Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum wink.gif

Цитата(jcxz @ Feb 2 2017, 13:38) *
мой метод значительно упрощает код, он становится легче для анализа и отладки.

Кстати, расскажите подробнее про отладку - как то происходит? Вот как быстро понять текущее состояние автомата?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 5 2017, 12:14
Сообщение #49


Гуру
******

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



Цитата(Dog Pawlowa @ Feb 5 2017, 09:53) *
Если Вы откажетесь от любимой консоли, то будете в отладчике смотреть состояние по осмысленному наименованию одной строкой из enum wink.gif

Использование отладчика, например, в заполярье на сопке не есть хорошая идея. Точнее очень плохая, поскольку там нет ни специалиста, ни компьютера и исходниками и проектом, ни отладчика. Ну а то, что выводится у консоль, то удаленно доступно и лог сбрасывается. При этом отладка может быть и не включена - состояния автомата с сопутствующими данными пишутся в некий буфер и при ошибке распечатывается предистория, как дошли до состояния такого.
И вообще - отладчик универсальный инструмент, но специализированный инструмент можно сделать лучше.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 5 2017, 14:18
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 659
Регистрация: 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"




--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 5 2017, 18:17
Сообщение #51


Гуру
******

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



Цитата(Dog Pawlowa @ Feb 5 2017, 16:18) *
С быстрыми автоматами буферизация данных становится сама по себе непростой задачей.

По этой причине незачем печатать развернутые сообщения (выбор детализации, как по объему распечатки, так и по набору состояний ) и, как уже писал, запуск распечаток от одного заданного состояния до другого. Причем есть буфер для запоминания трассы автомата, который вообще постфактум может быть распечатан - дошли до интересующего состояния и распечатали. Ну и проблемы отладки автоматов это, обычно медленные автоматы, которые от разнообразных внешних воздействий зависят. Быстрые обычно внутренние, их можно и на столе отладчиком посмотреть.





--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 5 2017, 18:35
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 659
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Feb 5 2017, 21:17) *
Быстрые обычно внутренние, их можно и на столе отладчиком посмотреть.

Тут уже мое "заполярье" - иногда приходится реализовывать протокол обмена по описанию, все вроде симуляторами проверил, а с реальным дивайсом в поле не работает, а он за тысячи километров.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 6 2017, 04:08
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 7 2017, 00:59
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 3 383
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Dog Pawlowa @ Feb 4 2017, 12:28) *
Я же написал уже, что у меня запись и восстановление оптимизированы по месту, а у Вас всегда пишутся и читаются все регистры, которые задействованы во всей функции поддержки автомата.
А Вы не поняли и недостаток пытаетесь выдать за достоинство.

Я Вас ни в чём не собираюсь убеждать. Каждый пишет в меру своего умения и знаний. Насильно обучить чему-то невозможно.
Кто хочет, тот поймёт и все преимущества моего метода, плюсы и минусы и случаи когда его удобно применять. Ибо они очевидны.
Описал этот метод не для того чтобы с кем-то спорить тут. Использовать его только понимающим. Остальные - пройдите мимо, не вам это.

Цитата(Dog Pawlowa @ Feb 5 2017, 09:53) *
Вот как быстро понять текущее состояние автомата?

Включить мозг и догадаться, что PC сохраняется по фиксированному адресу ОЗУ - посмотреть там.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 7 2017, 14:36
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 2 659
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(jcxz @ Feb 7 2017, 03:59) *
PC сохраняется по фиксированному адресу ОЗУ - посмотреть там.

А потом ? - искать по окну дизассемблера?
Не выглядит особенно удобным по сравнению со значением из enum.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2017 - 02:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016