Как бы вы разработали приложение для запуска машины? - PullRequest
0 голосов
/ 15 июня 2009

Какой тип машины вы спрашиваете? Машина, которая измеряет клин и округлость линз.

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

Вот быстрый двадцать секундный спуск. Есть два режима, настройка и запуск. В режиме настройки оператор может вручную перемещать любой из 6 различных двигателей с помощью одного из 6 различных тумблеров на панели управления. Они загружают все, затем переключают его в режим запуска, загружают линзу и нажимают кнопку go. Станок автоматически введет три индикатора, найдет край линзы, а затем повернет шпиндель и измеряет все расстояние вокруг клина.

Я закончил с очень плохой непроектностью наличия класса, который вызвал событие, которое сообщает, когда переключатель изменил состояние, какой он был переключателем и каково его новое состояние. Затем я делаю много «если» и прочее, чтобы определить, на что способна машина. Как вы можете себе представить, это очень и очень плохо.

У кого-нибудь есть хорошие идеи о том, как это структурировать? У меня есть некоторые из моих собственных, но я хочу услышать некоторые из тех, кто может быть немного более опытным в разработке приложений такого типа.

Ответы [ 2 ]

2 голосов
/ 16 июня 2009

Вам нужно построить конечный автомат, это лучший способ смоделировать проблему, подобную той, которая у вас есть:

http://en.wikipedia.org/wiki/Finite_state_machine

0 голосов
/ 16 июня 2009

Я бы даже не беспокоился о том, что система может делать, пока оператор не запустит машину.

Слушатели событий в порядке, но просто попросите их обновить модель памяти коммутаторов текущей информацией. Убедитесь, что вы перехватываете все события, В ПОРЯДКЕ .... если есть способ запросить текущее состояние переключателей, это даже лучше - игнорируйте все переключения, пока оператор не запустит машину, а затем выполните запрос.

В любом случае, определите рабочий режим во время запуска, основываясь на модели памяти коммутаторов. Сделайте копию модели памяти для работы, чтобы исключить возможность ее изменения во время работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...