Страница 1 из 1

Выполнение в цикле пока

Добавлено: 11 май 2021, 13:44
rusincor
Всем привет !
Столкнулся с такой проблемой, не работает функция "выполнять в цикле пока".
Подскажите может я что-то делаю не так.
Вот пример платы
Выполнять в цикле пока.flp

Выполнение в цикле пока

Добавлено: 11 май 2021, 14:45
edyapd
[ref]rusincor[/ref], всё прекрасно работает. Просто вы не совсем понимаете, как это должно применяться.
Создайте ещё одну плату до и одну после. На обоих платах выведите что-нибудь в сом-порт. И вы заметите, что сперва вывелось с первой платы. Потом будет ожидаться, пока вы не нажмёте на кнопку и переменная не примет значение 10. И лишь затем сработает следующая плата.

Выполнение в цикле пока

Добавлено: 11 май 2021, 15:41
rw6cm
rusincor писал(а): 11 май 2021, 13:44 Подскажите может я что-то делаю не так.
Кнопка внутри цикла ни к чему.
При включении условие цикла сразу его запускает.
Снаружи доступа внутрь рабочего цикла нет. Кнопку не нажать, условие =10 никогда не настанет.
Вот вам бесконечный цикл.))
Не знаю что вы хотели, но кнопку надо вынести.
выполнять в цикле.flp

Выполнение в цикле пока

Добавлено: 11 май 2021, 16:03
edyapd
[ref=#ff8000]rw6cm[/ref], может я чего не понимаю. Но как раз если вынести кнопку из цикла, то её будет не нажать. И тогда как раз условие =10 никогда не настанет. Если же кнопка в цикле, то она будет постоянно опрашиваться.
Разницу в вашем примере и примере ТС это как раз видно. У ТС можно запустить отправку в сом-порт и остановить с помощью кнопки. Но после того, как дойдёт до 10, то кнопка (впрочем как и цикл) запускаться уже не будут.
В вашем примере кнопкой можно запустить цикл, но невозможно его остановить. После того, как переменная достигнет 10, повторно цикл не запустится, так как нет обнуления условия.

Выполнение в цикле пока

Добавлено: 11 май 2021, 17:13
rw6cm
[ref]edyapd[/ref],
Цикл (в данном случае While) выполняется только по условию, в данном случае (пер.123) !=(10).
Если в условии о кнопке ни чего не сказано, ставьте их хоть сколько, пользоваться ими из цикла вы не сможете.
Доступа внутрь цикла из вне нет.
Выйти из него можно только, если предусмотрен в коде "break" (его нет в флп),
или условие цикла не выполнимо.

Выполнение в цикле пока

Добавлено: 11 май 2021, 17:51
Sancho
Вход будет отрабатываться в цикле только в том случае, если НЕ установлен режим "защита от дребезга".
Отключите его - всё заработает.
Поставьте кондёр, если нужно.
Посмотрите два варианта кода.

Выполнение в цикле пока

Добавлено: 11 май 2021, 17:55
edyapd
[ref=#ff8000]rw6cm[/ref], увидел в чём я заблуждался. Почему-то мне казалось, что опрос кнопки идёт в функции (и как по мне это было бы более правильно), а оказывается, что она опрашивается в начале каждого цикла.
[spoiler]
изображение_2021-05-11_215232.png
[/spoiler]

И тогда да, если есть защита от дребезга, то кнопка опрашиваться не будет, так как зайдя в цикл программа там и останется.
Тут замечание [ref=#ff8000]Sancho[/ref] очень верное.

Выполнение в цикле пока

Добавлено: 11 май 2021, 18:04
rusincor
Спасибо за советы.
Сейчас не за компом, завтра как доберусь буду ковырять. По результатам отпишусь.

Выполнение в цикле пока

Добавлено: 11 май 2021, 22:29
rw6cm
Sancho писал(а): 11 май 2021, 17:51 Вход будет отрабатываться в цикле только в том случае, если НЕ установлен режим "защита от дребезга".
Снимаю шляпу... [ref=#ff8000]Sancho[/ref], как всегда прав :)
(Как то мне надо было загнать кнопку в цикл, ни чего хорошего из этого не вышло.)
Беру часть своих слов обратно ))
п/с думаю и с кондюками будет еще та песня...

Отправлено спустя 3 часа 56 минут 46 секунд:
rusincor писал(а): 11 май 2021, 18:04 завтра как доберусь буду ковырять
если нужды останавливать на ходу цикл нет, можно кнопку вынести.
так будет проще.

Выполнение в цикле пока

Добавлено: 13 май 2021, 09:26
rusincor
Привет народ всем спасибо проблема решилась.
Все дело было именно в защите от дребезга --- мать ее так
Только убрал все заработало

:smile152: :smile152: :smile152: