PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Android Imprimante Bluetooth en CPCL
Android Imprimante Bluetooth en CPCL
Débuté par JEQUIDET, 02 déc. 2016 10:25 - 11 réponses
Membre enregistré
66 messages
Popularité : +6 (6 votes)
Posté le 02 décembre 2016 - 10:25
Bonjour

je veux imprimer en Android avec une imprimante Bluetooth en CPCL en utilisant les sockets (Gracies W. Fernando)
voici mon code
tw est une chaîne="SerialPortServiceClass_UUID" //nom du service
adrimp est une chaîne="00:13:7B:5D:EA:8D" //adresse Citizen CMP-30L en CPCL
sk est une chaîne="Test" // nom socket
sp est une chaîne="$" //séparateur de socket

//a imprimer
imp est une chaîne =""

imp="! 0 200 200 210 2 "+RC

imp+="TEXT 1 0 10 10 COUCOU "+RC
imp+="TEXT 1 0 20 28 toto "+RC
imp+="TEXT 2 0 25 40 TITI "+RC
imp+="TEXT 3 0 27 28 ZoZO "+RC
imp+="TEXT 1 0 50 30 DATE = "+DateVersChaîne(DateSys)+" "+RC
imp+="PRINT"+RC+RC+RC

//

SI PAS SocketConnectBluetooth(sk,tw,adrimp,8000) ALORS
Info("connexion impossible "+ErreurInfo())
SINON
SocketChangeModeTransmission(sk,SocketMarqueurFin,sp)
SI SocketEcrit(sk,(imp+sp))=Faux ALORS Erreur(ErreurInfo())
SocketFerme(sk)
FIN


en exécution l'imprimante imprime :

TEXT 1 0 10 10 COUCOU
TEXT 1 0 20 28 toto
TEXT 2 0 25 40 TITI
TEXT 3 0 27 28 ZoZO
TEXT 1 0 50 30 DATE = 02/12/2016
PRINT

visiblement le codage CPCL n'est pas pris en compte ou peut-être l'erreur
merci d'avance
Posté le 02 décembre 2016 - 13:40
Bonjour

je ne connais pas ce codage spécifiquement, mais normalement, les codes
de contrôles, ce n'est pas du texte simple (ou l'imprimante ne saurait
pas comment les différencier du texte, justement)

Donc, les codes de contrôles sont en général binaire, pas chaine, et
doivent être envoyées avec la fonction iEscape quand on imprime normalement.

Dans ton cas (par socket), utilise un buffer pour préparer ton envoi et
mets dedans les valeurs binaires des codes de controle

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com

Le 12/2/2016 à 4:25 AM, JEQUIDET a écrit :
Bonjour

je veux imprimer en Android avec une imprimante Bluetooth en CPCL en
utilisant les sockets (Gracies W. Fernando)
voici mon code
tw est une chaîne="SerialPortServiceClass_UUID" //nom du service
adrimp est une chaîne="00:13:7B:5D:EA:8D" //adresse Citizen CMP-30L en CPCL
sk est une chaîne="Test" // nom socket
sp est une chaîne="$" //séparateur de socket

//a imprimer
imp est une chaîne =""

imp="! 0 200 200 210 2 "+RC

imp+="TEXT 1 0 10 10 COUCOU "+RC
imp+="TEXT 1 0 20 28 toto "+RC
imp+="TEXT 2 0 25 40 TITI "+RC
imp+="TEXT 3 0 27 28 ZoZO "+RC
imp+="TEXT 1 0 50 30 DATE = "+DateVersChaîne(DateSys)+" "+RC
imp+="PRINT"+RC+RC+RC

//

SI PAS SocketConnectBluetooth(sk,tw,adrimp,8000) ALORS
Info("connexion impossible "+ErreurInfo())
SINON
SocketChangeModeTransmission(sk,SocketMarqueurFin,sp)
SI SocketEcrit(sk,(imp+sp))=Faux ALORS Erreur(ErreurInfo())
SocketFerme(sk)
FIN


en exécution l'imprimante imprime :

TEXT 1 0 10 10 COUCOU TEXT 1 0 20 28 toto TEXT 2 0 25 40 TITI TEXT 3 0
27 28 ZoZO TEXT 1 0 50 30 DATE = 02/12/2016
PRINT

