【发布时间】:2016-08-24 11:16:38
【问题描述】:
我有一个使用串行端口与硬件接口的 winform 工具。
串口用于向硬件发送命令,硬件会确认命令并有时返回数据。
要完成一项任务,需要按照定义的顺序向硬件发送多个命令。
我已经使用 switch 语句成功实现了该工具来控制命令的发送。然而,虽然这可行,但我不禁想到有更好、更面向对象的方式来做这件事 - 有吗?
目前的实现如下:
每个案例都是需要发送到硬件的命令。 发送方法传递一个调用的方法和下一步的ID - 如果命令发送成功,将返回。
- 工具将向硬件发送启动会话命令。
- 硬件确认命令。
- 工具向硬件发送设置方向命令。
- 硬件将确认命令。
等等
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;
}
}
有没有更好的方法来做到这一点..?
我应该看看一个众所周知的设计模式吗?
【问题讨论】:
-
下一个 MessageID 是否正在发送到当前的
Send呼叫?
标签: oop design-patterns serial-port