开源改变世界

从 Windows 通过蓝牙流式传输 #325

推推 grbl 3年前 (2023-01-30) 213次浏览
关闭
ithinkido 打开了这个问题 2020 年 2 月 3 日 · 22条评论
关闭

从 Windows 通过蓝牙流式传输#325

ithinkido 打开了这个问题 2020 年 2 月 3 日 · 22条评论

注释

从 Windows 通过蓝牙流式传输 #325

您使用的是什么版本的固件?
固件版本:1.1f

问题是否可重复?
是的

什么情况下会出现bug?
从 Windows 机器通过蓝牙串行流式传输 Gcode

我想从 Windows 机器通过蓝牙发送 Gcode,我注意到了一些事情。
我收到很多解析错误

G03 X 313.323 Y -15.311 Z -1.000 I 0.881 J 4.298(行=41)
错误:1(预期的命令字母)
G03 X 314.926 Y -15.263 Z -1.000 I -0.093 J 29.853(行=42)
错误:33(无效) gcode ID:33)
等等….

有什么地方可以让我读到 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
的持续错误流阻止这个的方法?

从 Windows 通过蓝牙流式传输 #325 ithinkido 添加了 漏洞 有些东西不工作标签 2020 年 2 月 3 日
从 Windows 通过蓝牙流式传输 #325
所有者

不知道是什么问题。

当 GCode 被解析时,空格被删除,字母被转换为大写。

解析在 gcode.cpp 中完成。

你能附上文件的其余部分或至少附上一些前面的 G0 或 G1 动作吗?对于圆弧,您需要位于正确的位置,否则 IJ 参数不起作用。

从 Windows 通过蓝牙流式传输 #325
作者
想念 评论了 2020 年 2 月 3 日  

当然,这是 gcode 文件。

众所周知,无线流媒体不可靠。我可以在 Gcode 方面做些什么来提高性能(如删除空格)?

复活节.nc.txt

从 Windows 通过蓝牙流式传输 #325
所有者

我认为gcode很好。它在串行端口上运行良好。不需要删除空格,但可以加快传输和处理速度。

我在 BT 上运行了 gcode,也遇到了一些问题。我看起来有点随意。可能是缓冲区问题。我的 gcode 没有问题。我正在添加一些调试代码来吐出它有问题的行。我会看看是否有任何字符被删除或添加。

从 Windows 通过蓝牙流式传输 #325
所有者

你用什么来生成gcode?我看到一些错误表明弧计算不正确。

Gcode 使用从/到格式。from 始终是当前位置,to 是要处理的 gcode 行。到机器的圆弧 (G2/G3) 使用指定半径到达特定位置。有时这在数学上是不可能的。Grbl 对其接受的内容有一个允许的容忍度。我看到这里产生的错误。

您是否有 SVG 或 DXF 格式的图稿,我们可以在其中尝试其他 CAM 程序?

从 Windows 通过蓝牙流式传输 #325
作者
想念 评论了 2020 年 2 月 4 日  

我也看过一样的东西,串口还好,BT就不太流畅了。非常混淆。相同的 gcode 文件在串行上运行良好,但在 BT 中抛出了大量错误,

我真的很想找到一种无线方式来做到这一点,这对我的项目来说是一个巨大的优势。稍后我也可以试试 telnet,但我想你提到过 BT 更可靠。

我在 Inkscape – gcode 工具上生成 gcode,我对扩展做了一些小改动,将小数位数减少到 3(有一个后处理器功能可以选择 4 个点,我将其编辑为 3 个)和停止评论的输出。我遇到了我认为与字符数有关的溢出错误。.
我也以与您相同的想法将 GRBL 中的弧度公差增加到 0.05,也许弧度没有很好地定义。
我选择了 inkscape 扩展,因为它是我发现的为数不多的输出弧线(G02 G03)的扩展之一,我认为帮助减少要发送的代码行数是个好主意。
这是 SVG
Bordered_Bunnies.zip

从 Windows 通过蓝牙流式传输 #325
所有者

我现在也在串行上看到错误。这是一个新问题。感觉是buffer的问题。可能存在缓冲区的填充和清空出现故障的情况。

我正在做。

从 Windows 通过蓝牙流式传输 #325
所有者

