python - 如何通过 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脚本时,我的打印机似乎重新启动(屏幕从主页变为打开的万号徽标并返回主页)
我期待任何人就我的代码和我可能做错的事情给予我任何帮助。
解决方案
在我的命令解决了我的问题后添加了一个额外的睡眠时间。我现在还可以从打印机读取初始设置反馈。
没有这个我的最终代码是:
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 115200)
time.sleep(2)
ser.write("G28\r\n")
time.sleep(1)
ser.close()
感谢这篇文章中的用户指导我正确的方向使用 pySerial 包的完整示例
这段代码对我有用,我希望其他人将来也能发现它有用。
推荐阅读
- c++ - MergeSorting C++,运行排序后缺少一个元素
- macos - 如何安装 wxmaxima?
- typescript-compiler-api - Typescript compiler, how to navigate to the definition of a symbol?
- sql - 当我询问 PackageId 时,为什么会返回 MemberId?
- c - GCC 如何在 x64 中对齐结构?
- elasticsearch - 在 ECK 上丢失之前的主节点后,Elasticseach 集群不会选举新主节点
- c# - 在 Unity 中验证没有联合的 Cognito 用户
- algorithm - 从随机有序子集重建超集
- numpy - 正向与反向模式区分 - Pytorch
- c# - ClickOnce 安装程序无法安装 SQLLocalDb2012,因为 sqlcmdnutils.msi 自最初发布以来已更改