visiblement le codage CPCL n'est pas pris en compte ou peut-être l'erreur
merci d'avance
Membre enregistré
66 messages
Popularité : +6 (6 votes)
Posté le 02 décembre 2016 - 16:48
Re

je me réponds à moi même pour eviter aux autres de chercher
voic le code qui marche
tw est une chaîne="SerialPortServiceClass_UUID" //nom du service
adrimp est une chaîne="00:13:7B:5D:EA:8D" //adresse Citizen CMP-30L en CPCL
sk est une chaîne="Test" // nom socket
sp est une chaîne="$" //séparateur de socket


//a imprimer
Imp est une chaîne=""

Imp="! 0 200 200 210 2 "+RC

Imp+="TEXT 1 0 10 10 COUCOU "+RC
Imp+="TEXT 1 0 20 28 toto "+RC
Imp+="TEXT 2 0 25 40 TITI "+RC
Imp+="TEXT 3 0 27 28 ZoZO "+RC
Imp+="TEXT 1 0 50 50 DATE = "+DateVersChaîne(DateSys)+" "+RC
Imp+="PRINT"+RC+RC+RC

//il faut passer par un buffer et envoyer son UnicodeVersAnsi

xbuf est un Buffer=Imp

SI PAS SocketConnectBluetooth(sk,tw,adrimp,8000) ALORS
Info("connexion impossible "+ErreurInfo())
SINON
SocketChangeModeTransmission(sk,SocketMarqueurFin,sp)
SI SocketEcrit(sk,(UnicodeVersAnsi(xbuf)+sp))=Faux ALORS Erreur(ErreurInfo())
SocketFerme(sk)
FIN


en fait , ce que l'on doit imprimer est à mettre dans un buffer et envoyer son code ANSI

Merci
Fabrice
Membre enregistré
123 messages
Popularité : +46 (46 votes)
Posté le 19 décembre 2016 - 13:45
very good

JEQUIDET a écrit :
Bonjour

je veux imprimer en Android avec une imprimante Bluetooth en CPCL en utilisant les sockets (Gracies W. Fernando)
voici mon code
tw est unechaîne="SerialPortServiceClass_UUID"//nom du service
adrimp est unechaîne="00:13:7B:5D:EA:8D"//adresse Citizen CMP-30L en CPCL
sk est unechaîne="Test"// nom socket
sp est unechaîne="$"//séparateur de socket

//a imprimer
imp est unechaîne=""

imp="! 0 200 200 210 2 "+RC

imp+="TEXT 1 0 10 10 COUCOU "+RC
imp+="TEXT 1 0 20 28 toto "+RC
imp+="TEXT 2 0 25 40 TITI "+RC
imp+="TEXT 3 0 27 28 ZoZO "+RC
imp+="TEXT 1 0 50 30 DATE = "+DateVersChaîne(DateSys)+" "+RC
imp+="PRINT"+RC+RC+RC

//

SI PASSocketConnectBluetooth(sk,tw,adrimp,8000)ALORS
Info("connexion impossible "+ErreurInfo())
SINON
SocketChangeModeTransmission(sk,SocketMarqueurFin,sp)
SISocketEcrit(sk,(imp+sp))=FauxALORSErreur(ErreurInfo())
SocketFerme(sk)
FIN


en exécution l'imprimante imprime :

TEXT 1 0 10 10 COUCOU
TEXT 1 0 20 28 toto
TEXT 2 0 25 40 TITI
TEXT 3 0 27 28 ZoZO
TEXT 1 0 50 30 DATE = 02/12/2016
PRINT

visiblement le codage CPCL n'est pas pris en compte ou peut-être l'erreur
merci d'avance


--
Atte. Willian Fernando
Membre enregistré
217 messages
Popularité : +12 (12 votes)
Posté le 29 décembre 2016 - 00:11
Bonjour et merci de votre retour JEQUIDET
Juste une petite question, Est ce que le code que vous fournissez concerne un modèle particulier d'imprimante ou peut être adapté à d'autre imprimante?
Membre enregistré
21 messages
Popularité : +3 (3 votes)
Posté le 20 juillet 2017 - 09:19
Bonjour