如果您打开 REPORT_ECHO_LINE_RECEIVED,您可以看到 Grbl 如何看待这些行以及字符在哪里不合适。

从 Windows 通过蓝牙流式传输 #325
作者

如果您打开 REPORT_ECHO_LINE_RECEIVED,您可以看到 Grbl 如何看待这些行以及字符在哪里不合适。

好的,这很有用。我今晚会这样做。它可能会帮助我理解 Gcode GRBL 真正想要的是什么,这样我就可以调整 inkscape 输出。

从 Windows 通过蓝牙流式传输 #325
所有者

……仍在努力。我回滚了 ESP32 核心,问题似乎已经消失了。

从 Windows 通过蓝牙流式传输 #325
所有者

状态更新:昨天我花了很大一部分时间来调试这个问题。我知道流媒体过去工作正常,所以我想我最近的更新破坏了一些东西。我回滚了最近的更改,但没有任何帮助。

我决定拿出一台旧测试机,它运行良好。Grbl 构建日期是 11/05/2019。我从那个提交日期提取了代码,将它加载到一个新的 ESP32 上,但它没有工作。

然后我从那之前的某个日期开始提交 ESP32 核心。Grbl_ESP32 现在工作正常,包括最新的 Grbl_ESP32 master 分支。我已经运行了几十个文件,包括你可怕的兔子,它们都运行良好。

我不知道问题是什么时候出现的,但我现在运行的核心版本是3.2.3。我现在让 Grbl 在启动时打印核心版本。(很快就会推出)

[消息:ESP32 核心版本:v3.2.3]

从 Windows 通过蓝牙流式传输 #325
作者

很抱歉带来此类问题,感谢您为解决该问题所做的所有工作。
我可以再问两个问题吗,我没看错吗,GRBL 正在寻找 G1(不是 G01)并且在线的任何地方都没有空格,这将是理想的,例如 G1X2Y3Z4F5?
BT 处于活动状态时不断运行的错误,

[E][WiFiUdp.cpp:219] parsePacket(): 无法接收数据: 9

这不会增加流式传输的开销吗,我应该尝试停止它吗,它会给流式传输稳定性带来任何改进吗?

从 Windows 通过蓝牙流式传输 #325
所有者

它不关心 G1 或 G01。Gcode 始终是一个字母后跟一个数字。它解析 01 和 1 相同。

我没有看到[E][WiFiUdp.cpp:219] parsePacket(): could not receive data: 9在我的设置中。你能在串行端口 [MSG:…] 东西上发送启动消息吗?

从 Windows 通过蓝牙流式传输 #325
所有者

你这里的设置是什么…

从 Windows 通过蓝牙流式传输 #325

从 Windows 通过蓝牙流式传输 #325
作者
想念 评论了 2020 年 2 月 5 日  

当然,
这是我通过 BT 连接并从 Gcode 发件人进行重置时看到的

[MSG:Using cpu_map…CPU_MAP_PLOTTER]
Grbl 1.1f [‘$’求助]
client> $$
$0=3(步进脉冲时间,微秒)
$1=250(步进空闲延迟,毫秒)
$2=0(步进脉冲反转,掩码)
$3=0(步进方向反转,掩码)
$4=0(反转步进使能引脚,布尔值)
$5=1(反转限制引脚,布尔值)
$6=0(反转探针引脚,布尔值)
$10=0(状态报告选项,掩码)
$11=0.010(连接偏差,毫米)
$12=0.002(弧度公差,毫米)
$13=0(以英寸为单位报告,布尔值)
$20=0(启用软限制,布尔值)
$21=0(启用硬限制, boolean)
$22=0 (Homing cycle enable, boolean)
$23=3 (Homing direction invert, mask)
$24=20000.000(归位定位进给率,毫米/分钟)
$25=10000.000(归位搜索寻道率,毫米/分钟)
$26=250(归位开关去抖延迟,毫秒)
$27=1.000(归位开关拉离距离,毫米)
$30=1000.000(最大主轴速度,RPM)
$31=0.000(最小主轴速度,RPM)
$32=0(激光模式启用,布尔值)
$100=20.000(X 轴行程分辨率,步长
/mm)$101=20.000(Y -轴行程分辨率,步/毫米)
$102=100.000(Z 轴行程分辨率,步/毫米)
$110=20000.000(X 轴最大速率,毫米/分钟)
$111=20000.000(Y 轴最大速率,毫米/分钟)
$112=2000.000 (Z轴最大速率, mm/min)
$120=2000.000 (X轴加速度, mm/sec^2)
$121=2000.000(Y 轴加速度,毫米/秒^2)
$122=1000.000(Z 轴加速度,毫米/秒^2)
$130=300.000(X 轴最大行程,毫米)
$131=300.000(Y 轴最大行程,毫米)
$132=100.000(Z轴最大行程,毫米)
ok

