FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Понедельник, 05.12.2016, 19:35
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Новый функционал » Новые » Порядок выполнения блоков на плате ("Проверить проект")
Порядок выполнения блоков на плате
Balzamalex
Дата: Среда, 02.03.2016, 12:13 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 0
Статус: Offline
С интересом прочитал тему из баг-трекера о порядке выполнения блоков в программе.
Вот эту
В связи с этим появилось предложение о доработке:
Автор пишет:
Цитата support ()
Порядок  обработки рассчитывается в момент компиляции. Если делать это на лету при отрисовке - программа начнёт тормозить (Вы передвинули блок - порядок изменился).

В программе есть незаметная :-) кнопочка "Проверить проект". Я предлагаю расчитывать порядок выполнения плат после нажатия этой кнопки. Нажал - программа подумала, и написала на блоках порядковые номера выполнения.
Сам пару раз натыкался на такую непонятку - думаю, это будет полезно.
PS А мне в свое время автор утверждал обратное:
(по памяти) "блоки в плате выполняются слева-направо"
 
support Дата: Четверг, 03.03.2016, 17:42 | Сообщение # 2
Автор программы
Группа: Администраторы
Сообщений: 579
Награды: 30
Репутация: 21
Статус: Offline
Цитата Balzamalex ()
PS А мне в свое время автор утверждал обратное:(по памяти) "блоки в плате выполняются слева-направо"
И это то же верно. Логические блоки обрабатываются в итоге именно так. Я писал что то объяснение максимально упрощенно а реально логика компилятора схемы намного сложнее. Вот смотрите схему:

"Выход" - Конечный блок. Он в этой схеме рассчитывается в первую очередь. Значит пишется

digitalWrite(0,
 
Затем вход этого блока спрашивает у блока 4 (OR) значение. Он начинает возвращать

(Г || 

и через свой второй вход спрашивает у блока 3 значение. И так далее. в результате получается строка


  digitalWrite(0, ( (Г) || (( (В) & (( (А) || (Б) )) )) ));

То есть  сначала расчитывается Результат = А OR Б,  затем Результат = Результат AND В, затем Результат = Результат OR Г.
То есть слева направо как я и рассказывал.

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




Разработчик программы FLProg
 
Форум » Новый функционал » Новые » Порядок выполнения блоков на плате ("Проверить проект")
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика