У меня есть инструмент 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;
}
}
Есть ли лучший способ сделать это?
Есть ли хорошо известный шаблон проектирования, на который мне следует обратить внимание?