2009-06-15 4 views
0

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

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

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

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

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

+0

Любой вид примера кода/псевдо-код, вероятно, получить вам больше подробные ответы. – tgray

+0

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

+1

Должны ли вы «поместить логику в команды о том, может ли команда выполнить»? Вы моделируете «команду», например «сделайте мне тост». Является ли «команда» в реальной жизни чем-то, что инкапсулирует знание условий, при которых эта команда может быть выполнена? Нет. Так что не моделируйте свою программу таким образом. У вас есть три вещи - состояние физических _механизмов_, _commands_, представленных пользовательскими входами через эти механизмы, и _policies_, которые описывают, какие юридические команды и каковы их последствия, при определенных состояниях. –

ответ

0

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

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

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

Смежные вопросы