PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Imprimante ticket EPSON !!!
Imprimante ticket EPSON !!!
Iniciado por superdev, 04,may. 2005 12:49 - 16 respuestas
Publicado el 04,mayo 2005 - 12:49
Bonjour à tous,

En ce moment je me casse la tête et m'arrache les cheveux pour les impressions sur une imprimante ticket du genre EPSON TMT88III.
Dans mon application j'ai réalisé l'impression avec les commandes ESC/POS de EPSON.
Ca marche très bien. Le problème est qu'il faut que je reprogramme tout pour les autres marques d'imprimantes (citizen,...).
Donc, j'ia pensé à installer le driver EPSON Windows, mais l'impression est hyper lente !
A moins d'utiliser la police epson ! Comment fait-on pour utiliser cette police ?
Certaines application marche comme ca et ça fonctionne très bien. Comment est-ce possible ?
On m'a dit qu'il existait aussi des OCX permettant de programmer ces imprimantes ...

Bref,...

1 ere question : Entre l'impression avec drivers windows, commande ESC/POS, OCX , ... quelle est la meilleure méthode à mettre en place les impressions sur imprimante ticket pour une application point de vente.

2 eme question : Comment faire pour gérer plusieurs imprimante ticket sur un même poste ?


Merci de m'éclairer sur ce sujet et si certains on des bouts de sources je suis preneur.

Bon dev
Publicado el 04,mayo 2005 - 15:22
Bonjour,

nous utilisons EPSON TMT88 avec la police imprimante FontA11 et c'est extrémement rapide
Publicado el 04,mayo 2005 - 16:24
Où peut-on se procurer cette police FontA11 et comment faut-il l'implenter ?
Faut-il créer l'état avec windev et dire que l'on utilise cette police ?

merci

JD
Publicado el 04,mayo 2005 - 19:07
normalement c'est une police imprimante

essaye de créer une police avec iPolice() en indiquant comme nom de police FontA11 et essaye de faire un iImprime()

ca doit fonctionner
Publicado el 05,mayo 2005 - 12:08
Jérôme DEVOS a exposé le 04/05/2005 :
>

1 ere question : Entre l'impression avec drivers windows, commande ESC/POS,
OCX , ... quelle est la meilleure méthode à mettre en place les impressions
sur imprimante ticket pour une application point de vente.

drivers OPOS, c'est fait justement pour ça

2 eme question : Comment faire pour gérer plusieurs imprimante ticket sur un
même poste ?



idem

OPOS : http://www.pdv.epson.fr/support/faq/opos/op001.htm

tu peux me contacter en privé si tu veux des précisions et des exemples
sous windev

Bertrand
Publicado el 05,mayo 2005 - 15:38
Oui, merci, tes exemples m'intéressent.
Tu peux me les envoyer à superdev@tiscali.fr
Merci encore, je te tiens au courant de mes travaux.
Oh fait , c'est quoi ton email privé ?

Merci d'avance

JD
Publicado el 04,enero 2006 - 17:40
Bonjour à tous, j'ai vu que vous aviez des exemples alors si c'est possible, j'aimerai bien que vous m'en envoyer un afin que je puisse tester mon imprimante EPSON TMT88III, je n'arrive même pas à imprimer une page de test o_O... je ne sais pas si c'est normal car je n'ai jamais utilisé d'imprimante de ce type.

merci à vous
Publicado el 11,noviembre 2010 - 22:25
bonjour,
SVP, j'ai un probleme avec mon imprimante ticket EPSON tm-t88iii qui est trèèèès lente "environ 45s pour imprimer un seul ticket".
j'ai cherché partout mais malheureusement j'ai rien trouvé
pour info:j'utilise WIN XP version française et elle est connecté via un port série "com1".
Merci d'avance
Publicado el 12,noviembre 2010 - 10:10
Pour Bertrand

Si tu pouvais m'envoyer un exemple de code d'impression sur EPSON, tu changerais certainement ma vie pour la semaine à venir !!!

Un grand merci d'avance

Aline

tech@primagolf.fr
Publicado el 12,noviembre 2010 - 15:31
Bjr,

Aline a émis l'idée suivante :
Pour Bertrand

Si tu pouvais m'envoyer un exemple de code d'impression sur EPSON, tu
changerais certainement ma vie pour la semaine à venir !!!

Un grand merci d'avance

Aline

tech@primagolf.fr


sOuvre, sEcrit .....
et la, c 'est tres rapide..

a plus

--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------
Publicado el 06,septiembre 2012 - 23:39
bonjour

