Посібник з розробки драйверів
Цей посібник надає високорівневий огляд того, як створити драйвер у Rayforge для додавання підтримки вашого лазерного різака або гравера. Створюючи драйвер, ви інтегруєте унікальний протокол комунікації та мову команд вашої машини в екосистему Rayforge.
Огляд драйвера
Драйвер - це міст між основною логікою Rayforge та вашим фізичним обладнанням. Він відповідає за три основні завдання:
- Керування підключенням: Обробка низькорівневого протоколу комунікації (Serial, WebSocket, HTTP тощо.).
- Виконання завдань: Надсилання попередньо закодованого машинного коду (наприклад, G-code) на пристрій та відстеження прогресу виконання.
- Звітність про стан: Емісія сигналів для оновлення UI реальною
позицією лазера, статусом (
IDLE,RUN) та лог-повідомленнями.
Щоб спростити це, Rayforge надає архітектуру на основі компонуемых частин:
OpsEncoder: ПерекладаєOpsу специфічну мову команд (наприклад, G-code). Використовується як конвеєром (для кодування завдань), так і драйвером (для окремих команд як move_to, home тощо.).Pipeline: Оркеструє кодування та виробляє фінальний машинний код.Transport: Керує з'єднанням та передачею даних.Driver: Виконує машинний код, обробляє стан пристрою та комунікує з UI.
Всі операції драйвера є асинхронними щоб забезпечити відгуковість користувацького інтерфейсу.
Мова Ops
Rayforge описує лазерне завдання як послідовність високорівневих операцій, збережених у
об'єкті Ops. Це універсальна мова в Rayforge для опису
машинних переміщень, незалежно від конкретного обладнання.
Метод Ops | Сигнатура | Опис |
|---|---|---|
move_to | (x, y, z=0.0) | Швидке переміщення (без різання) |
line_to | (x, y, z=0.0) | Переміщення різання/гравірування |
arc_to | (x, y, i, j, cw=True, z=0.0) | Переміщення дуги різання/гравірування |
set_power | (power) | Встановити потужність лазера (0-100%) |
set_cut_speed | (speed) | Встановити швидкість для переміщень різання (мм/хв) |
set_travel_speed | (speed) | Встановити швидкість для швидких переміщень (мм/хв) |
enable_air_assist | () | Увімкнути повітряний помічник |
disable_air_assist | () | Вимкнути повітряний помічник |
Ваш драйвер отримує попередньо закодований машинний код (наприклад, рядок G-code) та
мапу операцій, яка відстежує, які команди машинного коду відповідають яким
операціям. Конвеєр обробляє кодування Ops у машинний код перед викликом
методу run() драйвера.
# Приклад того, як Rayforge будує об'єкт Ops
ops = Ops()
ops.set_travel_speed(3000)
ops.set_cut_speed(800)
ops.set_power(80)
ops.move_to(10, 10) # Швидке переміщення до стартової точки
ops.enable_air_assist()
ops.line_to(50, 10) # Різати лінію з повітряним помічником
ops.disable_air_assist()
ops.line_to(50, 50) # Різати лінію без повітряного помічника
Реалізація драйвера
Всі драйвери ПОВИННІ успадковуватися від rayforge.machine.drivers.Driver.
from rayforge.machine.driver.driver import Driver
class YourDriver(Driver):
label = "Ваш пристрій" # Відображуване ім'я в UI
subtitle = "Опис для користувачів"
supports_settings = False # Встановіть True якщо драйвер може читати/записувати налаштування пр ошивки
Обов'язкові властивості
label: Зрозуміла для людини назва, що показується в UI.subtitle: Короткий опис, що показується під назвою.supports_settings: Булеве значення, що вказує, чи може драйвер читати/записувати налаштування пристрою (як$$у GRBL).
Обов'язкові методи
Ваш клас драйвера ПОВИНЕН реалізувати наступні методи. Зверніть увагу, що більшість є асинхронними і повинні бути визначені з async def.