如何通过 pySerial 发送多个 g 代码命令而没有时间延迟

发布于 2025-01-09 11:17:37 字数 669 浏览 0 评论 0原文

我有一个 python 脚本,可以创建与我的 Arduino-Mega (ramps1.4) 的串行连接。我正在使用 pyserial 库,通过 COM 发送 G 代码命令。 “Marlin 2.0x”读取输入并作用于任何 G 代码。

到目前为止一切正常。我可以通过 serial.write() 编写任何 G 代码,并且 Marlin 能够理解它。但不幸的是,如果我想执行多个命令,我必须添加时间延迟。 有没有一种好的方法可以避免这种情况?

以下是两次挤压 1mm 长丝的示例代码。

import serial
import time  

ser1 = serial.Serial('COM3', 250000)
time.sleep(1)
ser1.write(('G92 E1\n').encode())
time.sleep(1)
ser1.write(('G92 E1\n').encode())

理想情况下,它看起来像这样没有延迟:

import serial
import time  

ser1 = serial.Serial('COM3', 250000)
ser1.write(('G92 E1\n').encode())
ser1.write(('G92 E1\n').encode())

但是命令会被跳过。

I have a python script that creates a serial connection to my Arduino-Mega (ramps1. 4). I am using the pyserial library, with which I send G-Code commands via the COM. There "Marlin 2.0x" reads the input and acts on any G-Code.

So far everything works. I can write any G-Code via serial.write() and Marlin understands it. But unfortunately I had to add a time delay if I want to act on multiple commands.
Is there a nice way of circumventing that?

Here is an example code of Extruding 1mm of Filament twice.

import serial
import time  

ser1 = serial.Serial('COM3', 250000)
time.sleep(1)
ser1.write(('G92 E1\n').encode())
time.sleep(1)
ser1.write(('G92 E1\n').encode())

Ideally it'd look like this without the delays:

import serial
import time  

ser1 = serial.Serial('COM3', 250000)
ser1.write(('G92 E1\n').encode())
ser1.write(('G92 E1\n').encode())

But then commands get skipped.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文