Guide de développement de pilote
Ce guide fournit un aperçu de haut niveau de la création d'un pilote dans Rayforge pour ajouter le support de votre découpeur ou graveur laser. En créant un pilote, vous intégrez le protocole de communication unique et le langage de commandes de votre machine dans l'écosystème Rayforge.
Aperçu du pilote
Un pilote est le pont entre la logique principale de Rayforge et votre matériel physique. Il est responsable de trois tâches principales :
- Gérer la connectivité : Gérer le protocole de communication de bas niveau (Série, WebSocket, HTTP, etc.).
- Exécuter les travaux : Envoyer le code machine pré-encodé (par exemple, G-code) à l'appareil et suivre la progression de l'exécution.
- Rapporter l'état : Émettre des signaux pour mettre à jour l'interface avec la
position en temps réel du laser, le statut (
IDLE,RUN) et les messages de journal.
Pour simplifier cela, Rayforge fournit une architecture basée sur des parties composables :
OpsEncoder: Traduit lesOpsdans un langage de commandes spécifique (par exemple, G-code). Utilisé à la fois par le Pipeline (pour l'encodage des travaux) et le Driver (pour les commandes individuelles comme move_to, home, etc.).Pipeline: Orchestre l'encodage et produit le code machine final.Transport: Gère la connexion et le transfert de données.Driver: Exécute le code machine, gère l'état de l'appareil et communique avec l'interface.
Toutes les opérations du pilote sont asynchrones pour s'assurer que l'interface utilisateur reste réactive.
Le langage Ops
Rayforge décrit un travail laser comme une séquence d'opérations de haut niveau, stockées dans
un objet Ops. C'est le langage universel au sein de Rayforge pour décrire
les mouvements machine, indépendamment de tout matériel spécifique.
Méthode Ops | Signature | Description |
|---|---|---|
move_to | (x, y, z=0.0) | Mouvement rapide (sans coupe) |
line_to | (x, y, z=0.0) | Mouvement de coupe/gravure |
arc_to | (x, y, i, j, cw=True, z=0.0) | Mouvement d'arc de coupe/gravure |
set_power | (power) | Définir la puissance laser (0-100%) |
set_cut_speed | (speed) | Définir la vitesse pour les mouvements de coupe (mm/min) |
set_travel_speed | (speed) | Définir la vitesse pour les mouvements rapides (mm/min) |
enable_air_assist | () | Activer l'assistance air |
disable_air_assist | () | Désactiver l'assistance air |
Votre pilote reçoit du code machine pré-encodé (par exemple, une chaîne G-code) et une
carte d'opérations qui suit quelles commandes de code machine correspondent à quelles
opérations. Le pipeline gère l'encodage des Ops en code machine avant d'appeler
la méthode run() du pilote.
# Exemple de comment Rayforge construit un objet Ops
ops = Ops()
ops.set_travel_speed(3000)
ops.set_cut_speed(800)
ops.set_power(80)
ops.move_to(10, 10) # Mouvement rapide vers le point de départ
ops.enable_air_assist()
ops.line_to(50, 10) # Couper une ligne avec assistance air
ops.disable_air_assist()
ops.line_to(50, 50) # Couper une ligne sans assistance air
Implémentation du pilote
Tous les pilotes DOIVENT hériter de rayforge.machine.driver.driver.Driver.
from rayforge.machine.driver.driver import Driver
class VotreDriver(Driver):
label = "Votre Appareil" # Nom d'affichage dans l'interface
subtitle = "Description pour les utilisateurs"
supports_settings = False # Définir True si le pilote peut lire/écrire les paramètres du firmware