首页 > 解决方案 > 如何通过 USB 发送一个 gcode 命令?

问题描述

我正在尝试编写一个简单的 python 脚本,将 gcode 命令发送到我的 wanhao D9 主板打印机,运行 Marlin。我在通过 USB 连接到打印机的树莓派上运行 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脚本时,我的打印机似乎重新启动(屏幕从主页变为打开的万号徽标并返回主页)

我期待任何人就我的代码和我可能做错的事情给予我任何帮助。

标签: pythonpyserialg-code3d-printing

解决方案


在我的命令解决了我的问题后添加了一个额外的睡眠时间。我现在还可以从打印机读取初始设置反馈。

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

import serial
import time

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

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

感谢这篇文章中的用户指导我正确的方向使用 pySerial 包的完整示例

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


推荐阅读