首页 文章

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

提问于
浏览
0

我正在开发一个使用热敏打印机打印送货单的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打印机BTT),但不适用于DPP-450 .

有人可以帮我吗?

2 回答

  • 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的问题 .

    尝试这些步骤,然后从那里继续......

相关问题