您将如何设计运行机器的应用程序?

时间:2009-06-15 19:59:23

标签: c# .net architecture

你问什么类型的机器?一种可以测量镜片楔形和圆度的机器。

我已经为这台机器编写了软件并且它正在生产中,但它很脆弱,并且当它们没有按照正确的顺序执行操作时容易出现锁定。我正在努力想出最好的方法来构建它,使其稳定和可维护。

这是快速的二十秒跑。有两种模式,设置和运行。在设置模式下,操作员可以使用控制面板上的6个不同的瞬时拨动开关之一手动移动6个不同的电机中的任何一个。他们将所有内容都归入,然后将其转为运行模式,加载镜头,然后按go。机器将自动引入三个指示灯,找到镜头的边缘,然后旋转主轴并在楔块周围进行测量。

我结束了非常糟糕的非设计,有一个类引发了一个事件,说明当一个开关改变状态,切换它的时候,以及它的新状态是什么。然后我做了很多ifs和东西来确定机器可以做什么。你可以想象,这非常糟糕。

有没有人对如何构建这个有什么好的想法?我有自己的一些,但我希望听到那些对这种类型的应用程序开发更有经验的人。

2 个答案:

答案 0 :(得分:2)

你需要建立一个有限状态机,这是建模问题的最好方法,如你所拥有的那样:

http://en.wikipedia.org/wiki/Finite_state_machine

答案 1 :(得分:0)

在操作员启动机器之前,我甚至不担心弄清楚系统可以做什么。

事件监听器很好,但只需让它们用当前信息更新交换机的内存模型。确保捕获所有事件,IN ORDER ....如果有办法查询开关的当前状态,那就更好了 - 忽略所有切换,直到操作员启动机器,然后查询。

无论哪种方式,都要根据交换机的内存模型确定启动时的运行模式。制作内存模型的副本以便进行操作,以避免在操作期间发生变化。