comment je suis nouveau a l'application windev et je voudrais faire un logicielle de gestion de stock et vente. J'ai un soucis a faire deduire du stock plusieur ligne d'une table et aussi l'impression sur une imprimante ticket epson.

Comment faire une idee et astuce ou exemple serai bien

Merci d'avance
Miembro registrado
57 mensajes
Publicado el 07,septiembre 2012 - 02:29
bonjour
ci joint un exemple qui fonctionne depuis windev 5.5.... plus tout jeune mais nos tickets sortent rapidement en com ou //
Par contre je suis preneur d optimisation car on passe en epson USB prochainement et je voudrais passer avec les etats windev directement ....

PROCEDURE Edite_Ticket(COM=4)
// Edite le Ticket
// rappel com=-x x numero port LPT
// com=x x numero port COM
//COM est un entier
//si Imprimante Type OKI mettre OKI=1 sinon OKI=0
//selecteur pour type de largeur d imprimante Epson
//Typeimprim=0 // pour epson 42 col
//Typeimprim=1 // pour epson 32 col


i est un entier
Typeimprim est un entier
Oki est un entier

//************ VARIABLES POUR TICKET ************************
t_dbhaut,t_petit,t_gras,t_double,t_normal,t_fpetit,t_page sont des chaines
t_coupe est une chaine
t_centredb,t_centrefn,t_droite,t_ddgras,t_dddb,t_epais,t_souldb,t_soulfn,t_bandejo,t_ticket,t_joutic,t_init sont des chaines

// par default
Typeimprim=0
Oki=0




// Chargement des parametres imprimantes
si oki=1 alors
//Modele Type matricielle OKI
t_dbhaut=caract(19)
t_petit=caract(15)
t_gras=caract(27)+caract(69)
t_double=caract(19)
t_normal=caract(27)+caract(73)
t_fpetit=caract(18)
t_page=caract(12)
sinon
//Modele Epson serie type TM
t_coupe=caract(27)+caract(105)
t_centredb=caract(27)+caract(97)+caract(1)
t_centrefn=caract(27)+caract(97)+caract(0)
t_droite=caract(27)+caract(97)+caract(2)
t_normal=caract(27)+caract(33)+caract(0) // 42 caract
t_petit=caract(27)+caract(33)+caract(1) // 56 caract
t_gras=caract(27)+caract(33)+caract(8) // 42 caract
t_dbhaut=caract(27)+caract(33)+caract(16) // 42 caract
t_double=caract(27)+caract(33)+caract(32) // 21 caract
t_ddgras=caract(27)+caract(33)+caract(40) // 21 caract
t_dddb=caract(27)+caract(33)+caract(48) // 21 caract
t_epais=caract(27)+caract(33)+caract(56) // 21 caract
t_souldb=caract(27)+caract(45)+caract(1)
t_soulfn=caract(27)+caract(33)+caract(0)
t_bandejo=caract(27)+caract(99)+caract(48)+caract(1)
t_ticket=caract(27)+caract(99)+caract(48)+caract(2)
t_joutic=caract(27)+caract(99)+caract(48)+caract(3)
t_init=caract(27)+caract(64)
fin



//*********************************************************************

si COM<>"" alors
si souvre(COM,5000,5000,5000) alors
//Tickets1
//DEBUT initialise
secrit(com,T_INIT+t_centredb)
//secrit(COM,T_joutic)
// Entête
si sansespace(Caisse_INI:TETE1)<>"" alors
secrit(COM,t_dbhaut+Caisse_INI:TETE1+t_normal+RC)
fin
si sansespace(Caisse_INI:TETE2)<>"" alors
secrit(COM,t_gras+Caisse_INI:TETE2+t_normal+RC)
fin
si sansespace(Caisse_INI:TETE3)<>"" alors
secrit(COM,t_gras+Caisse_INI:TETE3+t_normal+RC)
fin
si sansespace(Caisse_INI:TETE4)<>"" alors
secrit(COM,t_gras+Caisse_INI:TETE4+t_normal+RC)
fin
si sansespace(Caisse_INI:TETE5)<>"" alors
secrit(COM,t_gras+Caisse_INI:TETE5+t_normal+RC)
fin
si sansespace(Caisse_INI:TETE6)<>"" alors
secrit(COM,t_gras+Caisse_INI:TETE6+t_normal+RC)
fin

sEcrit(COM,t_centrefn+RC)

// N° Ticket
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,T_GRAS+"Ticket No:"+PT_FIC.PT001+"(Euros)"+T_normal+RC)

