Mam narzędzie Winform, które łączy się ze sprzętem przy użyciu portu szeregowego.Jaki wzorzec projektowy najlepiej sprawdza się przy sterowaniu sekwencją kroków?
Port szeregowy służy do wysyłania poleceń do sprzętu, który będzie potwierdzał polecenia, a czasami zwraca dane.
Aby wykonać zadanie, kilka poleceń należy wysłać do sprzętu w określonej kolejności.
Pomyślnie zaimplementowałem narzędzie, używając instrukcji switch do kontrolowania wysyłania poleceń. Jednakże, podczas gdy to działa, nie mogę nie myśleć, że istnieje lepszy, bardziej OO sposób robienia tego - czy istnieje?
Obecna implementacja jest poniżej:
Każdy przypadek jest polecenie, które wymaga wysyłania do sprzętu. Wysyłana jest metoda wywołania i identyfikator następnego kroku, który zostanie zwrócony, jeśli polecenie zostanie wysłane pomyślnie.
- Narzędzie wyśle polecenie sesji startowej do sprzętu.
- Sprzęt potwierdza polecenie.
- Narzędzie wysyła polecenie ustawienia kierunku do sprzętu.
- Sprzęt potwierdza polecenie.
itp
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;
}
}
Czy istnieje lepszy sposób to zrobić ..?
Czy istnieje dobrze znany wzór projektu, który powinienem obejrzeć?
Czy następny identyfikator wiadomości jest wysyłany do bieżącego połączenia "Wyślij"? –