Как регистрировать каждую строку G-кода, считанную с SD-карты на последовательный порт прошивки marlin

Я хотел бы записать каждую строку G-кода в последовательный порт по мере ее обработки.

Шаги для достижения:

  • принтер считывает файл с SD-карты
  • каждая строка, которую он читает, будет последовательно регистрироваться (этого я не могу понять).
  • затем эти строки можно прочитать через последовательный монитор на ноутбуке

Таким образом, к концу печати на моем ноутбуке у меня будет восстановленный файл G-кода (плюс любые другие журналы, которые выводит принтер).

Принтер работает с микропрограммой Prusa. В идеале я хотел бы добиться протоколирования от изменения прошивки, а не добавления дополнительного плагина/сервера (для понимания и экспериментов).

Что я пробовал

Я заглянул в код и нашел функции печати и примеры их использования в коде. Эта строка - "команда, которая должна быть исключена прямо сейчас", но я думаю, что это будет только одна команда, а не полная строка.

Cardreader или SdBaseFile-это то место, где я ожидал бы прочитать строку G-кода, чтобы добавить после нее оператор печати, но я не видел, где именно.

Будет ли это так же просто, как установить эту карту.logging bool в true?

Я думаю, что это довольно легко сделать, и что я просто слишком усложнил его, пытаясь понять прошивку. Любой совет был бы великолепен!

, 👍1


2 ответа


Лучший ответ:

0

В cmdqueue.h определен макрос CMDBUFFER_DEBUG (см. Здесь), который будет регистрировать много информации, связанной с обрабатываемыми командами. Возможно, больше информации, чем вам нужно...

Чтобы регистрировать только команды по мере их обработки (например, когда принтер перемещается, выдавливается и т. Д.), Вам нужна эта строка из marlin_main.cpp: SERIAL_ECHO(cmdbuffer+bufindr+CMDHDRSIZE);.

Вы можете скопировать это вне условия #ifdef CMDBUFFER_DEBUG и скомпилировать прошивку, после чего при подключении к последовательному порту каждая строка G-кода будет регистрироваться в журнале процессов принтера.


,

1

Если у вас есть необходимое оборудование, вы можете использовать OctoPrint для сбора необходимых данных. Обычно пользователи создают сервер OctoPrint на Raspberry Pi, но он также может быть легко установлен на компьютере с Windows или Linux. После того, как на месте, ведение журнала доступно для различных типов информации.

Из блога OctoPrint:

Журналы являются важнейшими инструментами анализа и отладки, поэтому обычно в ваших интересах предоставлять их при обращении за помощью или сообщении об ошибке, даже если они явно не запрашиваются:

octoprint.log: основной файл журнала приложений OctoPrint. Содержит общий журнал всего, что происходит во время работы OctoPrint. Включает в себя информацию о версии, установленные плагины и множество других точек данных.

Это всегда должно быть включено при сообщении об ошибке 47, чтобы обеспечить дальнейший анализ и воспроизведение. Это также очень хорошая идея, чтобы обеспечить это при обращении за помощью :

serial.log: Журнал всех сообщений, происходящих между OctoPi и принтер. Обычно отключается по соображениям производительности, включите его через Настройки > Последовательное соединение.

Либо это, либо, по крайней мере, вывод на вкладке терминала OctoPrint имеет решающее значение для анализа любых проблем связи или нарушений, наблюдаемых с вашим принтером, поэтому важно включать его при обсуждении таких проблем.

plugin_pluginmanager_console.log: журнал активности командной строки менеджера плагинов. Очень важно для анализа таких вопросов , как "Почему я не могу установить плагин $xyz?", поэтому если у вас есть такая проблема, лучше включить это.

plugin_softwareupdate_console.log: журнал активности командной строки программы обновления программного обеспечения. Очень важны для анализа такие вопросы , как "Обновление OctoPrint всегда терпит неудачу, почему?", поэтому если у вас есть такая проблема, лучше всего включить это.

Сторонние плагины также могут иметь здесь специальные лог-файлы. Если автор плагина просит вас предоставить специальный журнал, созданный их плагином для дальнейшего анализа, это должно быть место, где вы можете его найти.

Приведенный выше выбор взят из связанного сайта, который также включает встроенные ссылки для получения дополнительной информации о файлах журналов. Обратите внимание, что serial.log специально используется для сбора данных между OctoPrint и вашим принтером, хотя по умолчанию он отключен при установке.

,

Я стремился сделать это непосредственно из прошивки, так как в рамках этого проекта я хочу больше узнать о 3D-принтерах. Я считаю, что Octoprint управляет принтером через USB, чего я не хотел. Он также добавляет еще одну систему, которую мне нужно будет понять, прежде чем я смогу начать возиться и экспериментировать., @NickDGreg

@NickDGreg если вы не печатаете с серийного номера, серийный номер в большинстве случаев игнорируется., @Trish

@Триш, что ты имеешь в виду? Принтер печатает из файла на SD-карте, я подключаю свой ноутбук к принтеру через последовательный порт и могу обрабатывать его журналы в программе, запущенной на моем ноутбуке. Это всего лишь проект, которым я занимаюсь, так что в данном случае серийный номер не игнорируется, @NickDGreg

и ваша предлагаемая операция просто сбросит плату в середине печати: подключение чего-либо к последовательному порту запускает сброс платы, чтобы установить некоторые вещи, вы можете регистрировать *некоторые* вещи (температуры), но не все., @Trish

Тогда мне было неясно, я подключаюсь к последовательному порту перед началом печати, чтобы он не сбросился, @NickDGreg