Печать на термопринтер (DPP 450) из приложения для Android

Я разрабатываю приложение Java для Android, которое использует термопринтеры для печати накладных.

На самом деле у меня есть две модели принтеров, которые нормально печатают через Bluetooth (используя ESC / POS), но когда я пытаюсь сделать это с помощью DPP-450 (который поддерживает ESC / POS), он подключается нормально через Bluetooth, но ничего не печатает.

Я печатаю так:

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.

Может кто-нибудь мне помочь?


person Kevin Ruiz    schedule 09.03.2017    source источник


Ответы (2)


Я нашел проблему.

Кажется, что этот принтер использует канал для его определения (никакая другая попытка не решила мою проблему), и позже я адаптировал код для своего приложения, я публикую способ, которым я решил это:

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

Надеюсь, это поможет кому-то еще! :)

person Kevin Ruiz    schedule 09.03.2017

Поскольку код работает на других похожих принтерах, вероятно, проблема не в представленном вами коде.

Вам придется систематически устранять неполадки:

  • Принтер работает на другом компьютере? Может просто сломано.
  • Можете ли вы подключиться к нему с помощью простой программы со своего настольного компьютера? Это исключает любые проблемы, связанные с Android.

Попробуйте эти шаги, а затем продолжайте оттуда ...

person sleske    schedule 09.03.2017
comment
Во-первых, спасибо за вопрос. Я пробовал, и да, эти два шага работают без проблем. В примере из sdk, предоставленном производителем принтера, есть код для печати, например textBuffer.append ({reset} {right} {w} {h} TOTAL: {/w}$3.00 {br}); textBuffer.append ({br}); textBuffer.append ({reset} {center} {s} Спасибо! {br}); printer.reset (); printer.printTaggedText (textBuffer.toString ()); Но поправьте меня, если я ошибаюсь, используя ESC / POS, мой код должен работать, верно? - person Kevin Ruiz; 09.03.2017
comment
Извините за такой фрагмент кода, я немного новичок в этом. - person Kevin Ruiz; 09.03.2017