OVH Cloud OVH Cloud

[WD8] Information sur ESC/POS

18 réponses
Avatar
JeAn-PhI
bonjour,
j'ai pu glaner qq. infos sur le net mais je voudrais savoir si j'ai tout
compris.
j'ai pu voir notamment qu'il existe des drivers Windows pour les imprimantes
TM avec/sans afficheur DM
est ce qu'il permette directement l'impression via des états WinDev ?
si oui comment faut-il concevoir l'état ?

doit-on obligatoirement se servir des fonction sEcrit() pour
imprimer/afficher des infos ?

PS : j'ai en ma possession 2 documents très bien fait (en anglais) que j'ai
récupérer sur un site dont je ne me rappelle plus, il se nomme Online guide
to programming for printers conçut par Epson. il contient toutes les infos
concernant les TM - H5000, U375, U925, U325D, U300C/D, T88II, L60II, U200B/D
et U300A/B que je peux mettre à disposition.

cdt

--
Pour me joindre :
JeAn-PhI
http://cerbermail.com/?J3xMAsDRJ4


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.808 / Virus Database: 550 - Release Date: 08/12/2004

10 réponses

1 2
Avatar
jacques.trepp
JeAn-PhI avait prétendu :
bonjour,
j'ai pu glaner qq. infos sur le net mais je voudrais savoir si j'ai tout
compris.
j'ai pu voir notamment qu'il existe des drivers Windows pour les imprimantes
TM avec/sans afficheur DM
est ce qu'il permette directement l'impression via des états WinDev ?
si oui comment faut-il concevoir l'état ?

doit-on obligatoirement se servir des fonction sEcrit() pour
imprimer/afficher des infos ?

PS : j'ai en ma possession 2 documents très bien fait (en anglais) que j'ai
récupérer sur un site dont je ne me rappelle plus, il se nomme Online guide
to programming for printers conçut par Epson. il contient toutes les infos
concernant les TM - H5000, U375, U925, U325D, U300C/D, T88II, L60II, U200B/D
et U300A/B que je peux mettre à disposition.

cdt



