开源改变世界!!

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39

推推 grbl 2年前 (2023-02-12) 400次浏览
关闭
cotepat 打开了这个问题 2021 年 6 月 1 日 · 17条评论
关闭

评论

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者

我在 GRBL 板上使用 CNCjs,直接与 USB 端口连接。一旦我使用以太网电缆连接控制器板,USB 连接就开始变得奇怪(它收到一些消息但不发送任何命令)。即使通过蓝牙或 telnet 连接也是如此!

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

GRBL ESP32 使用相同的 UART 与 USB 和串行 TFT 通信。
因此 USB 和串行 TFT 之间可能存在冲突。
在以前的版本中,即使在使用 BT 或 Telnet 时,TFT 也会保持串行打开。
我刚刚做了一个更改,以便在激活 BT 或 Telnet 时完全停用串行 TFT。
我没有测试解决方案。所以请让我知道它现在在新版本 vers.2.1.d 中是否正常

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者
科特帕特 评论了 2021 年 6 月 2 日  

不幸的是,它似乎没有任何改变……我也看到了代码的变化,但版本仍然是 2.1.c(不是 d)

也许我们可以尝试完全禁用 tft serial,看看它是否修复了它?

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

你能做以下测试吗(用昨天的版本)。
在 TFT 上选择蓝牙或远程登录通信。关闭并再次打开 TFT。
检查 TFT 上的通信是蓝牙还是 Telnet。
我预计当 TFT 在 BT 或 Telnet 中直接启动时,TFT ESP32 不会驱动 Tx 引脚,因此应避免与 GRBL 端的 USB 发生冲突。

在昨天的版本中,我在蓝牙或 telnet 激活时添加了一个 Serial End 功能,但也许这个标准的 End 功能在它已经被激活时不会释放 Serial Tx Pin 。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

是的,我确实尝试过。而且我刚才也重试了……还是一样。我确认连接是直接在 telnet 上启动的。由于 com.cpp 中的那一行, grbllink 的原始状态是否可能仍然是GRBL_LINK_SERIAL

uint8_t grblLink = GRBL_LINK_SERIAL ;

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

GRBL_LINK_SERIAL 是默认值。
尽管如此,通常固件会在初始化串行端口之前检索存储的值(优先)。
所以如果首选Telnet,固件应该(昨天的版本)让串口处于高阻状态。

固件仍然调用了 Espressif 提供的函数 uartDetach。我应该检查这个函数中发生了什么。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

供你参考。一旦我断开 TFT,我就重新获得了对 grbl usb 的正常访问权限……我想知道从一个按钮调用 Serial end 是否也可以工作……

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

我做了一些更多的改变。我把版本放在了github上。
你能试试吗。
现在,我在串行结束后强制 Tx 引脚进入输入模式。
我还在安装程序中删除了一些关于 Serial2 的代码(我昨天忘记了)。
我希望它会起作用。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

好的…现在情况发生了变化。它仍然不工作,但至少有一个重要发现:连接以太网电缆时可以让 USB 工作。我会解释:

  • 使用 telnet 或蓝牙开机时:USB 工作但 telnet 或蓝牙未连接(状态为??)
  • 切换到串行时,TFT 工作(在串行上)但 USB 停止(这是预期的)
  • 当切换回 telnet 或蓝牙时,TFT 状态变为“??” USB 不工作。
当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

它很奇怪。我不明白发生了什么。
我将不得不用一些调试代码来测试它。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

好的。我又做了一些实验……一些非常奇怪的行为!就像有时蓝牙或 telnet 确实连接并且有些东西工作(例如主页按钮)但是“移动”箭头完全使 TFT 崩溃(一切都挂起,我需要重置 TFT)。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

您的 telnet 连接是否良好?
会不会是通讯不好,丢失了一些数据。
当 TFT 向 GRBL 发送一行数据时,它会等待“OK”消息,然后再发送下一行。
来自 TFT 的 Move 发送的线路比 Home 多。
通常当 TFT 正在等待 OK 并且没有收到它时,它会等待一段时间(我想是 2 分钟,但也许我这次增加了时间)。所以也许在重置 TFT 之前等待 2 分钟以上。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

不。只要我恢复到另一个版本,它就会正常工作。我还用蓝牙测试了完全相同的结果……

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

我只是在 github(6 月 6 日的版本)上做了一些更改。
在我的测试系统上,我可以通过 telnet 获得空闲状态。
不过,并非每次都如此。然后我选择另一个按钮(例如串行),然后再次 Telnet。
我不知道为什么它从第一次就不起作用。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

凉爽的。我会试试的!

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

我终于有时间尝试了……这是我的发现:

  1. 正如您所说,telnet 现在可以在切换到有线并再次返回到 telnet 时工作。它从一开始就不起作用
  2. 箭头(移动按钮)现在可以在 telnet 上正常工作
  3. 连接以太网电缆后,USB 仍处于禁用状态

所以不幸的是它仍然无法正常工作。

我有一个想法(这将是一个解决方法,临时解决方案)……在控制器的连接菜单中,我们可以放置一个“断开连接”按钮吗?它会用软件断开 TFT,然后我可以通过 GRBL USB 端口使用计算机。然后,当我想使用它时,我可以重新激活与 TFT 的连接。至少,我不必在物理上断开 TFT 的连接……我认为这会起作用,因为似乎我唯一一次让 USB 与 TFT 同时工作是用“??” 地位。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
所有者

当 Telnet/BT 激活时,我已经尝试断开串行。
问题是 Serial.end() arduino 函数中存在错误(至少在 1.0.4 版中是这样)。
这个问题有一个修复程序,我试图在我的代码中应用它。
我测试了它,它似乎有效。
我把版本放在了 Github 上。

当控制器 ESP32 和 GRBL ESP32 之间连接以太网电缆时,USB 停止在 GRBL 上工作 #39
贡献者作者

是的,它确实有效!唯一的问题是您仍然必须切换到 USB(串行)并返回到 telnet。它从一开始就不起作用。这没什么大不了的……非常感谢你的工作。