web-dev-qa-db-ja.com

Androidのサーマルプリンターから印刷する方法は?

私はAndroidラインプリンターを内蔵するデバイス用のアプリケーションに取り組んでいます。 ESCコマンドをいくつか見ましたが、これらのESCコマンドを実行する方法がわかりません。

カシオデバイスプリンターに関する3つの主要な問題があります:

1。Build in printerで印刷コードを使用しましたが、印刷後にカッターがアクティブになりません

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。AndroidでESCコマンドをプリンターに送信する方法がわかりません

以下のようなコマンドがいくつかあります

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

プログラミングによって、これらのESCコマンドをAndroidで実行するにはどうすればよいですか?

3 .必要な形式で領収書を印刷する方法がわかりません

左右からマージンを提供するためのESCコマンドと、その他のコマンドがいくつかあります。それで、どのようにしてデータをある形式で印刷し、テキストのサイズや、印刷するテキストの他の設定を変更することができますか。

どんな助けも大歓迎です。

33
Naresh Sharma

最後の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()などのメソッドが必要です。

Androidプログラミングでこれらの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();
        }

    }

更新:サーマルプリンターで画像を印刷する

一部のプリンタでは、プリンタの不揮発性メモリで画像を定義し、そこからESC cmd 1C 70 01 を使用して画像を印刷できます。他のプリンタの一部では、サーマルプリンタを介して画像を印刷するときに画像の直接パスを指定できます。

どのラインプリンターでも、このprinterObj.write(command);方法でESC CMDを渡す必要があります。 SOコミュニティに感謝し、正しい方法に導いてくれたTheBlastOneに感謝します。

サーマルプリンターの統合に問題がある場合は、お気軽にお問い合わせください。

26
Naresh Sharma