你问什么类型的机器?一种可以测量镜片楔形和圆度的机器。
我已经为这台机器编写了软件并且它正在生产中,但它很脆弱,并且当它们没有按照正确的顺序执行操作时容易出现锁定。我正在努力想出最好的方法来构建它,使其稳定和可维护。
这是快速的二十秒跑。有两种模式,设置和运行。在设置模式下,操作员可以使用控制面板上的6个不同的瞬时拨动开关之一手动移动6个不同的电机中的任何一个。他们将所有内容都归入,然后将其转为运行模式,加载镜头,然后按go。机器将自动引入三个指示灯,找到镜头的边缘,然后旋转主轴并在楔块周围进行测量。
我结束了非常糟糕的非设计,有一个类引发了一个事件,说明当一个开关改变状态,切换它的时候,以及它的新状态是什么。然后我做了很多ifs和东西来确定机器可以做什么。你可以想象,这非常糟糕。
有没有人对如何构建这个有什么好的想法?我有自己的一些,但我希望听到那些对这种类型的应用程序开发更有经验的人。
答案 0 :(得分:2)
你需要建立一个有限状态机,这是建模问题的最好方法,如你所拥有的那样:
答案 1 :(得分:0)
在操作员启动机器之前,我甚至不担心弄清楚系统可以做什么。
事件监听器很好,但只需让它们用当前信息更新交换机的内存模型。确保捕获所有事件,IN ORDER ....如果有办法查询开关的当前状态,那就更好了 - 忽略所有切换,直到操作员启动机器,然后查询。
无论哪种方式,都要根据交换机的内存模型确定启动时的运行模式。制作内存模型的副本以便进行操作,以避免在操作期间发生变化。