Машина состояний: взаимодействие While Loop и Case
Добавлено: 15 дек 2016, 15:46
Здравствуйте! Разрабатывая модель радиостанции с использованием МАШИНЫ СОСТОЯНИЙ для разных режимов работы, столкнулся с вопросами. Привожу простой пример, на котором покажу свои вопросы. В примере нужно сделать так, чтобы после нажатия на кнопку ВКЛ на лицевой панели появилось идущее вперёд время и дальше две ситуации: либо регулятор звука в нулевом, либо в каком-то другом положении от предыдущего включения ВП. Если регулятор звука в нулевом положении, то мигает предупредительная надпись и надо регулятор звука (пока самого звука нет, но для вопроса это и не важно) поставить в любое положение (1, 2...). Исчезнет мигающее предупреждение и появится индикация выставленного уровня в виде прямоугольников, пропорционально положению регулятора. Вот на этом надо бы остановиться, но чтобы и время двигалось вперёд и была возможность выставить на лицевой панели любой другой уровень. Это дежурный режим, в котором и уровень звука должен регулироваться с описанным выше условием, и время должно "идти", и чтобы можно было выключить прибор. Как остановить выполнение программы на дежурном режиме? Куда надо отправить программу селектором Case Structure после выполнения в моём примере селектора "Индикатор звука"? На лицевой панели будет ещё несколько кнопок и они должны быть доступны в дежурном режиме для работы, т.е. программа должна отслеживать состояние элементов на лицевой панели. Намеренно делал маленькими фрагменты машины состояний, чтобы быть близко к реальному проекту, где внутри каждых Case содержится фрагмент кода.
И более мелкий вопрос. После первого же положения регулятора звука перестаёт мигать надпись и программа идёт дальше. А как сделать так, чтобы программа выжидала, когда закончится вращение потенциометра (пользователь может вращать регулятор как на увеличение, так и на уменьшение: 2-й, 3-й, ... ЛЮБОЙ уровень) и только потом выходила из этого цикла, отображая соответствующее количество "прямоугольников" установленного уровня. Спасибо.
И более мелкий вопрос. После первого же положения регулятора звука перестаёт мигать надпись и программа идёт дальше. А как сделать так, чтобы программа выжидала, когда закончится вращение потенциометра (пользователь может вращать регулятор как на увеличение, так и на уменьшение: 2-й, 3-й, ... ЛЮБОЙ уровень) и только потом выходила из этого цикла, отображая соответствующее количество "прямоугольников" установленного уровня. Спасибо.