Имеется в виду правильная организация программы на ПК на языке высокого уровня (но не каком-то специальном).
Конкретный пример: ПК управляет манипулятором через СОМ порт. Дает команду переместить манипулятор, дожидается от него подтверждения, что движение закончено, задает следующее движение (Взять деталь - перенести на новое место - повернуть - положить и т.д.) Также могут возникнуть дополнительные события (например нажата кнопка "отмена"), которые должны прервать текущее действие и перейти на другую ветку сценария. Например, при отмене действия, манипулятор должен свернуться в исходное положение. Но, если он уже успел взять деталь, то должен прежде вернуть ее на место.
Я всегда делал так:
- Циклические операции манипулятора помещал в функцию "сценарий", в которой был набор действий, выбираемых по
swich(Step){case 1: {} case 2: {}…..}
- При очередном событии (в основном приход данных в СОМ порт) менял номер шага Step и однократно выполнял эту функцию.
Когда это простая итерация, то все достаточно удобно и наглядно. Но, когда возникают события, требующее свернуть с прямого пути, появляется куча запутанной логики, в которой мне самому даже сложно разобраться, спустя время.
Как это делается вообще?