Отправка нескольких команд на принтер без перегрузки его буфера команд
Я пишу код python для 3D-принтера (Marlin). Я пытаюсь выполнить движение, которое может состоять из нескольких команд (G0
). К сожалению, отправка всех команд сразу, кажется, не работает. Насколько я понимаю, это связано с тем, что буфер команд принтера для необработанных команд довольно мал и перегружается при отправке такого количества команд одновременно.
Есть ли способ узнать, сколько буфера принтера свободно, чтобы я знал, когда отправить следующие 1, 2, 5 и т.д. Команды на принтер? Я не могу отправить следующие команды, как только буфер полностью свободен, так как это остановит движение, и мне нужно, чтобы он был текучим весь путь.
Два дополнительных вопроса:
- Кто-нибудь из вас знает, как принтер обрабатывает файл G-кода, который он получает на SD-карте, чтобы он выполнял его полностью плавно, без перегрузки?
- Говорит ли
мне сообщение "ОК", полученное от принтера, что все команды были выполнены или что в буфере команд есть хотя бы одно свободное пространство?
@Alathen, 👍0
Обсуждение0
Смотрите также:
- В чем разница между M420 S и M420 S1?
- M502 сбросит все настраиваемые настройки к их "заводским настройкам по умолчанию", какие это настройки?
- Как установить размер буфера G-кода на Marlin?
- Что такое команда M73 Q17 S43 G-code?
- Решение Cura заменить углы->дуги для увеличения угловой скорости?
- Marlin - замедление скорости печати
- Как установить смещение Z?
- Что определяет скорость, с которой двигатель втягивается, и как ее можно изменить?
Я думаю, что о чем-то подобном спрашивали раньше, см., например, этот ответ. Это может быть дублирующий вопрос. Я думаю, что это ответ на ваши вопросы. Что касается части вопроса о чтении SD, вы можете посмотреть это в источниках Marlin., @0scar
Спасибо за ссылку. Я полностью пропустил подраздел "Буферизация" на странице RepRap. Ранее у меня была проблема с отправкой нескольких "M105" во время движения, и я мог ошибочно предположить, что это произошло из-за перегрузки буфера. Я не понимал, что сигналы обрабатываются по-разному и только некоторые из них буферизуются. Я проверю это поведение со своим принтером завтра, может быть, я зря беспокоился :), @Alathen
ОК означает, что в "буфере"есть место. Всякий раз, когда вы получаете сообщение "ОК", отправьте команду. Кроме того, Марлин никогда не будет выполнять "плавный" набор команд. Между ними всегда будет пауза. Идея в том, что все будет достаточно гладко., @user77232