注释
不知道是什么问题。 当 GCode 被解析时,空格被删除,字母被转换为大写。 解析在 gcode.cpp 中完成。 你能附上文件的其余部分或至少附上一些前面的 G0 或 G1 动作吗?对于圆弧,您需要位于正确的位置,否则 IJ 参数不起作用。 |
当然,这是 gcode 文件。 众所周知,无线流媒体不可靠。我可以在 Gcode 方面做些什么来提高性能(如删除空格)? |
我认为gcode很好。它在串行端口上运行良好。不需要删除空格,但可以加快传输和处理速度。 我在 BT 上运行了 gcode,也遇到了一些问题。我看起来有点随意。可能是缓冲区问题。我的 gcode 没有问题。我正在添加一些调试代码来吐出它有问题的行。我会看看是否有任何字符被删除或添加。 |
你用什么来生成gcode?我看到一些错误表明弧计算不正确。 Gcode 使用从/到格式。from 始终是当前位置,to 是要处理的 gcode 行。到机器的圆弧 (G2/G3) 使用指定半径到达特定位置。有时这在数学上是不可能的。Grbl 对其接受的内容有一个允许的容忍度。我看到这里产生的错误。 您是否有 SVG 或 DXF 格式的图稿,我们可以在其中尝试其他 CAM 程序? |
我也看过一样的东西,串口还好,BT就不太流畅了。非常混淆。相同的 gcode 文件在串行上运行良好,但在 BT 中抛出了大量错误, 我真的很想找到一种无线方式来做到这一点,这对我的项目来说是一个巨大的优势。稍后我也可以试试 telnet,但我想你提到过 BT 更可靠。 我在 Inkscape – gcode 工具上生成 gcode,我对扩展做了一些小改动,将小数位数减少到 3(有一个后处理器功能可以选择 4 个点,我将其编辑为 3 个)和停止评论的输出。我遇到了我认为与字符数有关的溢出错误。. |
我现在也在串行上看到错误。这是一个新问题。感觉是buffer的问题。可能存在缓冲区的填充和清空出现故障的情况。 我正在做。 |
如果您打开 REPORT_ECHO_LINE_RECEIVED,您可以看到 Grbl 如何看待这些行以及字符在哪里不合适。 |
好的,这很有用。我今晚会这样做。它可能会帮助我理解 Gcode GRBL 真正想要的是什么,这样我就可以调整 inkscape 输出。 |
……仍在努力。我回滚了 ESP32 核心,问题似乎已经消失了。 |
状态更新:昨天我花了很大一部分时间来调试这个问题。我知道流媒体过去工作正常,所以我想我最近的更新破坏了一些东西。我回滚了最近的更改,但没有任何帮助。 我决定拿出一台旧测试机,它运行良好。Grbl 构建日期是 11/05/2019。我从那个提交日期提取了代码,将它加载到一个新的 ESP32 上,但它没有工作。 然后我从那之前的某个日期开始提交 ESP32 核心。Grbl_ESP32 现在工作正常,包括最新的 Grbl_ESP32 master 分支。我已经运行了几十个文件,包括你可怕的兔子,它们都运行良好。 我不知道问题是什么时候出现的,但我现在运行的核心版本是3.2.3。我现在让 Grbl 在启动时打印核心版本。(很快就会推出) [消息:ESP32 核心版本:v3.2.3] |
很抱歉带来此类问题,感谢您为解决该问题所做的所有工作。 [E][WiFiUdp.cpp:219] parsePacket(): 无法接收数据: 9 这不会增加流式传输的开销吗,我应该尝试停止它吗,它会给流式传输稳定性带来任何改进吗? |
它不关心 G1 或 G01。Gcode 始终是一个字母后跟一个数字。它解析 01 和 1 相同。 我没有看到[E][WiFiUdp.cpp:219] parsePacket(): could not receive data: 9在我的设置中。你能在串行端口 [MSG:…] 东西上发送启动消息吗? |
当然, [MSG:Using cpu_map…CPU_MAP_PLOTTER] 这是有线串行连接 我在打开有线串行连接时看到它(我在尝试查看 BT 上发生的情况并寻找线索时偶然发现它)并且我可以确认它也显示在运行 CPU_MAP_TEST_DRIVE 的全新安装中蓝牙已启用 我在 platformio 上编译,我不记得更改了调试设置,所以我猜 – 没有 |
无线网… 你能给我同样的打印输出吗,但是来自串行端口。很多调试 [MSG: xxx] 的只到串口。这是因为它始终处于开启状态,并且可以在 Wifi 和/或 BT 运行之前捕获信息。 我无法重复这个问题,所以我需要尽可能多地了解您的设置。 蓝牙。 即使在更改 ESP SDK 修订版后,我仍然遇到一些蓝牙错误。原始 Grbl 在为实时命令解析后使用环形缓冲区来保存传入的串行数据。这个环形缓冲区实现分散在许多独立的函数中随着新客户端(BT、WiFi 等)的添加,这个环形缓冲区被更改为一个环形缓冲区数组。 这变得有点混乱,难以调试,而且不是很健壮。我决定清理它并使用 Grbl_ESP3 中已有的 InputBuffer 类。现在代码更清晰了,似乎已经完全解决了蓝牙问题。 更改在 DevT 分支上。这是一个重大的重写,我几天内不会将它合并到 master 中。我认为这与 WifiUdp 问题无关,因此可能会持续一段时间。 |
当我将调试级别设置为“错误”时,我可以获得这些消息。领先的“E”字符让我想到了这一点。 顺便说一句:我也通过 visual studio 代码使用 platform.io,但没有看到这些错误。也许我的调试级别与您的不同。 |
抱歉这个愚蠢的问题,我在哪里可以检查? |
我也不知道,但搜索了…… 添加
这将抑制问题,但仍然有一些不应该在后台运行的东西。我正在调查。 |
好的,我看到了在 ini 文件中添加一行的可能性,但有点困惑的是,在 Platform IO 中编译原始 ini 文件后您没有收到这些消息。我也在使用原始的 ini 文件,所以我认为我在 PlatformIO 中监督了一些菜单选择。这是一个很有教育意义的问题,感谢您的帮助。 |
我认为这已经完全解决了。@luc-github发现一些 WiFi 设备仍在使用蓝牙。更改在 master 分支 |
您使用的是什么版本的固件?
固件版本:1.1f
问题是否可重复?
是的
什么情况下会出现bug?
从 Windows 机器通过蓝牙串行流式传输 Gcode
我想从 Windows 机器通过蓝牙发送 Gcode,我注意到了一些事情。
我收到很多解析错误
有什么地方可以让我读到 ESP32GRBL 的 Gcode 解析要求是什么?根据我在 wiki 中找到的内容,我看不到代码中的错误所在,我不确定问题是 X 5 而不是 X5 还是其他问题。因为来自 Linux CNC 的文档有以下声明:
“一行代码的任何地方都允许使用空格和制表符,并且不会改变该行的含义,除了内部注释。这使得一些看起来很奇怪的输入合法。G0X + 行0. 12 34Y 7 相当于G0 x+0.1234 Y7, 例如”
我不明白的另一件事是,如果我在通过蓝牙连接时查看串行输出,就会出现关于
[E][WiFiUdp.cpp:219] parsePacket(): could not receive data: 9
的持续错误流阻止这个的方法?