Как печатать с термопринтера в Android?

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

у меня есть три основные проблемы, касающиеся принтера устройства Casio:

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

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 доступны для предоставления поля слева и справа и некоторые другие команды. Так как я могу распечатать данные, в каком формате и можно изменить размер текста, а также некоторые другие параметры текста для печати.

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

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.написать (команда); путь. Я хочу поблагодарить SO community и особую благодарность TheBlastOne, который направил меня на правильный путь.

если кто-то имеет любую проблему в интегрировать термальные принтеры, то чувствуйте свободным спросить.