从Android应用打印到热打印机(DPP 450)



我正在开发一个使用热打印机打印输送笔记的Android Java应用程序。

实际上,我有两个通过蓝牙打印正常的打印机模型(使用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);
}

此代码适用于我的其他两台打印机(Citizen CMP-40和Star Printer BTT),但在DPP-450上不行。

有人可以帮我吗?

我找到了问题。

看来,该打印机使用该频道来确定它,(没有其他尝试解决我的问题),后来我将代码调整到了我的应用程序中,我发布了以下方式:

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

希望这对其他人有所帮助!:)

作为代码在其他类似打印机上工作时,您提出的代码可能不是问题。

您将必须系统地解决此问题:

  • 打印机在另一台计算机上工作吗?也许它只是被打破了。
  • 您可以使用桌面计算机的简单程序连接到它吗?这排除了任何特定于Android的问题。

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

相关内容

  • 没有找到相关文章