2017-03-09 2 views
0

Je développe une application Android Java qui utilise des imprimantes thermiques pour imprimer les bons de livraison. En fait, j'ai deux modèles d'imprimante qui impriment ok via Bluetooth (en utilisant ESC/POS) mais quand j'essaye de le faire avec le DPP-450 (qui supporte ESC/POS), il se connecte bien via Bluetooth, mais n'imprime rien .Impression sur imprimante thermique (DPP 450) à partir de l'application Android

La façon dont j'imprimer est:

if (mbtSocket!=null && mbtSocket.isConnected()) { 
    inReader = mbtSocket.getInputStream(); 
    outReader = mbtSocket.getOutputStream(); 
    int s = inReader.available(); 
    outReader.write(setInitp); 
    String sendingmessage = "******************************" + "\n"; 
    byte[] send = sendingmessage.getBytes(); 
    outReader.write(send); 
    sendingmessage = "Esto es una prueba de impresión" + "\n"; 
    send = sendingmessage.getBytes(); 
    outReader.write(send); 
    outReader.flush(); 
    s = inReader.available(); 
    inReader.skip(0); 
} 

Ce morceau de code fonctionne sur mes deux autres imprimantes (Citizen CMP-40 et Star imprimante BTT), mais pas sur le DPP-450.

Quelqu'un pourrait m'aider s'il vous plaît?

Répondre

1

J'ai trouvé la question.

Il semble que cette imprimante utilise le canal d'une durée déterminée, il, (aucun autre essai résolu mon problème), et plus tard je me suis adapté le code à mon application, je posterai la façon dont je l'ai résolu:

inReader = mbtSocket.getInputStream(); 
outReader = mbtSocket.getOutputStream(); 
ProtocolAdapter mProtocolAdapter = new ProtocolAdapter(inReader, outReader); 
mPrinterChannel = mProtocolAdapter.getChannel(ProtocolAdapter.CHANNEL_PRINTER); 
Printer printer = new Printer(mPrinterChannel.getInputStream(), mPrinterChannel.getOutputStream()); 
try{ 
    textBuffer.append("{reset}{center}{s}Thank You!{br}"); 
    printer.reset(); 
    printer.printTaggedText(textBuffer.toString()); 
    printer.feedPaper(110); 
    printer.flush(); 
} catch(Exception e){ 
    e.printStackTrace(); 
    Log.e("Error: " + e, "Error"); 
} 

J'espère que cela aidera quelqu'un d'autre! :)

0

Comme le code fonctionne sur d'autres imprimantes similaires, le code que vous présentez n'est probablement pas le problème.

Vous devez résoudre ce systématiquement:

  • Est-ce que le travail de l'imprimante sur un autre ordinateur? Peut-être que c'est simplement cassé.
  • Pouvez-vous vous connecter à l'aide d'un programme simple à partir de votre ordinateur de bureau? Cela exclut tout problème spécifique à Android.

Essayez ces étapes, puis continuer à partir de là ...

+0

Tout d'abord merci de demander. Je l'ai essayé et oui, ces deux étapes fonctionnent sans problème. L'exemple de sdk fourni par le fabricant de l'imprimante, a un code pour imprimer comme textBuffer.append ("{reset} {right} {w} {h} TOTAL: {/w}$3.00 {br}"); textBuffer.append ("{br}"); textBuffer.append ("{reset} {center} {s} Merci! {Br}"); printer.reset(); printer.printTaggedText (textBuffer.toString()); Mais, corrigez-moi si je me trompe, en utilisant ESC/POS, mon code devrait fonctionner, non? –

+0

Désolé pour le morceau de code comme ceci, je suis un peu nouveau dans ceci. –