Después de cada línea de Gcode enviada desde el host al controlador, todos los Intérpretes de código G RepRap (normalmente) responden con una línea que comienza con "ok" y termina con una nueva línea. La mayoría de las veces son sólo esos 3 bytes -- "ok \n " -- pero ocasionalmente hay alguna información de depuración al final de la línea.
¿Has considerado tal vez a partir de uno de los intérpretes RepRap Gcode que se ejecutan en un Arduino, y ajustarlo para satisfacer sus necesidades, en lugar de empezar desde cero?
La mayoría de esos intérpretes RepRap funcionan exactamente como Michael Pruitt señaló tienen un buffer interno que puede contener varias líneas de Gcode. El intérprete retrasa el envío de la respuesta "ok" hasta que que haya suficiente espacio en ese búfer para la siguiente línea de Gcode. Cuando hay suficiente espacio en el búfer, el intérprete puede enviar inmediatamente "ok" en respuesta a varios códigos G1, almacenándolos todos en la memoria intermedia, enviando esos OKs largo antes de ejecutar cualquiera de esos comandos.
He oído que existen otros métodos para diga al software de goteo en el extremo anfitrión que la máquina está lista para la siguiente línea de Gcode: dnc4U menciona "XON/XOFF, RTS/CTS Haas Xmodem y Heidenhain Blockwise handshaking protocols".
Ojalá hubiera un único protocolo estándar, o alguna forma de detectar automáticamente qué protocolo estándar utiliza la máquina actual.