Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impression imprimante thermique

Sujet résolu
    11 mai 2017 à 14:55:27

    Bonjour,

    Je cherche à imprimer une étiquette sur une imprimante thermique, sans succès depuis plusieurs jours.

    Voici les éléments à ma disposition :

    CodeSoft & LabelStar (logiciels de création d'étiquettes)

    Imprimante Carl Valentin Vario III 107/12

    Le driver de ladite imprimante

    Un accès telnet sur l'imprimante (port 9100)

    Un fichier qui semble contenir les données de mon étiquette (voir capture ci-dessous)

    L'objectif in fine étant de sortir une étiquette depuis un script python.

    Auriez-vous des pistes ou une manière de procéder ? Je sèche complètement ...

    • J'ai essayé d'envoyer mon fichier txt directement sur l'imprimante (fichier → imprimer) : le contenu n'est pas interprété et est affiché tel quel
    • Envoi du contenu du fichier en telnet sur le port 9100 → aucune réponse de l'imprimante
    • Envoyer simplement "coucou" puis ctrl+$ pour fermer la connexion n'imprime rien non plus.

    C'est une requête à mi-chemin entre python et du système, je laisse aux modérateurs le soin de déplacer si besoin est.

    Merci !

    -
    Edité par ftassy 11 mai 2017 à 14:55:57

    • Partager sur Facebook
    • Partager sur Twitter
    Avide de connaissances en électronique/dév/admin sys/db/réseau !
      12 mai 2017 à 14:57:34

      Up ? Quelqu'un ?
      • Partager sur Facebook
      • Partager sur Twitter
      Avide de connaissances en électronique/dév/admin sys/db/réseau !
        16 mai 2017 à 8:41:50

        Re-Up ?

        J'ai trouvé (a priori) une API fonctionnant avec un fichier DLL. Si quelqu'un veut m'aiguiller dans ce sens ...

        • Partager sur Facebook
        • Partager sur Twitter
        Avide de connaissances en électronique/dév/admin sys/db/réseau !
          17 mai 2017 à 8:59:53

          uuuuup :(
          • Partager sur Facebook
          • Partager sur Twitter
          Avide de connaissances en électronique/dév/admin sys/db/réseau !
            17 mai 2017 à 10:40:07

            Ce que tu demandes est trop technique donc tu as peu de chance d'avoir une réponse ici. Tu devrais plutôt aller voir sur le site du constructeur (ou celui de l'api), ou aller sur SO ou essayer de voir s'il n'y a pas un groupe google qui a été créé pour ce cas précis.
            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              17 mai 2017 à 11:27:44

              Oui, je pense que ça va finir sur StackOverflow.

              J'ai retourné Google et DuckDuckGo dans tous les sens pour trouver des informations sur le sujet, j'ai trouvé une vague documentation sur le site du constructeur, mais elle ne traite absolument pas de la liaison en ethernet.

              Quant à l'API, la dll citée dans la documentation n'est pas présente dans la version gratuite du soft, donc c'est une piste à éliminer :(

              J'ai fini par contacter directement le constructeur pour lui demander s'il avait une solution, parce que je sèche complètement. Je pensais que Nohar ou OldProgrammer auraient peut-être une idée, mais visiblement c'est une problématique qu'ils n'ont pas traitée.

              • Partager sur Facebook
              • Partager sur Twitter
              Avide de connaissances en électronique/dév/admin sys/db/réseau !
                24 mai 2017 à 13:32:07

                Je m'auto-réponds :

                J'ai fini par trouver une solution. J'ai généré une étiquette avec un logiciel spécifique (CodeSoft). Au moment de l'impression, on peut choisir l'option "imprimer dans un fichier". Le contenu ainsi obtenu peut ensuite être envoyé à l'imprimante :

                import os, sys
                import win32print
                import codecs
                
                file = codecs.open('my_label.txt', 'rb')
                raw_data = file.read()
                printer_name = 'Vario III 107/12'
                
                hPrinter = win32print.OpenPrinter(printer_name)
                try:
                    hJob = win32print.StartDocPrinter(hPrinter, 1, ("test", None, "RAW"))
                    try:
                        win32print.StartPagePrinter(hPrinter)
                        win32print.WritePrinter(hPrinter, raw_data)
                        win32print.EndPagePrinter(hPrinter)
                    finally:
                        win32print.EndDocPrinter(hPrinter)
                finally:
                    win32print.ClosePrinter(hPrinter)



                • Partager sur Facebook
                • Partager sur Twitter
                Avide de connaissances en électronique/dév/admin sys/db/réseau !
                Anonyme
                  24 mai 2017 à 14:47:34

                  Je suis sûr que le constructeur sera t'amener à la bonne dll version gratuite, ainsi qu'à sa documentation... Ce que tu fais ci-dessus n'est ni plus ni moins qu'un contournement à os.system.

                  Pour les vieux entre autres, ne pas oublier entwanne, fallait pas qu'il compte être l'oublie des anciens.  ; )

                  Perso, pour ton problème, j'ai déjà vécu, mais dans les moments là j'avais trouvé plus simple en java... Donc l'idée du constructeur est la seule solution si tu veux être sûr d'être guidé correctement.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Impression imprimante thermique

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown