首页 > 解决方案 > 使用带有结果验证的命令

问题描述

我有一个类服务,它控制连接和数据交换 beetwen CNC shell 程序和 CNC 控制器。该类实现了一些方法,其中 GetResponse 方法。

...
public bool GetResponse(string query, out string result)
...

此方法将命令发送到 cnc 控制器。可能成功,也可能失败。方法返回操作成功。“字符串结果”返回错误代码,如果操作成功则返回空字符串。有时我需要发送命令 J+(慢跑)和 A(停止慢跑)。命令 J+ 执行机器的连续点动。命令 A 停止此慢跑。控制器通过以太网连接。有时 GetResponse 方法可能不会发送命令并返回 false。但如果它不发送命令 A(停止慢跑),那么我就有大问题了,机器不要留下来。

我可以在“while 循环”中执行 GetResponse 方法,但它不返回成功,但如果它不返回成功,我将遇到新问题 - 死锁我的程序(无限 while 循环)。

我也可以实现命令队列,当命令成功执行时,此方法将释放队列。但如果队列太满,命令将无法及时执行,A 命令(停止慢跑)执行得太晚。在这种情况下是否有最佳实践?

标签: c#algorithmcnc

解决方案


推荐阅读