// Date et Heure
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,"Le : "+dateverschaine(PT_FIC.PT002)+" à "+heureverschaine(PT_FIC.PT092)[[1 a 5]]+RC)

// Caissier
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,"Caissier : "+sansespace(PT_FIC.PT045)+RC)


// Client
si typeimprim=1 alors sEcrit(COM,t_petit)
si sansespace(PT_FIC.PT004)<>sansespace(PT_FIC.Gf_NomDivers) alors
sEcrit(COM,RC)
secrit(COM,t_gras+"R.S. : "+PT_FIC.PT004+t_normal+RC)
fin
sEcrit(COM,RC)

// Corps
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,"Designation"+repete(" ",20)+"Tot. TTC"+RC)
secrit(COM,repete("-",40)+RC)

pour i=1 a PT_FIC.TABAR..occurrence

// Teste si la ligne contient un article
// ** ancien ** si (sansespace(PT_FIC.AR000[i])<>"") et (PT_FIC.LT008[i]<>0) alors
si (sansespace(PT_FIC.lt004[i])<>"") ou (sansespace(PT_FIC.AR000[i])<>"") alors

// Teste si les composants doivent être édités
si (sansespace(PT_FIC.LT023[i])="") ou ((Caisse_INI:EDITCOMPOS=Vrai) et (sansespace(PT_FIC.LT023[i])<>"")) alors
// Edite la ligne
//secrit(COM,t_centrefn+sansespace(PT_FIC.LT004[i])+" "+sansespace(PT_FIC.LT005[i])+rc)
si typeimprim=1 alors
sEcrit(COM,t_petit)
secrit(COM,t_centrefn+complete(PT_FIC.LT004[i],32))
SI PT_FIC.LT015[i]<>0 ALORS
secrit(COM,numériqueVersChaine(PT_FIC.LT015[i],"8.2fS")+RC)
SINON
secrit(COM,RC)
FIN
sinon
secrit(COM,t_centrefn+complete(PT_FIC.LT004[i],32))
SI PT_FIC.LT015[i]<>0 ALORS
secrit(COM,numériqueVersChaine(PT_FIC.LT015[i],"8.2fS")+RC)
SINON
secrit(COM,RC)
FIN
fin
si sansespace(PT_FIC.LT005[i])<>"" alors
// Désignation 2
secrit(COM,t_petit+t_centrefn+PT_FIC.LT005[i]+t_normal+RC)
fin
si PT_FIC.LT008[i]<>1 AND PT_FIC.LT008[i]<>0 alors
si sansespace(PT_FIC.LT023[i])=""
// Quantité * Prix Unitaire
si PT_FIC.LT015[i]<>0 alors
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,t_centrefn+repete(" ",13)+NumériqueVersChaine(PT_FIC.LT008[i],"8.2fS")+" x "+NumériqueVersChaine((PT_FIC.LT015[i]/PT_FIC.LT008[i]),"-8.2fS")+RC)
sinon
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,t_centrefn+NumériqueVersChaine(PT_FIC.LT008[i],"8.2fS")+" x OFFERT"+RC)
fin
FIN
fin
si PT_FIC.LT008[i]=1 et PT_FIC.LT015[i]=0 alors
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,t_centrefn+NumériqueVersChaine(PT_FIC.LT008[i],"8.2fS")+" x OFFERT"+RC)
fin
fin
FIN
FIN


secrit(COM,RC)
// Totaux
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,repete("-",40)+RC)
secrit(COM,t_dbhaut+"Total TTC"+repete(".",22)+":")
secrit(COM,NumériqueVersChaine(PT_FIC.PT065,"8.2fS")+t_normal+RC)
si typeimprim=1 alors sEcrit(COM,t_petit)
secrit(COM,"Total HT"+repete(".",09)+":")
secrit(COM,NumériqueVersChaine(PT_FIC.PT062,"8.2fS")+RC)
et suite .....
Publicado el 12,agosto 2014 - 00:58
Bonjour,

Je cherche des solutions pour imprimer des tickets de caisse sur une imprimante epson TM T20 en USB.
Avez-vous trouver une solution, des codes... des exemples... pour vos impressions en usb ?
Merci pour votre réponse, Jean-Yves
Publicado el 12,agosto 2014 - 10:57
Bonjour,

La gestion des imprimante caisse semble être tout un art...
Confronté depuis peu à ce sujet, je découvre petit à petit le manque de clarté sur le sujet.

En gros, on peut tout faire de toutes les manières, mais aucun cas n'est clairement expliqué.

