Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
projets:imprimante_thermique [2015/08/04 21:40] mac |
projets:imprimante_thermique [2015/08/12 13:05] (Version actuelle) mac |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Imprimante thermique "à tickets" Citizen CT-S2000 ====== | ====== Imprimante thermique "à tickets" Citizen CT-S2000 ====== | ||
- | Tentative d'utilisation d'une imprimante thermique à tickets de caisse récupérée par le carrefour numérique, par sa connexion série (RS232). \\ | + | Tentative d'utilisation d'une imprimante thermique à tickets de caisse ([[http://www.citizen-systems.com/us/printer/pos/ct-s2000|CT-S2000]]) récupérée par le carrefour numérique, par sa connexion série (RS232). \\ |
Cette imprimante permet d'imprimer facilement du texte, mais est aussi capable d'imprimer des codes barres ou des photos (en noir et blanc) | Cette imprimante permet d'imprimer facilement du texte, mais est aussi capable d'imprimer des codes barres ou des photos (en noir et blanc) | ||
- | {{:gallerie:imprimante_thermique:ornytho.jpg?200 |}}{{:gallerie:imprimante_thermique:pictures..jpg?530 |}} | + | |
{{{project | {{{project | ||
Ligne 14: | Ligne 14: | ||
sources: | sources: | ||
liens: | liens: | ||
+ | langages: c++ arduino python bash | ||
tags: arduino,imprimante_thermique | tags: arduino,imprimante_thermique | ||
- | usager:mac | + | usager:mac bumblebee |
licence:cc-by-sa | licence:cc-by-sa | ||
}}} | }}} | ||
+ | ===== Présentation ===== | ||
+ | L'imprimante possède deux interfaces de liaisons : une interface série RS232 et une interface USB. | ||
- | ==== Infomations utiles ==== | + | * **USB :** Les tests effectués sous linux montrent que lorsque l'imprimante est connectée à un PC sous GNU/linux un périphérique apparaît dans ''/dev/USB/'' correspondant à l’imprimante (cela peu nécessiter l'installation d'un [[http://www.citizen-systems.com/us/printer/support/software/POS?field_software_printers_target_id=91&field_operation_system_tid=1324|driver]]. Il suffit alors d'écrire sur le périphérique (voir exemple bash ci-dessous) pour communiquer avec l'imprimante et imprimer ce que l'on souhaite. |
- | vitesse de connexion de l'imprimante : 19200 bauds | + | * **Port Série (RS232) :** Si on utilise la connexion série avec un ordinateur (via un adaptateur RS232/USB) un périphérique série apparaît dans ''/dev/'' (ex. ''/dev/ttyUSBO''). Il suffit alors d’écrire sur ce périphérique comme sur le périphérique USB ci-dessus, ou de se connecter en utilisant un outil de communication série (minicom, screen, python-serial, ...) pour communiquer avec l'imprimante. |
- | doc technique de l'imprimante : {{:projets:imprimante_thermique:ct-s2000cmd003e.pdf|}} | + | Une fois connecté à l'imprimante par l'une ou l'autre des méthodes décrite ci-dessus il est possible d'envoyer du texte à l'imprimante pour qu'elle l'imprime. Attention, l'imprimante n'imprimera le texte envoyé que lorsque le buffer sera plein (1 ligne complète de texte) ou lors de l’envoi d'un caractère //LineFeed// (''\n'' ou 0x0A). |
+ | Il est possible de modifier les réglages (police, taille, encodage des caractères, ...) ainsi que d'imprimer des codes barres ou des images, ou encore de couper le papier, en utilisant une séries de commandes (une suite de caractères spéciaux). On trouve le détail de ces commandes la {{:projets:imprimante_thermique:ct-s2000cmd003e.pdf|documentation}} de l'imprimante. | ||
- | ==== Commandes de tests à utiliser dans une console linux (adaptez ''/dev/ttuUSB0'' au périphérique à utiliser sur votre système) : ==== | + | Nous avons d'abord fait nos premiers tests d'impression directement en ligne de commande, en bash. |
+ | Python nous a permis d'aller un peu plus loin et notamment d'imprimer des images/photos. | ||
+ | Et ensuite nous avons profité du fait que l'imprimante disposait d'une interface série pour l'interfacer non plus avec un PC mais avec un Arduino pour voir s'il serait possible d'utiliser ce type d'imprimante avec des projets hardware. | ||
+ | ==== Informations utiles ==== | ||
+ | * Vitesse de connexion de l'imprimante : 19200 bauds | ||
+ | * Manuel d'utilisation : {{:projets:imprimante_thermique:ct-s2000um5_110.pdf|}} | ||
+ | * Doc technique de l'imprimante (liste des commandes) : {{:projets:imprimante_thermique:ct-s2000cmd003e.pdf|}} | ||
- | <code> | + | ===== Utilisation ===== |
+ | |||
+ | ==== En ligne de commande (bash) ==== | ||
+ | |||
+ | Commandes de tests à utiliser dans une console linux (adaptez ''/dev/ttuUSB0'' au périphérique à utiliser sur votre système) : | ||
+ | |||
+ | |||
+ | <code bash> | ||
# un code barre codant '1337' | # un code barre codant '1337' | ||
Ligne 40: | Ligne 57: | ||
printf "\x0a\x0a\x1bm">/dev/ttyUSB0 | printf "\x0a\x0a\x1bm">/dev/ttyUSB0 | ||
- | #Les 3 polices (puis avence et coupe) | + | #Les 3 polices internes de l'imprimante (puis avance et coupe) |
printf "\x1b\x4d\x00AZERTYazerty\x0a\x1b\x4d\x01AZERTYazerty\x0a\x1b\x4d\x02AZERTYazerty\x0a\x0A\x0a\x0A\x1bi">/dev/ttyUSB0 | printf "\x1b\x4d\x00AZERTYazerty\x0a\x1b\x4d\x01AZERTYazerty\x0a\x1b\x4d\x02AZERTYazerty\x0a\x0A\x0a\x0A\x1bi">/dev/ttyUSB0 | ||
- | # fait biper l'imprimante | + | #fait biper l'imprimante |
printf "\x1b\x1e">/dev/ttyUSB0 | printf "\x1b\x1e">/dev/ttyUSB0 | ||
- | #impression en 'gras' (double stroke): | + | #impression en 'gras' (double strike): |
printf "\x1b\x47\x01DoubleStrike(gras)\x1b\x47\x00SimpleStrike(normal)\x0a\x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | printf "\x1b\x47\x01DoubleStrike(gras)\x1b\x47\x00SimpleStrike(normal)\x0a\x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | ||
- | #tres grosse police | + | #très grosse police |
printf "\x1d\x21\x33BONJOUR \x0aje suis une\x0aimprimante ! \x0a\x0a\x0a\x0a\x0a\x1bi" > /dev/ttyUSB0 | printf "\x1d\x21\x33BONJOUR \x0aje suis une\x0aimprimante ! \x0a\x0a\x0a\x0a\x0a\x1bi" > /dev/ttyUSB0 | ||
- | #Negatif/positif | + | #Négatif/positif |
printf "\x1D\x42\x01 NEGATIF \x1D\x42\x00 POSITIF \x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | printf "\x1D\x42\x01 NEGATIF \x1D\x42\x00 POSITIF \x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | ||
Ligne 58: | Ligne 75: | ||
printf "\x1b\x21\x36largeur&hauteur:37\x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | printf "\x1b\x21\x36largeur&hauteur:37\x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | ||
- | #smooth (pas tres visible a priori) | + | #smooth (pas très visible à priori) |
printf "\x1D\x62\x01 SMOOTH \x1D\x62\x00 NON SMOOTH \x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | printf "\x1D\x62\x01 SMOOTH \x1D\x62\x00 NON SMOOTH \x0a\x0a\x0a\x0a\x1bi">/dev/ttyUSB0 | ||
</code> | </code> | ||
+ | |||
+ | ==== En python ==== | ||
+ | Un dépot [[github>bumblebeefr/pyCTS2000|github]] contient un début de bibliothèque permettant d'imprimer facilement avec la CT-S2000, ainsi que des notebook ipython (jupyter) avec des exemples et les tests effectués. | ||
+ | |||
+ | La fonctionalité importante apportée dans cette bibliothèque est la possibilité d'imprimer des images à partir d'un fichier PBM(([[wpfr>Portable_pixmap|Portable Bit Map]])). Ce format, géré sans problèmes par ''The Gimp'' et ''ImageMagick'', contient l'image encodée en binaire exactement sous la forme dont nous avons besoin. Le script de lecture des fichier pbm est très fortement inspiré d'un article parus dans GNU/Linux magazine n°147. | ||
+ | |||
+ | |||
+ | ==== A partir d'un arduino ==== | ||
+ | |||
+ | //8-) A venir // | ||
+ | |||
+ | La photo de l’ornithorynque a été imprimée via un arduino \o/ | ||
+ | |||
+ | |||
+ | ==== Ressources en vrac / divers ==== | ||
+ | |||
+ | * A TESTER : Une idée est de pouvoir brancher un lecteur de code barres / QR code de type "douchette USB" sur un arduino (la douchette est un clavier) | ||
+ | * avec un shield USB host pour arduino (testé, fonctionne) | ||
+ | * ou encore gràce à la bibliothèque arduino de gestion d'un clavier PS2 : https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html (nécessite un adaptateur USB vers PS2) ( à voir) | ||
+ | |||
===== Photos ===== | ===== Photos ===== | ||
- | <!-- Quelques photos du rendu final du projet, mais aussi si c'est possible des differentes etapes si elle n'ont pas déja été documentées visuellement --> | ||
- | <!-- La Structure "Conception / Réalisation / Difficultés rencontrés / Suite du projet " est bien sur indicative, vous pouvez l'adapter à votre guise. N'hesitez pas a vous inspirer des documentations deja existance pour realiser la votre. --> | + | {{gallery>:gallerie:imprimante_thermique:?400x600&nocache}} |
+ | ===== Videos ===== | ||
{{:projets:imprimante_thermique:barcode.mp4|}} | {{:projets:imprimante_thermique:barcode.mp4|}} |