如何通过 USB 发送一个 gcode 命令?

How to send one gcode command over USB?

我正在尝试编写一个简单的 python 脚本,用于向我的万豪 D9 主板打印机 运行ning Marlin 发送 gcode 命令。我正在 运行 在通过 USB 连接到打印机的 raspberry pi 上使用 python 脚本。

import serial

ser = serial.Serial("/dev/ttyUSB0", 115200)
ser.write("G28\n")

我已经阅读了 20 多个具有类似问题的论坛页面并尝试了他们的答案,例如将波特率更改为 250000 以及对写入函数参数进行以下更改:

ser.write("G28\r\n")
ser.write(b'G28\r\n')
ser.write(b'G28\n')
ser.write(b'G28')
ser.write("G28")

我已经尝试了所有这些组合,并且我还添加了:

time.sleep(5)

以及我文件顶部时间模块的相关导入语句。我在我的 ser 声明和我的 ser.write 函数调用之间添加了这行代码。

我也试过添加:

ser.close()

看看这是否会有所作为,但事实并非如此,因为我知道这无论如何都是最佳做法。

无论我使用此代码的什么组合,当我 运行 我的 python 脚本时,我的打印机似乎重新启动(屏幕从主页变为打开的 wanhao 徽标并返回到主页)

我期待任何人能就我的代码和我可能做错的地方提供帮助。

在我的命令修复我的问题后添加额外的睡眠时间。我现在还可以读回打印机的初始设置反馈。

没有这个我的最终代码是:

import serial
import time

ser = serial.Serial('/dev/ttyUSB0', 115200)

time.sleep(2)
ser.write("G28\r\n")
time.sleep(1)
ser.close()

感谢 post 中的用户为我指明了正确的方向 Full examples of using pySerial package

这段代码对我有用,我希望以后其他人也能发现它有用。