У меня есть инструмент winform, который взаимодействует с оборудованием через последовательный порт.
Последовательный порт используется для отправки команд оборудованию, которое будет подтверждать команды и иногда возвращать данные.
Для выполнения задачи на аппаратном уровне необходимо отправить несколько команд в определенном порядке.
Я успешно внедрил инструмент, используя оператор switch для управления отправкой команд. Однако, хотя это работает, я не могу не думать о том, что есть лучший, более ОО-способ сделать это - есть ли?
Текущая реализация ниже:
Каждый случай - это команда, которую нужно отправить на аппаратное обеспечение.
Методу отправки передается метод для вызова и идентификатор следующего шага, который будет возвращен, если команда успешно отправлена.
- Инструмент отправит команду запуска сеанса аппаратному обеспечению.
- Аппаратное подтверждение команды.
- Инструмент отправляет команду установки направления аппаратному обеспечению.
- Аппаратное обеспечение подтвердит команду.
и т.д.
MessageID nextStep = MessageID.IMS;
while (nextStep != MessageID.Stop)
{
switch (nextStep)
{
case MessageID.ISS:
nextStep = Send( new ISS_StartSession(), MessageID.IE386);
RaiseProgressEvent(10); //percentage complete
break;
case MessageID.IE386:
nextStep = Send( new IE386_SetDirection(Direction.BOTH), MessageID.IE378);
RaiseProgressEvent(20);
break;
//etc
case MessageID.Error:
HandleError(); //abort task if necessary
break;
}
}
Есть ли лучший способ сделать это ..?
Есть ли известный шаблон проектирования, на который я должен обратить внимание?