Могу ли я использовать Web Serial API для отправки G-кода на Ender 5 Pro?
Недавно я начал экспериментировать с отправкой G-кода на свой принтер через USB-кабель. Я загрузил Printrun, и он отлично работает! Однако я хочу иметь возможность делать это из своего веб-браузера, поскольку приложение, которое я разрабатываю, основано на веб-технологиях.
Я нашел это приложение Chrome под названием chrome-gcode-sender, которое делает это, но, к сожалению, оно больше не работает, поскольку Google, к сожалению, прекратил поддержку всех приложений Chrome в июне 2022 года.
Создатель этого приложения предположил на GitHub, что то же самое можно сделать с помощью Web Serial API. Я пытаюсь заставить это работать уже почти два дня, но без особого успеха. Я нашел несколько руководств в сети о том, как использовать Web Serial API, но ничего для этого конкретного случая использования. Вот пример кода, который я разработал на данный момент, просто простой HTML-документ с некоторым количеством ванильного JavaScript:
<html>
<head>
<title>Web Serial API Demo</title>
</head>
<body>
<button id="connect">Connect</button>
<script>
var device
let button = document.getElementById("connect")
document.addEventListener("DOMContentLoaded", event => {
button.addEventListener("click", async() => {
try {
device = await navigator.serial.requestPort()
await device.open({baudRate: 9600})
console.log("Opened: ", device)
console.log("Info: ", device.getInfo())
const encoder = new TextEncoder()
const writer = device.writable.getWriter()
await writer.write(encoder.encode("G28"))
writer.releaseLock()
await device.close()
} catch (error) {
console.log(error)
}
})
})
</script>
</body>
</html>
Когда я нажимаю кнопку «Подключиться» и выбираю нужное мне устройство, оно, кажется, подключается нормально. Однако, когда я пытаюсь отправить простой G-код, такой как G28
(autohome), принтер ничего не делает. Если у кого-то есть идеи, как заставить это работать, пожалуйста, дайте мне знать! Я также на 100 % открыт для альтернативного подхода! Основная идея — просто иметь возможность отправлять G-код из браузера на принтер.
Примечания:
- Я также пробовал экспериментировать с Web USB API, но и здесь безуспешно.
@Jacob Philpott, 👍4
1 ответ
Лучший ответ:
Наконец-то, понял! Я был очень близок, но для того, чтобы пример заработал, нужно было внести два изменения в код выше.
Необходимо изменить
baudRate
на115200
. Это значение может различаться от принтера к принтеру, но115200
довольно распространено и, таким образом, является хорошим значением по умолчанию. Если вы обнаружите, что это не работает, попробуйте найти рекомендуемое значениеbaudRate
для вашего принтера/версии прошивки.Мне нужно было добавить
\n
в конец моей строки G-кода. В этом примере была только одна команда,G28\n
, но если вам нужно несколько команд в одной строке, вам нужно будет добавить\n
после каждой из них.
Потрясающе!!! Возможно отправить G-код на принтер из веб-браузера с помощью всего нескольких строк JavaScript!
Обновление: Если кому-то интересно, я создал это простое приложение в стиле терминала. Оно должно работать с любым совместимым браузером, а также его можно использовать офлайн, если вы клонируете репозиторий и откроете файл sender.html
в своем браузере.
- Отправка команд G-кода в систему Hyrel 30M с помощью python
- Что такое консоль/терминал принтера?
- Ender 5 hotend и охлаждение стола при автоматическом выравнивании стола
- Как вы отправляете G-код с USB-порта с помощью Python?
- Управление 3D-принтером с помощью другого устройства Arduino по com-порту
- Как регистрировать каждую строку G-кода, считанную с SD-карты на последовательный порт прошивки marlin
- Только смещение Z для BLTouch?
- CR 10 mini не обнаруживается как последовательный интерфейс (Win 10)