评论
|
关闭连接按钮一开始的设计理念,就是无论你操作什么设备,都强制关闭串口连接。如果要关闭套接字连接,只需关闭浏览器窗口即可。 我确实注意到这可能是一个用户体验缺陷,可能会给用户带来意想不到的结果,因为它没有显示警告消息来通知串行连接将被终止。我目前正在feature/redux 分支上进行新的 UX 增强。现在点击[关闭]按钮将弹出一个模态窗口。为了解决用户体验问题,我会在弹出模式的页脚上给出两个按钮,一个是“终止串行连接”,另一个是“关闭套接字连接”,这样用户会得到一个明确的消息要执行的操作。 |
|
现有行为令人困惑,因为打开和关闭的工作方式不同,因此 UI 行为不一致。对于Open,两个浏览器的UI视图是独立的,而对于Close,它们是同步的。我想不出同时关闭的好用例。
也许混合独立打开、耦合关闭模型的目的是将控制器重置为关闭的副作用,但最好通过显式控制器重置来完成。关闭串行连接恰好在某些控制器上起到重置作用,但并非在所有情况下都有效。 |
|
我喜欢你的第一个想法,使“打开”和“关闭”独立,我将尝试重构代码以实现你提到的预期行为。但是如果最后一个端点试图终止连接,则弹出警告消息是非常必要的,尤其是当此操作可能终止数据传输时。以下是处理这种情况的一些建议: 建议 1:如果它是最后一个端点,则显示一条警告消息。 if (is_last_endpoint) {
show_warning_message();
}
建议 2:如果它是最后一个端点并且加载了 G 代码程序,则显示一条警告消息。这是一种不那么烦人的方式。我不选择工作流状态的原因是它与机器运动不太同步。 if (is_last_endpoint && is_gcode_loaded) {
show_warning_message();
}
你对提案有什么建议? |
|
将 cncjs 作为第一个启动的应用程序作为主应用程序,将其他启动的应用程序作为仅具有监控功能的从属应用程序,这不是更简单吗? |
那将是非常有限制的。我经常同时使用主 UI 和 cncjs-shopfloor-tablet UI 来控制同一台机器。前者具有后者所缺乏的一些功能,而后者由于其大按钮而用于简单的作业控制要安全得多。制作仅监视器之一会破坏该用例。 |
|
回覆@cheton的建议,我更喜欢第二个版本。 我真的需要回去处理代码以与机器状态同步,以便可以使用工作流状态。 几个月前我被打扰时的工作状态如下。
同步操作在 TinyG 上运行良好,几乎可以在 GRBL 上运行。GRBL 的问题集中在 GCode 错误上,这可能不会停止机器。由于其糟糕的串行协议,Marlin 是一个更大的问题。可能有必要采用“尽力而为”策略。 |


CNCjs 1.9.20 安装在 Raspberry Pi,Node v8.5.0 上,使用“npm install”(旧版本也存在该问题)。
在浏览器中启动 CNCjs UI 的两个实例。浏览器可以在一台机器上,也可以在不同的机器上;没关系。
在浏览器 1 上打开与控制器的连接,然后在浏览器 2 上打开与同一控制器的连接。两个浏览器都可以控制机器并按预期查看其状态。
现在关闭一个浏览器上的连接。连接在该浏览器以及连接到该控制器的所有其他浏览器上关闭。
我认为这是错误的行为。如果您在笔记本电脑上运行 CNCjs,然后在您的手机上打开一个连接以从其他地方监控它,您不希望在您关闭手机连接时笔记本电脑连接也关闭。
我愿意为此尝试修复,但我对修复的位置有点困惑,因为有太多地方处理串行端口打开和关闭事件。如果你能给我指出正确的方向,我就能完成这项工作。