这是有线串行连接

从 Windows 通过蓝牙流式传输 #325

我在打开有线串行连接时看到它(我在尝试查看 BT 上发生的情况并寻找线索时偶然发现它)并且我可以确认它也显示在运行 CPU_MAP_TEST_DRIVE 的全新安装中蓝牙已启用

我在 platformio 上编译,我不记得更改了调试设置,所以我猜 – 没有

从 Windows 通过蓝牙流式传输 #325
所有者

无线网…

你能给我同样的打印输出吗,但是来自串行端口。很多调试 [MSG: xxx] 的只到串口。这是因为它始终处于开启状态,并且可以在 Wifi 和/或 BT 运行之前捕获信息。

我无法重复这个问题,所以我需要尽可能多地了解您的设置。

蓝牙。

即使在更改 ESP SDK 修订版后,我仍然遇到一些蓝牙错误。原始 Grbl 在为实时命令解析后使用环形缓冲区来保存传入的串行数据。这个环形缓冲区实现分散在许多独立的函数中随着新客户端(BT、WiFi 等)的添加,这个环形缓冲区被更改为一个环形缓冲区数组。

这变得有点混乱,难以调试,而且不是很健壮。我决定清理它并使用 Grbl_ESP3 中已有的 InputBuffer 类。现在代码更清晰了,似乎已经完全解决了蓝牙问题。

更改在 DevT 分支上。这是一个重大的重写,我几天内不会将它合并到 master 中。我认为这与 WifiUdp 问题无关,因此可能会持续一段时间。

从 Windows 通过蓝牙流式传输 #325
作者
想念 评论了 2020 年 2 月 6 日  

在串行上,它立即开始进入 WifiUdp 问题

从 Windows 通过蓝牙流式传输 #325

我将尝试全新安装 visual studio/platformIO。

一旦我对当前的设置做了更多的挖掘,我将尝试新的分支,我很好奇问题隐藏在哪里。

(编辑)

我有一个快速的想法尝试在 Arduino IDE 上编译并且串行错误消失了

从 Windows 通过蓝牙流式传输 #325

我将开始深入研究我的 PlatformIO。

从 Windows 通过蓝牙流式传输 #325
所有者

当我将调试级别设置为“错误”时,我可以获得这些消息。领先的“E”字符让我想到了这一点。

顺便说一句:我也通过 visual studio 代码使用 platform.io,但没有看到这些错误。也许我的调试级别与您的不同。

从 Windows 通过蓝牙流式传输 #325
作者

抱歉这个愚蠢的问题,我在哪里可以检查?

从 Windows 通过蓝牙流式传输 #325
所有者

我也不知道,但搜索了……

添加build_flags = -DCORE_DEBUG_LEVEL=0到您的 platformio.ini 文件。我的这一部分现在看起来像这样。

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
upload_speed = 512000
board_build.partitions = min_spiffs.csv
monitor_speed = 115200
build_flags = -DCORE_DEBUG_LEVEL=0

这将抑制问题,但仍然有一些不应该在后台运行的东西。我正在调查。

从 Windows 通过蓝牙流式传输 #325
作者

好的,我看到了在 ini 文件中添加一行的可能性,但有点困惑的是,在 Platform IO 中编译原始 ini 文件后您没有收到这些消息。我也在使用原始的 ini 文件,所以我认为我在 PlatformIO 中监督了一些菜单选择。这是一个很有教育意义的问题,感谢您的帮助。

从 Windows 通过蓝牙流式传输 #325
所有者

我认为这已经完全解决了。@luc-github发现一些 WiFi 设备仍在使用蓝牙。更改在 master 分支