注释
我的第一份工作现在从一张卡片上跑了出来,发现了另一个潜在的问题,文件和大小元素用逗号分隔,逗号是文件名中的合法字符,IMO 最好使用竖线而不是竖线。解析更简单。 |
我们还没有对退出功能做任何事情。 Grbl 重置“mc_reset()”是停止流式作业或正在进行的移动的正常方法。正确的顺序是 Feedhold 停止运动,然后 Grbl Reset。这将清除当前移动和缓冲区,但不影响机器位置或状态。理想情况下,辞去 SD 工作也是如此。 我们一直在谈论在代码中实现一些“规则”以避免危险,但现在是“信任用户”。我同意限制对主循环的访问可能是一个好的开始。 我很快就会使用重置方法做一些实验。 |
垂直条用于分隔实时报告中的主要元素,因此在 Grbl 中使用它有优先级。我应该在主分支上提出一个问题来解决它吗? 我知道 Grbl 保留的其他字符,我过滤掉了包含它们的文件。向用户显示不可用的文件名是不好的做法 – 或者可能在报告中添加一个可选的第三个字段表明这样是更好的方法?只是大声想… |
现在唯一受到影响的是 WebUI。我们必须在改变之前进行协调。 |
我用这个更新了 mc_reset() ……
它似乎工作得很好。如果您在从 SD 运行文件时进纸保持然后重置。它停止并重置,但没有丢失任何位置。它与没有新命令的流式传输相同。 closeFile() 处理所有标志。 |
Web ui 不依赖于 SD $ 命令,而是直接依赖 SD API,因此更改 $ 命令输出不应影响它 |
Web ui 是否也使用 SD API 来列出文件?如果是这样,这是否意味着尚不存在使用 [FILE… 报告的发件人? IMO 为不让用户感到困惑,应在 UI 中列出名称无效的文件,但应将其标记为此类,从而避免有关它们为什么不显示的问题。 有效文件: [文件:/tesla.nc|大小:1023467] 无效文件: [文件:/特斯拉文件.nc|大小:1023467|无效] 我现在的下一步是用 C# 编写一个 UI 控件来处理 SD 卡。 |
是的,这是我的意思 |
恕我直言,而不是显示 Invalid 该文件根本不应该显示 |
添加 INVALID 标志意味着是否显示它们的决定取决于 UI 设计人员。我更愿意展示它们,也许带有解释为什么它们不可用的工具提示。 |
在那种情况下,为什么不对所有文件保持相同的逻辑并替换 SD 上存在的所有文件? |
我可以更改为竖线。 我不喜欢 INVALID 标签。我认为这不仅仅意味着文件扩展名检查。即使具有匹配文件扩展名的文件也可能有内部原因无效。我可以显示所有文件。 这允许发件人决定要显示的类型。如果发件人想要允许 .luc 文件,这可能是有充分理由的。 顺便说一句:如果文件中的 gcode 无效,我将研究一种终止 SD 卡作业的好方法。 |
虽然一切似乎都正常,但 WebUI 并未显示错误消息。 我会尽快将代码推送到 WebUI 分支。 |
Web ui 不显示哪些错误消息? |
对不起@luc-github我错了。它似乎工作正常。更改已推送到 WebUI 分支 |
很酷^_^很好的补充 |
谢谢。 我昨天拿到了一个 ESP WROOM 模块,并开始为我的 Grbl 端口修改一个驱动程序。我目前在国外无法使用电机或示波器,所以除了 LED 和 UART 报告之外,我无法验证其他内容。另外,我使用 ESP-IDF 库和 Eclipse 作为 IDE(没有 Arduino 的东西)。 有什么让你感兴趣的是,我似乎能够使用 RMT 来生成步进脉冲,包括延迟(尚无法验证)和信号反转。所以也许并非不可能?你是否因为上师不高兴而放弃了? 开关去抖动似乎也对我有用,我正在使用 RTOS 定时器来延迟 – 从 ISR 启动定时器。 |
我能够让 RMT 毫无恐慌地工作,但我看到 o’scope 上的时间不一致。单步计时很好,但步骤之间的时间不太好。我还看到方向销的时间不一致。 我认为应该有办法让它发挥作用。我认为可能需要查看 API 以针对 Grbl 对其进行优化。 如果您有更多要分享的内容,请就此开始一个新问题。 |
我只在设置脉冲时使用API(在初始化和设置更改时),启动脉冲我直接写寄存器(位);
如果我可以使用示波器进行验证,我会这样做,但必须等到我可以访问 – 直到 11 月初。 |
特热约 评论 2018 年 10 月 7 日
我目前正在开发德州仪器 LaunchPad 的驱动程序,并且最近设法通过以太网流将 grbl 作为 FreeRTOS 任务运行。我现在正在考虑添加 SD 卡支持,并将使用您描述的协议扩展。
我认为使用 reset 来终止正在运行的作业有点苛刻,并看到您提出 $FQ 以避免这种情况。我认为这意味着当从 SD 卡流式传输时,协议主循环必须读取“正常”输入流(并分派处理),但这不是有点危险吗?通过发出最高位设置实时命令来处理终止不是更好吗?这是因为此类命令永远不会到达主循环,从而允许将主循环设置为忽略任何不是源自 SD 卡的输入。