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

Остановка исполнения цикла по кнопке

Добавлено: 01 янв 2018, 21:47
Meteor
Всех с наступившим Новым годом!
И так суть проблемы.
Есть отладочная программа передачи команд в железо, писалась "чисто для себя". В программе имеется режим передачи данных из файла, передача происходит через виртуальный компорт с формированием пакетов идущих через каждые 5...15 мс (задается элементом Timer). Общее время передачи в этом режиме от 80 до 240 с.
В процессе обучения коллеги работе выяснилось, что не хватает кнопки принудительного выхода из режима передачи (коллега импульсивный и понажимал во время передачи на кнопку отправки такое число раз, которое соответствует объему пулеметной ленты, и как следствие процесс шел более получаса, пока я не решился принудительно остановить саму оболочку).
Поразмыслив, решил добавить кнопочку остановки, заменил цикл на вечный и сделал, казалось простое - объединил через "или" кнопку остановки с порогом цикла. (см. вложение)
Но либо я чего-то не учел, либо я что-то не то сделал вообще - остановка по числу срабатывает (ну скажем 1024 порог, превысили - вышли из цикла), а вот кнопка не отрабатывается - нажатие на нее не дает результата и цикл останавливается лишь по достижению порога.
Подскажите, что не так?

Re: Остановка исполнения цикла по кнопке

Добавлено: 09 янв 2018, 10:18
Artem.spb
1) выкинуть код работы с железом, оставить только кнопку и >1024 и проверить поведение программы в таком виде.
2) проверить, что провод на сдвиговый регистр идёт именно от функции ИЛИ, а не от нижнего входного терминала (бывает рука дрогнет и провод не туда подключается).
3) а зачем, собственно, сдвиговый регистр?
4) подключить стоп цикла прямо к кнопке, проверить работает ли.