【问题标题】:Print to thermal printer (DPP 450) from Android app从 Android 应用程序打印到热敏打印机 (DPP 450)
【发布时间】:2017-07-30 04:19:45
【问题描述】:

我正在开发一个使用热敏打印机打印送货单的 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。

有人可以帮帮我吗?

【问题讨论】:

    标签: java android thermal-printer escpos


    【解决方案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");
    }
    

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

    【讨论】:

      【解决方案2】:

      由于代码可以在其他类似的打印机上运行,​​因此您提供的代码可能不是问题。

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

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

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

      【讨论】:

      • 首先感谢您的提问。我试过了,是的,这两个步骤没有问题。打印机制造商提供的 sdk 示例中的打印代码如 textBuffer.append("{reset}{right}{w}{h}TOTAL: {/w}$3.00 {br}"); textBuffer.append("{br}"); textBuffer.append("{reset}{center}{s}谢谢!{br}");打印机.reset();打印机.printTaggedText(textBuffer.toString());但是,如果我错了,请纠正我,使用 ESC/POS,我的代码应该可以工作,对吧?
      • 抱歉这段代码,我在这方面有点新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2023-03-17
      • 2013-03-16
      • 2022-12-19
      • 2013-03-20
      • 2016-05-05
      • 2013-11-11
      相关资源
      最近更新 更多