注释
我的第一份工作现在用卡运行并发现了另一个潜在问题,FILE 和 SIZE 元素由逗号分隔,逗号是文件名中的合法字符,IMO 最好使用竖线而不是竖线。解析起来更简单。 |
我们还没有对退出功能做任何事情。 Grbl reset “mc_reset()” 是停止流作业或进程移动的正常方法。正确的顺序是 Feedhold 停止运动,然后是 Grbl Reset。这将清除当前移动和缓冲区,但不会影响机器位置或状态。理想情况下,退出 SD 工作也是类似的。 我们一直在谈论在代码中实施一些“规则”以避免危险,但现在是“信任用户”。我同意限制对主循环的访问可能是一个好的开始。 我很快就会使用重置方法做一些实验。 |
竖线用于分隔实时报告中的主要元素,因此在 Grbl 中有优先使用权。我应该在 master 分支上提出问题来解决它吗? 我知道 Grbl 保留的其他字符,我过滤掉包含它们的文件。向用户显示不可用的文件名是一种不好的做法——或者向报告中添加一个可选的第三个字段来表明这是一种更好的方法?只是大声思考… |
目前唯一受影响的是 WebUI。我们必须在更改之前对其进行协调。 |
我用这个更新了 mc_reset() …
它似乎工作得很好。如果您在从 SD 运行文件时暂停然后重置。它停止并重置,但没有位置丢失。它的工作原理与没有新命令的流式传输相同。 closeFile() 处理所有标志。 |
Web 用户界面不依赖于 SD $ 命令,而是直接使用 SD API,因此更改 $ 命令输出不应影响它 |
Web 用户界面是否也使用 SD API 来列出文件?如果是这样,是否意味着还没有使用 [FILE… 报告的发件人存在? IMO 为了不让用户感到困惑,具有无效名称的文件应该在 UI 中列出但被标记为这样,从而避免关于为什么它们不显示的问题。 有效文件: [FILE:/tesla.nc|SIZE:1023467] 无效文件: [文件:/tesla file.nc|大小:1023467|无效] 我现在的下一步是用 C# 编写一个 UI 控件来处理 SD 卡。 |
是的,这是我的意思 |
恕我直言,而不是显示无效文件根本不应该显示 |
添加 INVALID 标志意味着是否显示它们取决于 UI 设计者。我更愿意展示它们,也许用工具提示来解释为什么它们不可用。 |
在那种情况下,为什么不对所有文件保持相同的逻辑并显示 SD 上存在的所有文件? |
我可以更改为竖线。 我不喜欢 INVALID 标签。我认为这不仅仅意味着文件扩展名检查。即使具有匹配文件扩展名的文件也可能有无效的内部原因。我可以显示所有文件。 这允许发件人决定显示什么类型。如果发件人想要允许 .luc 文件,则可能有充分的理由。 顺便说一句:如果 gcode 在文件中无效,我将研究终止 SD 卡作业的好方法。 |
虽然一切似乎都正常,但 WebUI 并未显示错误消息。 我会尽快将代码推送到 WebUI 分支。 |
Web ui 不显示哪些错误消息? |
对不起@luc-github我错了。它似乎工作正常。更改已推送到 WebUI 分支 |
我目前正在为 Texas Instruments LaunchPad 开发驱动程序,并且最近设法将 grbl 作为 FreeRTOS 任务运行,并带有以太网流。我现在正在研究添加 SD 卡支持,并将使用您描述的协议扩展。
我认为使用 reset 来终止正在运行的作业有点苛刻,并且看到您建议 $FQ 以避免这种情况。我认为这意味着当从 SD 卡流式传输时,协议主循环必须读取(并分派处理)“正常”输入流,但这不是有点危险吗?通过发出最高位设置实时命令来处理终止不是更好吗?这是因为此类命令永远不会到达主循环,从而允许将主循环设置为忽略任何不是来自 SD 卡的输入。