2017-03-09 158 views
0

我正在开发一个使用热敏打印机打印送货单的Android Java应用程序。从Android应用打印到热敏打印机(DPP 450)

其实我有两台打印机型号可以通过蓝牙打印(使用ESC/POS),但是当我尝试使用DPP-450(支持ESC/POS)进行打印时,它可以通过蓝牙连接,但不会打印任何内容。

我打印的方式是:

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); 
} 

这段代码工作在我的其他两台打印机(西铁城CMP-40和星打印机BTT),但没有对DPP-450。

有人能帮我吗?

回答

1

我已经找到了问题。

看来,这台打印机使用的信道确定的话,(没有其他尝试解决我的问题),后来我适应代码到我的应用程序,我的帖子我解决它的办法:

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"); 
} 

希望这可以帮助别人! :)

0

由于代码适用于其他类似的打印机,因此您提供的代码可能不是问题。

您将有系统地解决此:

  • 是否与其他计算机上的打印机的工作?也许它是简单的破碎。
  • 您可以使用桌面计算机上的简单程序连接到它吗?这排除了任何Android特定的问题。

请尝试以下步骤,然后再从那里继续...

+0

首先感谢问。 我试过了,是的,这两个步骤没有问题。 打印机制造商提供的sdk示例具有用于打印的代码,如 textBuffer.append(“{reset} {right} {w} {h} TOTAL:{/w}$3.00 {br}”); text2Buffer.append(“{br}”); textBuffer.append(“{reset} {center} {s} Thank You!{br}”); printer.reset(); printer.printTaggedText(textBuffer.toString()); 但是,纠正我,如果我错了,使用ESC/POS,我的代码应该工作,对不对? –

+0

对不起,这样的代码,我有点新。 –

相关问题