Bonjour,
perso, je préfère écrire directement sur le port série. Les drivers que
j'ai pu utiliser sont d'une lenteur désespérante :-(
C'est vrai aussi qu'on a des fois du mal à obtenir des infos sur les
séquences escape à passer pour changer de caractère. Je travaille avec
des CBM 1000 de Star (comparable à la TM-88 d'Epson)
En écrivant directement sur le port, ça dépote à 15 cm/seconde !
Alors non, je ne changerai pas mon baril de séquences escape contre 2
barils de pilotes windows. :D

--
Jacques Trepp
Albygest
Avatar
Bertrand
jacques.trepp a formulé ce jeudi :
JeAn-PhI avait prétendu :
bonjour,
j'ai pu glaner qq. infos sur le net mais je voudrais savoir si j'ai tout
compris.
j'ai pu voir notamment qu'il existe des drivers Windows pour les
imprimantes TM avec/sans afficheur DM
est ce qu'il permette directement l'impression via des états WinDev ?
si oui comment faut-il concevoir l'état ?

doit-on obligatoirement se servir des fonction sEcrit() pour
imprimer/afficher des infos ?

PS : j'ai en ma possession 2 documents très bien fait (en anglais) que j'ai
récupérer sur un site dont je ne me rappelle plus, il se nomme Online guide
to programming for printers conçut par Epson. il contient toutes les infos
concernant les TM - H5000, U375, U925, U325D, U300C/D, T88II, L60II,
U200B/D et U300A/B que je peux mettre à disposition.

cdt



Bonjour,
perso, je préfère écrire directement sur le port série. Les drivers que j'ai
pu utiliser sont d'une lenteur désespérante :-(



parce qu'ils impriment probable en mode graphique, ce qui par une
liaison série.....

C'est vrai aussi qu'on a des fois du mal à obtenir des infos sur les
séquences escape à passer pour changer de caractère. Je travaille avec des
CBM 1000 de Star (comparable à la TM-88 d'Epson)
En écrivant directement sur le port, ça dépote à 15 cm/seconde !
Alors non, je ne changerai pas mon baril de séquences escape contre 2 barils
de pilotes windows. :D



et pour éviter de s'emmerder avec les séquences Esc en question pour
chaque imprimante, il y a les OPOS.

Bertrand
Avatar
JeAn-PhI
"Bertrand" a écrit dans le message de
news: ...>
...
et pour éviter de s'emmerder avec les séquences Esc en question pour
chaque imprimante, il y a les OPOS.

Bertrand




je l'ai vu aussi comment cela fonctionne ?

cdt

--
Pour me joindre :
JeAn-PhI
http://cerbermail.com/?J3xMAsDRJ4


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.808 / Virus Database: 550 - Release Date: 08/12/2004
Avatar
JeAn-PhI
"jacques.trepp" a écrit dans le message de news
Bonjour,
perso, je préfère écrire directement sur le port série. Les drivers que
j'ai pu utiliser sont d'une lenteur désespérante :-(



avez-vous essayé le driver 301E ?
est-il lent ?

C'est vrai aussi qu'on a des fois du mal à obtenir des infos sur les
séquences escape à passer pour changer de caractère. Je travaille avec des
CBM 1000 de Star (comparable à la TM-88 d'Epson)



pour remédier à cela les fichiers dont j'ai parlé règle ce pb car en effet
ils contiennent toutes les commandes possibles. j'ai aussi les fonctions
spéciale pour les afficheurs (je crois que cela vous intéresse si mes
souvenirs sont bons)

Special Function for DM-D10x, 20x Printer Driver

Character Special Function

a Clear screen (CLR)

b Clear 1st line (CAN for 1st Line)

c Clear 2nd line (CAN for 2nd Line)

d Screen is always lighting

e Screen is blinking at 10x50msec intervals

f Screen is blinking at 20x50msec intervals.

G Screen is blinking at 40x50msec intervals

h Screen is blinking at 60x50msec intervals.

I Put out light with saving displayed contents.

J Set and display a counter time. (US T h m)

k Display a counter. (US U)

l Enable reversed character (US r n)

m Disable reversed character (US r n)

n Define macro process (US :)

o Do macro process (US ^ n m, n=5 m`)


En écrivant directement sur le port, ça dépote à 15 cm/seconde !
Alors non, je ne changerai pas mon baril de séquences escape contre 2
barils de pilotes windows. :D

--
Jacques Trepp
Albygest



pouvez-vous me donner qq. exemples ?
- sélection TM, DM ou les 2
- paramètre du port
- exemple de ticket

comment faire le cadrage des données à imprimer ?

le texte à écrire sur le ticket est envoyé ligne par ligne au port ou par
une variable contenant le texte à imprimer ?

désolé pour toutes ces questions mais j'aimerais avant de me lancer sur
cette prog un maximum d'infos pour bien commencer

Cdt

--
Pour me joindre :
JeAn-PhI
http://cerbermail.com/?J3xMAsDRJ4


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.808 / Virus Database: 550 - Release Date: 08/12/2004
Avatar
Bertrand
JeAn-PhI vient de nous annoncer :
"Bertrand" a écrit dans le message de news:
...>
...
et pour éviter de s'emmerder avec les séquences Esc en question pour chaque
imprimante, il y a les OPOS.

Bertrand




je l'ai vu aussi comment cela fonctionne ?

cdt



je t'ai répondu par mail....

Bertrand
Avatar
JeAn-PhI
"Bertrand" a écrit dans le message de
news:
...
je t'ai répondu par mail....

Bertrand




thnx a lot :)

--
Pour me joindre :
JeAn-PhI
http://cerbermail.com/?J3xMAsDRJ4


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.808 / Virus Database: 550 - Release Date: 08/12/2004
Avatar
JeAn-PhI
"Bertrand" a écrit dans le message de
news:
JeAn-PhI vient de nous annoncer :
"Bertrand" a écrit dans le message de
news:




...

je t'ai répondu par mail....

Bertrand




je ne le trouve pas. quand l'avez postez ? il est peut être passer à la
trappe à cause de mon anti spam.

cdt


--
Pour me joindre :
JeAn-PhI
http://cerbermail.com/?J3xMAsDRJ4


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.808 / Virus Database: 550 - Release Date: 08/12/2004
Avatar
jacques.trepp
JeAn-PhI a utilisé son clavier pour écrire :
"jacques.trepp" a écrit dans le message de news
Bonjour,
perso, je préfère écrire directement sur le port série. Les drivers que
j'ai pu utiliser sont d'une lenteur désespérante :-(



avez-vous essayé le driver 301E ?
est-il lent ?

C'est vrai aussi qu'on a des fois du mal à obtenir des infos sur les
séquences escape à passer pour changer de caractère. Je travaille avec des
CBM 1000 de Star (comparable à la TM-88 d'Epson)



pour remédier à cela les fichiers dont j'ai parlé règle ce pb car en effet
ils contiennent toutes les commandes possibles. j'ai aussi les fonctions
spéciale pour les afficheurs (je crois que cela vous intéresse si mes
souvenirs sont bons)

Special Function for DM-D10x, 20x Printer Driver

Character Special Function

a Clear screen (CLR)

b Clear 1st line (CAN for 1st Line)

c Clear 2nd line (CAN for 2nd Line)

d Screen is always lighting

e Screen is blinking at 10x50msec intervals

f Screen is blinking at 20x50msec intervals.

G Screen is blinking at 40x50msec intervals

h Screen is blinking at 60x50msec intervals.

I Put out light with saving displayed contents.

J Set and display a counter time. (US T h m)

k Display a counter. (US U)

l Enable reversed character (US r n)

m Disable reversed character (US r n)

n Define macro process (US :)

o Do macro process (US ^ n m, n=5 m`)


En écrivant directement sur le port, ça dépote à 15 cm/seconde !
Alors non, je ne changerai pas mon baril de séquences escape contre 2
barils de pilotes windows. :D

-- Jacques Trepp
Albygest



pouvez-vous me donner qq. exemples ?
- sélection TM, DM ou les 2
- paramètre du port
- exemple de ticket

comment faire le cadrage des données à imprimer ?

le texte à écrire sur le ticket est envoyé ligne par ligne au port ou par une
variable contenant le texte à imprimer ?

désolé pour toutes ces questions mais j'aimerais avant de me lancer sur cette
prog un maximum d'infos pour bien commencer

Cdt


initialisation des codes de l'imprimante :

cGras,cExpend sont des chaînes
cCoupe,cMessDup,cLogo,cTiroir sont des chaînes
cGras = Caract(27)+ Caract(33)+ Caract(8)
cExpend = Caract(27)+ Caract(33)+ Caract(32)
cCoupe = Caract(27)+ Caract(105)
cLogo = Caract(28) + Caract(112) + Caract(1) + Caract(0)
cTiroir = Caract(27)+"p"+Caract(00)+Caract(50)+Caract(150)


Exemple 1 : afficher la date et l'heure (style pendule) sur le viseur :
// Ouverture du port viseur
sOuvre(g_ePortViseur, 5000, 5000, 5000)
// Initialise les paramètres du port viseur
LOCAL
eVitesse,eParite,eLong,eStop sont des entiers

eVitesse = Val(ExtraitChaîne(p_cPerif,2))
eParite = Val(ExtraitChaîne(p_cPerif,3))
eLong = Val(ExtraitChaîne(p_cPerif,4))
eStop = Val(ExtraitChaîne(p_cPerif,5))

sFixeParamètre(p_ePort,eVitesse,eParite,eLong,eStop,Faux,Faux,Faux)



PROCEDURE Affiche_Date_Heure()
htime est une Heure = HeureSys()
g_clig_Viseur =
Caract(12)+Caract(13)+Caract(31)+Caract(84)+Caract(htime..Heure)+Caract(htime..Minute)+...
Caract(13)+Complète(DateVersJourEnLettre(DateSys()),10)+DateVersChaine(DateSys())+Caract(10)
sEcrit(g_ePortViseur,g_clig_Viseur)

Exemple 2 : Afficher le ligne facturée et le solde dû

g_clig_Viseur =
Caract(12)+Caract(13)+Complète(cLib,12)+NumériqueVersChaine(mAmt,"6.2f")+RC+...
Caract(13)+Complète("SOLDE
**",10)+NumériqueVersChaine(Facturation.SOLDE,"8.2f")+Caract(10)
sEcrit(g_ePortViseur,g_clig_Viseur)

Exemple 3 : impression ticket
// ------------------------------------------------- lecture ticket
g_eRetour = PVT:SQLLitRecherche("id_point_vente = 1")
SI g_eRetour = 0 ALORS
Erreur("Les paramètres Société sont vides !")
FIN
SI SansEspace(PVT:m_ADR1) <> "" ALORS
sligne = cGras + Répète("
",PartieEntière(((48-Taille(PVT:m_ADR1))/2))) + PVT:m_ADR1 +
Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
SI SansEspace(PVT:m_ADR2) <> "" ALORS
sligne = cGras + Répète("
",PartieEntière(((48-Taille(PVT:m_ADR2))/2))) + PVT:m_ADR2 +
Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
sligne = cGras + Répète("
",PartieEntière(((48-Taille(PVT:m_CP_VILLE))/2))) + PVT:m_CP_VILLE +
Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète(" ",PartieEntière(((48-Taille(PVT:m_TEL))/2)))
+ PVT:m_TEL + Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)
// ----------------------------------- en-tète ticket
n_caissier est une chaîne
g_eRetour = CA:SQLLitRecherche("id_caissier = "+ETK:m_CAISSIER)
SI g_eRetour = 1 ALORS
n_caissier = CA:m_LIBELLE
SINON
n_caissier = "CAISSIER"
FIN
sligne = cGras + "LE "+DateVersChaine(ETK:m_DATFCT) + " A "+
Complète(ETK:m_HRFCT,32-Taille(n_caissier)) + n_caissier + Caract(10)
sEcrit(g_ePortTicket,sligne)
//sligne = cGras + "Ticket No : " +cExpend+
NumériqueVersChaine(etk:m_ID_TICKET,"05d")+cGras+" Caisse No :
"+cExpend+g_cNumPoste + caract(10)
//sEcrit(g_ePortTicket,sligne)
sligne = cGras + "Ticket No : " +cExpend+
NumériqueVersChaine(ETK:m_NUM_TICKET,"05d") + Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras+"Caisse No : "+cExpend+g_cNumPoste + Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)


sligne = cGras + " DESIGNATION QTE PX UNIT
MONTANT"+Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)

SI cMessDupli <> "" ALORS
sligne = cExpend + cMessDupli + cGras + Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
lbligne est une chaîne = "Article inconnu !"
LTK:SQLFiltre("id_ticket = "+eLast, "ORDER BY ORDRE")
LTK:SQLPremier()
TANTQUE PAS LTK:endehors
g_eRetour = ART:SQLLitRecherche("id_art = "+LTK:m_ID_ART)
SI g_eRetour = 1 ALORS
lbligne = ART:m_LIB_BT
FIN
SI LTK:m_TYPE_LG = "ST" ALORS lbligne = "** SOUS-TOTAL **"
SI LTK:m_TYPE_LG = "REM" ALORS lbligne = "Remise "+LTK:m_POURCENT+"%"
SI LTK:m_TYPE_LG = "ANL" ALORS
sligne = Répète("*",8)+"ANNULATION"
sEcrit(g_ePortTicket,sligne+Caract(10))
FIN
sligne = Complète(lbligne,14) +
NumériqueVersChaine(LTK:m_QTE,"10.3f")...
+ NumériqueVersChaine(LTK:m_PXVTTC,"10.2f")+
NumériqueVersChaine(LTK:m_QTE*LTK:m_PXVTTC,"12.2f")
sEcrit(g_ePortTicket,sligne+Caract(10))
SI LTK:m_TYPE_LG = "ART" OU LTK:m_TYPE_LG = "ANL" ALORS
nbart += LTK:m_QTE
FIN
SI LTK:m_TYPE_LG = "ART" OU LTK:m_TYPE_LG = "ANL" OU LTK:m_TYPE_LG =
"REM" ALORS
Calcul_tva(LTK:m_QTE*LTK:m_PXVTTC,ART:m_ID_TVA)
FIN
LTK:SQlSuivant()
FIN
sligne = cGras + "NB ART" + NumériqueVersChaine(nbart,"8.0f") +
Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)

// ------------------------------------ récap ht et tva
sligne = cGras + " TAUX HORS TAXES T.V.A.
T.T.C."+Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)

SI tmTVA[1] > 0 ALORS
// sligne = cGras + complete(" 5.50%",14) +
NumériqueVersChaine(tmTVA[1],"10.2f") + caract(10)
sligne = Complète("Exonere",14) +
NumériqueVersChaine(tmHT[1],"10.2f")...
+ NumériqueVersChaine(tmTVA[1],"10.2f")+
NumériqueVersChaine(tmHT[1]+tmTVA[1],"12.2f") + Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
SI tmTVA[2] > 0 ALORS
// sligne = cGras + complete(" 5.50%",14) +
NumériqueVersChaine(tmTVA[1],"10.2f") + caract(10)
sligne = Complète(" 5.50%",14) +
NumériqueVersChaine(tmHT[2],"10.2f")...
+ NumériqueVersChaine(tmTVA[2],"10.2f")+
NumériqueVersChaine(tmHT[2]+tmTVA[2],"12.2f") + Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
SI tmTVA[3] > 0 ALORS
// sligne = cGras + complete("TVA 19.6%",14) +
NumériqueVersChaine(tmTVA[2],"10.2f") + caract(10)
sligne = Complète("19.60%",14) +
NumériqueVersChaine(tmHT[3],"10.2f")...
+ NumériqueVersChaine(tmTVA[3],"10.2f")+
NumériqueVersChaine(tmHT[3]+tmTVA[3],"12.2f") + Caract(10)
sEcrit(g_ePortTicket,sligne)
FIN
//sligne = cGras + complete("NET HT",14) +
NumériqueVersChaine(tmHT[1]+tmHT[2],"10.2f") + caract(10)
//sEcrit(g_ePortTicket,sligne)
// ------------------------------------ règlements
sligne = cGras + Répète("-",48) + Caract(10)
sEcrit(g_ePortTicket,sligne)
sligne = cExpend + Complète("TOTAL",13) +
NumériqueVersChaine(ETK:m_MTTTC,"10.2f") + Caract(10)
sEcrit(g_ePortTicket,sligne)
RTK:SQLFiltre("id_ticket = "+eLast)
RTK:SQLPremier()
TANTQUE PAS RTK:endehors
g_eRetour = MR:SQLLitRecherche("id_regl = "+RTK:m_ID_REGL)
sligne = cExpend + Complète(MR:m_LIBELLE,13) +
NumériqueVersChaine(RTK:m_MT_REGLE,"10.2f") + Caract(10)
sEcrit(g_ePortTicket,sligne)
RTK:SQlSuivant()
FIN


// ------------------------------------ sauts de ligne et massicot
sligne = Répète( Caract(10),4)
sEcrit(g_ePortTicket,sligne)
sligne = cCoupe
sEcrit(g_ePortTicket,sligne)
sligne = cLogo
sEcrit(g_ePortTicket,sligne)

Voilà

--
Jacques Trepp
Albygest
Avatar
Bertrand
> je ne le trouve pas. quand l'avez postez ? il est peut être passer à la
trappe à cause de mon anti spam.




je ne pense pas.
simplement moi être wanadien....
or le temps de transfert d'un email entre wanadoo et free est assez
comique !
ça peut atteindre parfois plusieurs heures.
Avatar
jacques.trepp
Bertrand avait écrit le 10/12/2004 :
je ne le trouve pas. quand l'avez postez ? il est peut être passer à la
trappe à cause de mon anti spam.




je ne pense pas.
simplement moi être wanadien....
or le temps de transfert d'un email entre wanadoo et free est assez comique !
ça peut atteindre parfois plusieurs heures.



pareil dans le sens free - wanadoo :-@
on se demande quel age ils ont !

--
Jacques Trepp
Albygest
1 2