Qsuqsu Posté(e) Juin 3, 2020 Posté(e) Juin 3, 2020 Bonjour à tous, c'est une de mes premières fois où je pose une question sur le forum (eh oui je fais partie de cette majorité qui erre sur les forum en espérant de trouver une réponse plutôt que de poser la question directement) donc j'espère que vous serez indulgent parce que je ne m'y connais pas tellement en Marlin. Entrons dans le vif du sujet : J'ai une Dagoma DiscoEasy 200 et j'essaye de rajouter une fonction gcode dans le Marlin qui servirait à renommer le fichier qui vient de s'imprimer en "OK + leNomDuFichierDOrigine" de manière à savoir parmi les nombreux fichier dans les dossiers de ma carte SD lesquels j'ai déjà imprimé Alors je sais que je pourrais supprimer le fichier ou les classer plus facilement pour ne pas me perdre ou bien les renommer pour me souvenir du nom de ceux que j'ai déjà imprimé etc... Mais je trouvais l'option intéressante et j'espère que ça va intéresser certains Voilà où j'en suis, je sais comment créer une nouvelle fonction Gcode dans le Main du Marlin : inline void gcode_M999() { // Fonction existante que j'utilise juste comme référence de position dans le fichier Running = true; lcd_reset_alert_level(); // gcode_LastN = Stopped_gcode_LastN; FlushSerialRequestResend(); } inline void gcode_M384() // Ma Nouvelle Fonction Il faut créer une fonction avec un M*** qui n'est pas utilisé (ici j'ai bien vérifié que le M384 existait pas), je l'ai crée en dessous de la fonction M999 qui était la dernière des M Et il faut ajouter un case pour le numéro de ma fonction pour savoir que faire quand elle sera appelée : case 999: // M999: Restart after being Stopped gcode_M999(); break; case 384: gcode_M384(); break; Ici aussi je me mets en dessous de 999 pour être sur de m'insérer au bon endroit. Mon seul problème est comment renommer le fichier actuel sélectionné pour l'impression ??? Je sais qu'il existe une méthode rename() dans la classe SdBaseFile de Marlin : bool SdBaseFile::rename(SdBaseFile* dirFile, const char* newPath) Seulement je ne comprend pas du tout comment elle doit être utilisée ? Est-ce qu'il faut faire leFichierActuel.rename(leFichierActuel, nouveauNom) ? Et surtout je n'arrive pas à comprendre comment récupérer le fichier d'impression actuel... Est-ce qu'il n'y aurait pas une commande du genre getCurrentWorkingFile() ou un truc dans le genre ? Merci d'avance aux passionnés qui sauront me donner une réponse ou une piste ! Dites moi si je n'ai pas été clair sur un des points ou si vous voulez plus d'info (ce qui est très probable hahaha)
alex_i Posté(e) Juin 4, 2020 Posté(e) Juin 4, 2020 Salut ! En farfouillant dans le repo GitHub de Marlin, j'ai trouvé ça: ( https://github.com/MarlinFirmware/Marlin/blob/8dbbcfd382356eb5d16b8bfa75c713bbc1de1631/Marlin/src/sd/SdBaseFile.cpp#L1189 ) Ca nous éclaire au moins sur l'usage de la fonction: leFichierActuel.rename(leRépertoireDeDestination, "nouveauNom") (Pour l'instant, je n'en sais pas plus sur comment récupérer l'instance du fichier actuel)
Qsuqsu Posté(e) Juin 4, 2020 Auteur Posté(e) Juin 4, 2020 Ok super ! Donc si je voudrais juste renommer le fichier en le laissant dans le répertoire où il est il faudrait faire : leFichierActuel.rename(sonRepertoireActuel, "OK " + sonNomActuel). Donc il faut trouver comment récupérer le fichier actuel et comment avoir l'instance d'un répertoire (en l'occurence, celui du fichier actuel si on ne souhaite pas le bouger mais juste le rename)
papajds Posté(e) Juin 4, 2020 Posté(e) Juin 4, 2020 Bonjour, l'idée est bonne , mais je pense que si le fichier actuel est en cours d'exécution (comme c'est lui qui envoie la commande pour renommer ), donc "ouvert", il ne soit pas possible de le renommer . Donc , une autre piste serait , qu'au moment ou on sélèctionne le fichier à imprimer depuis la carte SD , on le renomme immédiatement (avant lancement) , et on l'exécute déjà renommé. A+
Qsuqsu Posté(e) Juin 4, 2020 Auteur Posté(e) Juin 4, 2020 Ah oui pas bête je vois, merci Ou alors enregistrer l'adresse du fichier en cours et à la fin de chaque impression, fermer le fichier et renommer le fichier qui est à l'adresse que l'on a enregistré Mais effectivement je pense que le rename quand le fichier est lancé peut être impossible
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant