2017-03-09 175 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

對不起,這樣的代碼,我有點新。 –