开源改变世界

在连接时发送问候消息而不是 init() #475

推推 grbl 3年前 (2022-10-17) 362次浏览 0个评论
关闭
atlaste 打开了这个问题 2020 年 7 月 13 日 · 6 条评论
关闭

在连接而不是 init() 时发送 hello 消息第475章

atlaste 打开了这个问题 on 13 Jul 2020 · 6 条评论

注释

在连接时发送问候消息而不是 init() #475
合作者

地图册 评论 2020 年 7 月 13 日

像 CNCJS 这样的一些客户端使用 hello 消息来确定连接是否存在。

使用 GRBL (Arduino Nano) 进行测试时,行为始终相同:与 COM 端口建立连接后,将发送欢迎消息。关闭连接并再次打开——然后再次发送欢迎消息。

使用 USB 连接 GRBL/ESP32 时,并不总是发送 hello 消息,结果是客户端无法工作。

我检查了代码,我的理论是 init() 代码发送“hello”消息,而不是在与 COM 端口建立连接时,它最终在发送缓冲区中。如果客户端快速连接,它会被刷新到客户端并工作——但这​​意味着后续调用和重新连接不起作用。(这正是我看到的行为)。

我没有解决这个问题,因为我不知道这是否是由于断开连接而导致的实际预期行为,您想要恢复而不是从头开始。无论哪种方式,我猜想在第一次连接时发送 hello 消息始终是所需的行为。

— 拔掉插头,快速连接 —

CNCjs 1.9.22 [Grbl]
连接到 COM7,波特率为 115200
VMDPV_1|1_VMDPV

[MSG:Grbl_ESP32 Ver 1.2a Date 20200613]
[MSG:Compiled with ESP32 SDK:v3.2.3-14-gd3e562907]
[MSG:Using machine:ESP32_V4]
[MSG:Axis count 3]
[MSG:RMT Steps]
[MSG:PWM 主轴输出:15, Enbl:2, Dir:-1, Freq:5000Hz, Res:13bits]
VMDPE_1:2:4062:0 :4062|4064_VMDPE
Grbl 1.2a [‘$’寻求帮助]

— 关闭,再次打开(任何后续尝试) —

CNCjs 1.9.22 [Grbl]
以 115200 的波特率连接到 COM7

在连接时发送问候消息而不是 init() #475 atlaste 添加了 漏洞 有些东西不工作标签 2020 年 7 月 13 日
在连接时发送问候消息而不是 init() #475

我是 CNCjs 和 Grbl_ESP32 项目的开发人员,因此,如果有足够的时间,我应该能够对此给出明确的答案和解决方案。我会深入挖掘。

在连接时发送问候消息而不是 init() #475
合作者作者

地图册 评论 2020 年 7 月 13 日

我是 CNCjs 和 Grbl_ESP32 项目的开发人员,因此,如果有足够的时间,我应该能够对此给出明确的答案和解决方案。我会深入挖掘。

我每次都能重现,并且多年来一直是专业的软件开发人员,所以如果您需要更多详细信息(有或没有代码位置),请给我留言。

1 条类似评论
在连接时发送问候消息而不是 init() #475

缺少以下信息,我无法复制您的设置:

  • 你在哪台电脑上运行 CNCjs
  • 你是如何安装 CNCjs 的?(电子应用程序、docker、直接 npm 安装等)
  • 你在什么风格的 ESP32 上运行 Grbl_ESP32?
  • 有什么样的USB串口芯片——CP2102、CH340等

在我的设置中,我有时会看到不一致的启动行为,但大多数情况下它都能正常工作。我已经将问题至少部分追溯到以下有趣的硬件行为。首先需要注意的是,几乎所有的ESP模块都将SoC的EN(高电平有效,低电平复位)线和IO0“下载模式”线连接到串口芯片的DTR和RTS线,使DTR高,RTS低将复位 CPU。

当程序连接到串行端口时,只要连接持续,EN 信号就会保持高电平。但是当没有连接的程序时,我会在 EN 上看到周期性的低脉冲。该模式是一个持续 3 us 的脉冲,然后是 750 ms 延迟和另一个脉冲。两脉冲模式每 5 秒重复一次,直到打开连接。此外,关闭连接时也会有脉冲,但打开连接时不会。

这表明 USB 驱动程序或堆栈中的某些东西正在定期探测,结果是 ESP32 芯片每 5 秒进行一次双重重置 – 至少在这个带有 CP2102 USB 串行芯片的 Windows 10 系统上。

我尝试绕过计算机和 CP2102 之间的 4 端口 USB 集线器;没变。

在连接时发送问候消息而不是 init() #475
合作者作者

地图册 评论 2020 年 7 月 15 日

你在哪台电脑上运行 CNCjs

Windows 10 专业版 x64。我运行它的电脑是戴尔 XPS 15、9550。

你是如何安装 CNCjs 的?(电子应用程序、docker、直接 npm 安装等)

Windows 安装程序(https://github.com/cncjs/cncjs/releases),桌面应用程序,x64,1.9.22。

你在什么风格的 ESP32 上运行 Grbl_ESP32?

ESP32 DevkitC rev 4 WROOM-32
准确地说是:AZDelivery ESP-32 Dev Kit C V4 WLAN WiFi 开发板。
数据表:https ://cdn.shopify.com/s/files/1/1509/1638/files/ESP_-_32_NodeMCU_Developmentboard_Datenblatt_a3bf98d8-6a53-4d26-8f1c-c61b1c82af39.pdf?76837 。

有什么样的USB串口芯片——CP2102、CH340等

CP2102 根​​据数据表。

首先需要注意的是,几乎所有的ESP模块都将SoC的EN(高电平有效,低电平复位)线和IO0“下载模式”线连接到串口芯片的DTR和RTS线,使DTR高,RTS低将复位 CPU。

重新连接时我没有看到重置发生。我相信这正是问题所在。当我重新连接时,我可以执行 $$ 之类的 GRBL 命令来获取当前设置。

我尝试绕过计算机和 CP2102 之间的 4 端口 USB 集线器;没变。

我没有使用集线器,它直接连接到PC。

[EN 信号] / 双复位

嗯,听起来可行。我无法使用示波器,但可以在 EN 和 GND 之间放置一个万用表,看看它是否变低。如果它仍然很高,则存在不同的问题。将不得不回复你。

在连接时发送问候消息而不是 init() #475
合作者

米奇布拉德利 评论 2020 年 7 月 16 日  

每个脉冲 EN 仅下降 3 微秒,并且脉冲相对于其宽度间隔很大,因此您不太可能用万用表清楚地看到它们。用我的万用表,我不时会说电压骤降,从 3.215 到 3.212 或类似的量级。你会看到什么,如果有的话,很大程度上取决于你的仪表。

在连接时发送问候消息而不是 init() #475
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

喜欢 (0)

您必须 登录 才能发表评论!