Подтвердить что ты не робот

Как печатать с Thermal Printer в Android?

Я работаю над приложением для Android-устройства, которое будет иметь встроенный линейный принтер. Мне нужно взаимодействовать с этим принтером и использовать его для печати деталей при получении, а затем с резкой вырезать это квитанцию ​​автоматически. Я видел в нем несколько команд ESC, но я не знаю, как выполнять эти команды ESC.

У меня есть три основных вопроса, касающихся принтера Casio Device:

1. Я использовал код печати для сборки в принтере, но после печати резак не активирован

BuildinEx840 ex840 = new BuildinEx840();
int response = ex840.open();
System.out.println("ex840 open:" + response);

byte[] set = {
    'N', 'A', 'R', 'E', 'S', 'H', 'S', 'H', 'A', 'R', 'M', 'A', (byte) 0x0d, (byte) 0x0a
};

try {        

    ex840.write(set);   

} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

try {

    response = ex840.getEndStatus();
    System.out.println("getEndStatus:" + response);
    response = ex840.initCutter();
    ex840.close();    
    System.out.println("initCutter:" + response);

} catch (Exception e) {         
    e.printStackTrace();         
}

2. Я не знаю, как отправить команды ESC на принтер в android

Существует несколько команд, например ниже

ESC FF DataPrint,
[code]  <1B>H<OC>H,
[Function] Print all the data in the print area collectively.

Как мы можем выполнить эти команды ESC в android, программируя?

3. Я не знаю, как распечатать квитанцию ​​в требуемом формате

Есть несколько команд ESC для обеспечения полей слева и справа и некоторых других команд. Итак, как я могу распечатать данные в некоторых форматах и ​​изменить размер текста, а также некоторые другие параметры текста для печати.

Любая помощь приветствуется.

4b9b3361

Ответ 1

После работы в течение последних 7 дней я получил правильный способ получить распечатку, а затем разрезал эту квитанцию ​​резаком. Команды ESC очень важны для печати и других задач, связанных с принтером. Мы должны передать эти ESC CMD в виде массива байтов на линейный принтер.

Существует несколько команд, например ниже

ESC FF DataPrint,
[code]  <1B>H<OC>H,
[Function] Print all the data in the print area collectively.

Поэтому просто создайте массив байтов этой команды и передайте его на принтер.

e.g. byte[] print = {0x1b,0x0c};

теперь передайте его на принтер. В зависимости от принтера должен быть такой метод, как getCmd() или writeCmd() и т.д.

Как мы можем выполнить эти команды ESC в android, программируя? Ниже приведен код для этого

    BuildinEx840 lpd=new BuildinEx840();
            lpd.setMulticharMode(LinePrinterDeviceBase.CHARACTERSET_USA);
//initialise Cutter
            lpd.initCutter();
            LinePrinter lp=new LinePrinter();
            lp.open(lpd);
            lpd.open();
            try{
                lpd.init();
            }catch(IOException e){
                e.printStackTrace();
            }
            for(int i=0; i<5;i++){
                lp.printNormal("Testing the Line Printer");
            }
            int totalLinefeed=listofItemList.size();
//ESC CMD for line feeds
            byte[] lfs=new byte[]{0x1B,'d', 5};
            sendtoExprinter(lpd,lfs);
//ESC CMD for paper cut
            lfs=new byte[]{0x1B,'i'};
            sendtoExprinter(lpd, lfs);

private void sendtoExprinter(BuildinEx840 dev, byte[] instr) {
        try{
            dev.write(instr);
        }catch(IOException e){
            e.printStackTrace();
        }

    }

ОБНОВЛЕНИЕ: Печать изображения через термопринтер

В некоторых принтерах вы можете определить изображение в энергонезависимой памяти принтера, а затем распечатать изображение с помощью ESC cmd 1C 70 01 30. В некоторых других принтерах вы можете указать прямой путь изображения при печати изображения через термопринтер.

В любом линейном принтере мы должны передать ESC CMD этой командой printerObj.write(command);. Я хочу поблагодарить SO сообщество и особую благодарность TheBlastOne, который вел меня по правильному пути.

Если у кого-то есть проблемы с интеграцией термопринтеров, не стесняйтесь спрашивать.