Tengo una herramienta winform que se conecta con el hardware utilizando un puerto serie.¿Qué patrón de diseño se emplea mejor para controlar una secuencia de pasos?
El puerto serie se utiliza para enviar comandos al hardware, que reconocerá los comandos y, en ocasiones, devolverá los datos.
Para realizar una tarea, se deben enviar varios comandos al hardware en un orden definido.
He implementado con éxito la herramienta usando una declaración de interruptor para controlar el envío de los comandos. Sin embargo, mientras esto funciona, no puedo evitar pensar que hay una manera mejor y más OO de hacer esto, ¿verdad?
aplicación actual está por debajo de:
cada caso es un comando que hay que enviar al hardware. El método de envío recibe un método para invocar y el ID del siguiente paso, que se devolverá si el comando se envió correctamente.
- La herramienta enviará un comando de inicio de sesión al hardware.
- El hardware confirma el comando.
- La herramienta envía un comando de dirección establecida al hardware.
- El hardware confirmará el comando.
etc.
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;
}
}
¿Hay una mejor manera de hacer esto ..?
¿Existe un patrón de diseño bien conocido que debería tener en cuenta?
¿Se está enviando el siguiente MessageID a la llamada 'Send' actual? –