Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2014, 07:55   #11
fanlis
Пользователь
 
Регистрация: 13.05.2007
Сообщений: 60
Печаль

Жаль, никто не может помочь
fanlis вне форума Ответить с цитированием
Старый 31.10.2014, 11:32   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Я в цикле прохожу по всем объектам и последовательно от источников по определенным правилам распространяю сигнал. На простых схемах работает, но на сложных из-за того, что сигнал распространяется постепенно, получаются непонятные сигналы, которых быть не должно.
Заменить цикл на рекурсию.
Узел получил сигнал, обработал, передал дальше.
Цитата:
В каждом объекте имеются ссылки на другие объекты, с которыми данный объект связан.
Если для успешной обработки нужно несколько сигналов от РАЗНЫХ узлов, то передача осуществляется ТОЛЬКО после прихода ВСЕХ нужных сигналов (до тех пор состояние выходов узла считается неизвестным uLevU (непонятный уровень).).

Как всегда в рекурсии возможно неотслеживаемое программно бесконечное блуждание сигнала (зависание программы!).

Другой способ.

Для узла вводится состояние "готов к передаче" (все входные параметры известны а выходные посчитаны).
В цикле пробегаем по всем узлам.
Если он уже готов, то пропускаем его обработку
Если входы еще не готовы - тоже пропускаем
И наконец если его входы готовы, то считаем и взводим состояние готовность.

Повторяем ЭТОТ цикл ДО готовности ВСЕХ узлов.

Для защиты от зависания (зацикливания) в каждом цикле просмотра(вычисления) готовности считаем число узлов сменивших свое состояние на готов. Как только число таких узлов =0(!!!) и в тоже время еще не все узлы переведены в готовность, в то ЭТО СИГНАЛ, что программа готова уйти в бесконечный цикл и НАДО срочно принимать меры (завершать этот повтор циклов!!!).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 31.10.2014 в 11:35.
evg_m вне форума Ответить с цитированием
Старый 03.11.2014, 10:17   #13
fanlis
Пользователь
 
Регистрация: 13.05.2007
Сообщений: 60
По умолчанию

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

evg_m, предложенные способы являются альтернативой тому способу, которым делаю я, возможно даже лучшей, но проблему не решают.

Если взглянуть на вторую картинку, которую я приводил ранее, с источник D идет нулевой сигнал, с левого транзистора тоже идет нулевой сигнал и пока все нормально. Но как только я меняю сигнал на источнике D на единичный, то он встречается с нулевым сигналом, который все еще идет с транзистора и получается не понятно какой в итоге сигнал получается на проводе. Вся проблема из-за обратной связи.

Есть вариант при смене сигнала обнулять всю схему и запускать прохождение сигналов заново, однако в этом случае не будут работать схемы с триггерами, которые запоминают предыдущее состояние.
fanlis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите понять прохождение исключений llyDbg Dimka-novitsek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.09.2014 16:36
Прохождение лабиринта (волновой алгоритм) Alexander_A Общие вопросы C/C++ 9 30.10.2011 19:52
резонанс в электрической цепи foxted Помощь студентам 3 25.12.2010 05:14
прохождение практики radikayupov1710 Помощь студентам 0 18.04.2010 17:39
Прохождение подземного лабиринта Джаффара МаксимNEWProgramm Паскаль, Turbo Pascal, PascalABC.NET 3 12.04.2008 19:52