Skip to content

Dev - #22

Closed
Jgood3d wants to merge 33 commits into
mainfrom
Dev
Closed

Dev#22
Jgood3d wants to merge 33 commits into
mainfrom
Dev

Conversation

@Jgood3d

@Jgood3d Jgood3d commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Résolution problème icone sur Windows
Passage thème sombre et thème clair
main.py
ui_setup_mixin.py

Antoine Le Morvan and others added 30 commits November 2, 2026 17:31
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
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é.
Jgood3d and others added 3 commits November 3, 2026 20:26
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
@Jgood3d Jgood3d closed this Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants