35

ライン プリンターが組み込まれた Android デバイス用のアプリケーションに取り組んでいます。私はこのプリンターと対話し、それを使用して領収書の詳細を印刷し、カッターでその領収書を自動的にカットする必要があります。いくつかの ESC コマンドを見たことがありますが、これらの ESC コマンドを実行する方法がわかりません。

Casio Device Printer に関して 3 つの主な問題があります。

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

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

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

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

3.レシートを必要な形式で印刷する方法がわかりません

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

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

4

1 に答える 1

28

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

    }

更新: サーマル プリンターによる画像の印刷

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

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

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

于 2013-04-09T09:29:50.950 に答える