注释
@unicornswag: Grbl 有它自己的内部缓冲区,用于计划和排队运动命令。除非您看到从 Grbl 输出的启停动作,否则您正在观察该缓冲区。Grbl 只会在完成解析和排队 g 代码块时发回“ok”。它将等到缓冲区有空间。 如果您有好的 Linux CLI 界面,请分享。此外,我建议使用 stream.py 框架,而不是 simple_stream.py,因为它使用串行读取缓冲区作为额外的缓冲级别,因此 Grbl 不会出现任何缓冲区不足。 |
@unicornswag:否则,您可能会发现 USB 数据包和您可能使用的任何驱动程序存在一些问题。USB 不是实时的,很难直接控制。如果 Python 脚本与 serialPy 驱动程序一起工作,那么它可能与此有关。 |
https://github.com/unicornswag/Universal-CNC-Controller 好吧,就是这样。 我想要将流式脚本转换为 shell 的主要原因是它更适合在不能选择 python 的古老硬件上运行。例如,我有一些旧的 i386,它们只能从软盘启动 Linux,如果有适当的轻量级软件,它们可能会成为很棒的无头 cnc 控制器。 那么关于如何仅通过 bash 脚本最好地利用 grbl 缓冲区的任何想法? |
@unicornswag: 我不是 bash 脚本专家,所以我帮不了你。但是,与其重新发明轮子,不如购买 RaspberryPi 并将其用于无头控制器可能会更好。通用 G 代码发送器 (UGS) 已经支持它,可能还有其他 GUI。它也支持 Python。此外,我认为与您的 ole’ beast 386 的巨大电源相比,您很快就能通过 RPi 收回您的能源成本。更不用说最后一次强迫 ole’ beast 做一些有用的事情并用软盘保持它的可靠性所花费的时间。 |
好点,我实际上现在用运行 linux 的旧 iMac G3 控制我的 CNC,它非常有能力运行图形 G 代码发送器。然而,对我来说,很多旧 PC 都报废了,这主要是我的原则。 回到使用 stream.py 的想法,有没有人知道它的语法是什么以及它将接受什么参数,即文件路径、波特率等? |
因此,在构建了一个小型 Arduino-base (GRBL) CNC 铣床之后,我对缺乏良好的 Linux CLI 界面来将 G 代码文件流式传输到我的控制器固件感到有点失望。然而,simple_stream python 脚本似乎是一个很好的起点。
我对 python 不是很熟悉,但基本上这个脚本只是查找一个名为 grbl.gcode 的文件并将其逐行流式传输到您的设备。为了使这个脚本更易于使用,我编写了一些 shell 脚本作为包装器来流式传输文件并以更交互的方式运行机器。此设置效果很好。但是,我现在想将该 python 脚本重写为 bash 脚本,使其更加通用,以便它可以在任何 *nix 系统上运行,具体取决于 python 或 py-serial 模块。我写了一个 shell 脚本,它使用 echo 将我的 G 代码文件的每一行一个接一个地发送到我位于 /dev/ttyACM0 的机器。该脚本与 simple_stream python 脚本的作用基本相同,并且可以很好地运行机器和流式传输小型 gcode 文件(大约 20 行左右)。但是,流式传输大文件时,它开始正常流式传输,
所以我的问题是,这个问题的原因是什么,可以做些什么来解决它?我假设固件中有某种缓冲区正在被填充和溢出。但是,我不知道可以从 shell 脚本发出什么命令来清除行中下一个代码的缓冲区。据我了解,simple_stream python 脚本在流式传输下一行之前等待 GRBL 的响应。同样,我不知道是否可以或如何将此功能添加到 shell 脚本中,或者它是否可以解决我的问题。任何建议都会很棒!