Donc du peu que je connais, on a plusieurs modes de fonctionnements :
- Si votre imprimante est connectée via port COM (en série) comme cela semble être la norme sur les poste dédiés TPV :
c'est le plus simple car le plus documenté, car le plus utilisé...
Pour dialoguer, on traite directement avec le port COM. On utilise donc les fonctions sOuvre, sLit, sEcrit en définissant le port COM utilisé. Ensuite, il faut s'avaler les documentations de codes ESC/POS de chaque modèle d'imprimante utilisé pour connaître les ordres pour commander l'imprimante/recevoir ses messages.

- En USB, l'idéal serait de passer par un adaptateur USB<=> Port Com : On est en USB mais on travaille à la manière des ports COM (affecter le numéro du port COM dans le gestionnaire de périphériques).
Sinon, en USB pur, comme le dit la doc Windev, on ne dialogue plus avec un port mais directement avec le matériel. On est donc contraint par les pilotes de chaque appareil. On doit alors soit gérer l'imprimante avec les fonctions iConfigure, iParamètres etc.... sachant que les paramètres spécifiques de l'imprimante ne sont pas gérés directement par Windev. Il faut créer un buffer dans lequel stocker le contenu de iParamètresSpécifiques après avoir fait le paramétrage voulu dans les pilotes. Ainsi, on peut gérer plusieurs configs. Notamment le choix des polices.

Pour le problème de police, chaque imprimante gère en général plusieurs polices par défaut. En ouvrant les propriétés de l'imprimante, on trouve en général une liste de polices. En fonction de celle sélectionnée lors de l'impression, la vitesse varie. Généralement, il y a d'ailleurs une police CONTROL qui permet de piloter l'imprimante sur des ordres simples (coupe ticket, ouverture tiroir etc...). Ainsi, pour imprimer puis couper, il faut passer d"une police d'impression à la police CONTROL. (voir iPolice, iCréePolice...).

Pour le pilotage des fonctions spécifiques à ces imprimantes (chèque, lecture piste, retournements etc..), soit on installe une couche supplémentaire OPOS, dont on trouve des pilotes universels UPOS. Mais il faut rajouter en plus les pilotes spécifiques à chaque imprimante puis configurer les pilotes OPOS par imprimante... Cela permet dans un programme de passer un ordre à la couche OPOS qui se débrouillera avec le périphérique. Ce n'est que théorique car je n'ai pas mis ceci en oeuvre, trop lourd niveau système vu le degré d'inconnu sur le sujet. L'autre possibilité est d'appeler directement les DLL de chaque matériel. Elles sont installées lors de l'installation des pilotes. Il faut juste trouver la doc expliquant l'utilisation des API pour connaître le nom de la DLL à charger ainsi que des fonctions à utiliser. Et là, c'est le début d'une nouvelle aventure... selon le matériel utilisé et la doc disponible.

Je pense qu'il y a encore beaucoup à dire sur le sujet. Pour résumer, si vous trouvez sLit, sOuvre etc... c'est du dialogue par port COM donc imprimante reliée par Port Parallèle. Si USB pur, passez votre chemin, SAUF ERREUR (car j'ai essayé) !

Je pense que sujet assez vaste pourrait faire partie d'un traitement à part sur le site car assez récurrent, bien qu'il ne soit pas particulièrement spécifique à Windev au final (vu ce type de sujets en delphi, VB etc...).
Miembro registrado
234 mensajes
Publicado el 12,agosto 2014 - 15:12
Bonjour

de plus en plus des constructeurs proposent pour les imprimantes tickets en USB,des virtuals ports USB-> Serie

Ce qui fait que ton programme que tu as ecris pour une imprimante tickets en serie, marche sans aucun changement en passant par
ce driver

Voir le driver pour une espon par exemple :
https://download.epson-biz.com/modules/pos/index.php…


Olivier
Publicado el 26,julio 2019 - 14:35
serais tu le Bertrand avec qui j'ai travaillé il y a un moment , de Sophia...???
si oui je pense que tu es la personne ideale pour moi , je cherche des exemple tout simple pour gerer l'impression , le tiroir et le douchette via les OPOS, et on ne trouve pas grand chose qur le WEB et encore moins avec delphi.
a te lire
Miembro registrado
953 mensajes
Publicado el 29,julio 2019 - 10:21
bonjour,

pour les imprimantes tickets en USB , vous pouvez utiliser les fonctions iEscape() , cela permet d'envoyer les mêmes commandes à l'imprimante qu'avec les fonctions sEcrit()

c'est moins pratique que le virtual COM c'est certain, mais çà peu bien dépanner parfois.

Bon dèv