I'm connecting to a printer that's using Marlin 1.0.3 dev firmware through the pyserial Python package.
I want to stream large gcode files into the printer and I guess that the buffer has a limited size. How do I know when the buffer is full, so I can wait until a command is processed to send a new one?
I've tried reading a big file, sending all the commands and checking for the printer responses in another thread. I didn't get an error or something that indicates that the buffer is full. I've also didn't found anything about this in the official docs.
It's my approach correct? Is there something I'm missing?
Some of the code:
def check_for_responses():
while(True):
response = printer_connection.serial.readline()
print(response)
async def stream_gcode():
await printer_connection.open_connection('COM7')
Thread(target=check_for_responses).start()
asyncio.sleep(2) # wait to initialize
file = open("test.gcode", 'r')
for line in file:
command= printer_connection.format_command(line)
printer_connection.serial.write(command.encode())
asyncio.new_event_loop().run_until_complete(stream_gcode())