如何从Android中的热敏打印机打印吗?(How to print from the Therma

2019-08-18 05:04发布

我的工作的,将有一个内置的行式打印机的Android设备的应用程序。 我要在此打印机交互,并用它来打印收据上,然后用切割机自动切断该收据细节。 我见过一些ESC在它的命令,但我不知道如何执行这些命令ESC。

我有一个关于卡西欧设备打印机三个主要问题:

1.I已用于生成打印码在打印机中,但打印后切割器不被激活

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通过编程机器人命令?

3. 我不知道如何打印收据所需的格式

有一些ESC命令可用于从左右两侧和其他一些命令提供了空间。 所以,我怎么能打印的数据在某些甲酸,并且可以更改要打印的文字的大小以及文本的一些其他设置。

任何帮助表示赞赏。

Answer 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通过编程机器人命令? 下面是代码这样做

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

    }

UPDATE: 打印通过热敏打印机的图像

在一些打印机可以定义在打印机的非易失性存储器中的图像,然后通过ESC CMD 1C 70 01 30从那里打印图像。 在一些其它的打印机,你可以在打印过程中通过热敏打印机的图像给图像的直接路径。

在任何行式打印机就需要通过这个printerObj.write(命令)来传递的ESC CMD; 办法。 我要感谢SO社区特别感谢TheBlastOne谁引导我正确的方式。

如果其在整合任何问题有人热敏打印机随时问。



文章来源: How to print from the Thermal Printer in Android?