Et Vous avez une idée pour imprimer une image?

Merci
Membre enregistré
66 messages
Popularité : +6 (6 votes)
Posté le 20 juillet 2017 - 17:56
Bonjour

pour les images, elles doivent être en .PCX (Noir/Blanc)

ma doc de la CMP-30 Citizen indique
PCX 0 30 !<IMAGE.PCX

mais jamais testé

Bon courage et merci du retour
Membre enregistré
21 messages
Popularité : +3 (3 votes)
Posté le 24 juillet 2017 - 11:02
Ceci est le SDK envoyé par le fournisseur de mon imprimante bluetooth

byte[] sendData = null;
PrintPic pg = new PrintPic();
pg.initCanvas(384);
pg.initPaint();
pg.drawImage(0, 0, "/mnt/sdcard/icon.jpg");
sendData = pg.printDraw();
Finally forward the sendData to bluetooth Printer for image printing.


Et on m'a donné ce lien mais j'ai pas encore trouvé une issue pour imprimer une image
https://stackoverflow.com/questions/28741707/android-blutooth-printer-printing-html-text
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 août 2017 - 16:00
Bonjour,

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/1315-imprimindo-usando-windev-mobile-uma-impressora-bluetooth/read.awp

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 12 août 2017 - 16:01
Membre enregistré
217 messages
Popularité : +12 (12 votes)
Posté le 28 décembre 2018 - 11:50
Bonjour,
Je vous remercie de cette contribution!
Je suis confronté au même problème, lorsque j'envoi du texte en code CPCL à l'imprimante(via socketEcrit), le code CPCL est imprimé tel quel comme si que j'imprimais du texte brute. On doit peut être dire à l'imprimante que la chaine est un code CPCL mais comment ?
exemple si j'envoie à l'imprimante le buffer
TEXT 1 0 10 10 COUCOU
TEXT 1 0 20 28 toto
TEXT 2 0 25 40 TITI
TEXT 3 0 27 28 ZoZO
TEXT 1 0 50 30 DATE = 02/12/2016
PRINT

En exécution, ça imprime ce même texte :
TEXT 1 0 10 10 COUCOU
TEXT 1 0 20 28 toto
TEXT 2 0 25 40 TITI
TEXT 3 0 27 28 ZoZO
TEXT 1 0 50 30 DATE = 02/12/2016
PRINT

J'utilise bien votre code en faisant passer la chaine en buffer ansi via la fonction UnicodeVersAnsi()), ceci dit l'imprimante ne comprends pas qu'il s'agit d'un code CPCL
tw est unechaîne="SerialPortServiceClass_UUID"//nom du service
adrimp est unechaîne="00:13:7B:5D:EA:8D"//adresse Citizen CMP-30L en CPCL
sk est unechaîne="Test"// nom socket
sp est unechaîne="$"//séparateur de socket


//a imprimer
Imp est unechaîne=""

Imp="! 0 200 200 210 2 "+RC

Imp+="TEXT 1 0 10 10 COUCOU "+RC
Imp+="TEXT 1 0 20 28 toto "+RC
Imp+="TEXT 2 0 25 40 TITI "+RC
Imp+="TEXT 3 0 27 28 ZoZO "+RC
Imp+="TEXT 1 0 50 50 DATE = "+DateVersChaîne(DateSys)+" "+RC
Imp+="PRINT"+RC+RC+RC

//il faut passer par un buffer et envoyer son UnicodeVersAnsi

xbuf est un Buffer=Imp

SI PASSocketConnectBluetooth(sk,tw,adrimp,8000)ALORS
Info("connexion impossible "+ErreurInfo())
SINON
SocketChangeModeTransmission(sk,SocketMarqueurFin,sp)
SISocketEcrit(sk,(UnicodeVersAnsi(xbuf)+sp))=FauxALORSErreur(ErreurInfo())
SocketFerme(sk)
FIN
Posté le 29 janvier 2019 - 14:48
j'ai un probleme très sérieux je dois faire une application qui va imprimer des tickets avec windev mobile 20 mais je ne sais pas comment m'y prendre.
Posté le 20 juillet 2020 - 16:34
je voudrai que vous m'aidiez à imprimer un code barre sur impriment ticket via windev mobile