Repository navigation
Conversation
Quand GRBL renvoie une erreur (error:N ou ALARM) pendant l'envoi, l'envoi s'arrêtait mais GRBL exécutait encore les lignes déjà dans son buffer (déplacements, laser allumé). Le streamer arrête désormais la machine : feed hold (!), attente de l'arrêt complet (Hold:0 ou Idle, 3 s maxi), puis reset logiciel (0x18) qui vide le buffer et coupe le laser. Si l'arrêt complet n'est pas confirmé (ou après une ALARM), la position est considérée perdue : le statut « homing fait » est retiré, comme pour un RESET manuel. Valable pour l'envoi direct et la file d'attente. Tests : faux GRBL (erreur, arrêt non confirmé, ALARM, job normal) et position perdue côté interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
À la connexion, la réponse de « $$ » (déjà lue pour vérifier $32) est aussi utilisée pour $22. Si le homing est désactivé sur la machine ($22=0), GRBL refuserait le « $H » en tête de job (error:5) : « Inclure $H » et l'option homing de la matrice de test sont décochés, avec un message dans la console. Avec $22=1 ou un réglage inconnu, rien ne change (case cochée d'office). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
En plus d'être décochées, les cases « Inclure $H » et homing de la matrice de test sont grisées, avec une infobulle qui explique pourquoi : on ne peut plus les recocher par erreur. Elles redeviennent utilisables (sans être recochées) à la connexion d'une machine avec $22 non nul ; sans réponse à « $$ », rien ne change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ajoute debug_log.py, activé par la variable d'environnement LASER_STUDIO_DEBUG=1 (sans elle, rien ne change) : - terminal (INFO) : étapes, erreurs et blocages ; - gravure_debug.log du dossier de données (DEBUG) : en plus, chaque ligne envoyée (TX) et chaque réponse de GRBL (RX). Journalise : - la file d'attente et « Envoyer au laser » : raison de chaque abandon, résumé de chaque job, lignes qui ne ressemblent pas à du G-Code ; - l'envoi (GCodeStreamerThread) : port, erreur GRBL avec la ligne fautive, alerte toutes les 5 s si GRBL ne répond plus, bilan de fin ; - le port USB : connexion et message d'accueil, commandes, commandes temps réel, déconnexion, changements d'état GRBL (Idle, Hold, Alarm...). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
estimate_job_time lisait le surbalayage dans un widget spin_overscan qui n'existe pas (le réglage s'appelle spin_overscan_dist) : le surbalayage valait toujours 0 et la durée annoncée était trop courte. Le surbalayage est maintenant compté comme à la génération du G-Code : désactivé, distance fixe ou pourcentage de la largeur de l'image.
Fix de sécurité, s'assurer que le laser est off en cas d'erreur
Feat/graveuse sans homming
Correction du point rouge qui suit la gravure
surbalayage enregistré dans le profil machine
debug: journal de la gravure (LASER_STUDIO_DEBUG)
ui: refonte de l'interface
Le dépôt n'avait pas de licence : le code était donc, juridiquement, « tous droits réservés », contributions comprises. Ajout du texte officiel de la GNU GPL v3 (gnu.org) dans LICENSE et d'une section Licence dans le README : GPL-3.0-or-later. La GPLv3 suit celle de PyQt6 (GPLv3 ou commerciale), embarqué dans l'exécutable PyInstaller ; les autres dépendances (numpy, Pillow, OpenCV, scikit-image, pyserial, pyqtgraph, numba) y sont compatibles.
…init__ En résolvant un conflit de fusion, l'initialisation de _hold_timeout, stopped_on_error et position_lost s'est retrouvée à la fin de _flush_sent_lines au lieu de __init__ : chaque émission des lignes envoyées remettait les deux drapeaux à False. Après une erreur GRBL, l'application n'annonçait plus l'arrêt sur erreur ni la position perdue (3 tests de test_stream_error_stop en échec).
Pendant l'envoi, les segments déjà exécutés par GRBL (lignes acquittées par « ok ») sont tracés en rouge sur l'aperçu, pour l'envoi direct comme pour la file d'attente.
Refonte du panneau jog et des commandes : déplacements avec des curseurs de pas et de vitesse, boutons regroupés pour prendre moins de place.
Comme pour les vecteurs importés, l'image est placée à 10 mm de l'origine quand l'origine est en bas à gauche : avec un décalage du job à 0, le surbalayage ne fait plus partir la tête en X négatif (refus avant envoi).
« Image chargée » et « Image insérée à sa taille d'origine » s'affichent dans la barre d'état au lieu de la console G-Code, qui ne contient ainsi plus que du G-Code.
Les lignes sans pixel à graver sont sautées, et chaque ligne n'est balayée (surbalayage compris) que de son premier à son dernier pixel gravé, en alternant le sens sur les lignes balayées. Les pixels gravés sont inchangés ; l'estimation rapide suit le même calcul. Médaille de 80 mm : 26 min 3 s → 19 min 43 s.
La console mélange le G-Code et les messages de l'application (« Connecté à … », « >>> Mode laser GRBL … »). En se connectant après la génération, ces lignes étaient envoyées à la fin du job : GRBL répondait error:1 et la gravure était annoncée interrompue. Seules les lignes que GRBL sait lire sont désormais envoyées. Le test d'arrêt sur erreur utilise G999 (refusé par GRBL) au lieu d'une ligne de texte, désormais filtrée.
docs: licence GPL-3.0-or-later
fix: arrêt sur erreur GRBL, initialisation du streamer remise dans __…
fix: l'estimation du temps de gravure ignorait le surbalayage
La fusion de feat/ui (lignes vides sautées) avec fix-time-calc (surbalayage compté) a gardé les deux calculs dans estimate_job_time : le second utilisait h_mm et lmm, qui n'existent plus, d'où un NameError dès qu'une image est chargée. Les deux sont réunis : surbalayage lu comme à la génération (désactivé, distance fixe ou pourcentage), ajouté à chaque ligne balayée, lignes vides exclues. Test ajouté pour ce cas combiné.
fix: « Estimer le temps » plantait sur une image (fusion de feat/ui)
fix: sous wayland, le splashscreen ne s'affiche pas fix: le splashscreen s'affiche au minimum 2s feat: l'image du splashscreen est retaillée en fonction de la taille de l'écran
feat: revue du code de démarrage, optimisations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résolution problème icone sur Windows
Passage thème sombre et thème clair
main.py
ui_setup_mixin.py