2

PCLコマンドをBTプリンター(HP Officejet 100)に送信するAndroidアプリを作成します。問題は、文字列データ (PCL コマンド) を送信すると、プリンターがこれらのコマンドを認識せず、これらすべてのコマンドを通常の文字列のように出力することです。プリンターがコマンドを認識しない理由は何ですか? ここに私の完全なコード: CODE

文字セットを US-ASCII、UTF-8 に変更してみましたが、PCL コマンドが認識されませんでした。

2 番目の質問: PDF ファイルを PCL に変換する方法、またはこのプリンターで PDF ファイルを印刷する必要がある場合の方法はありますか?

文字列を印刷できるようになりましたが、pdfや画像などを印刷することはできません。これを行う方法を見つけました。THXに助けを求めてください。

コードの一部:

    void sendCustomData() throws IOException {
    try {
        String msg =
                "<ESC>%-12345X@PJL COMMENT *Start Job* <CR><LF>\n" +
                        "@PJL JOB NAME = \"Sample Job #1\" <CR><LF>\n" +
                        "@PJL SET COPIES = 1 <CR><LF>\n" +
                        "@PJL SET RET = OFF <CR><LF>\n" +
                        "@PJL ENTER LANGUAGE = PCL <CR><LF>\n" +
                        "<ESC>E. . . . PCL job . . . .<ESC>E\n" +
                        "~<ESC>%-12345X@PJL <CR><LF>\n" +
                        "@PJL EOJ<CR><LF>\n" +
                        "<ESC>%-12345X";

        mOutputStream.write(msg.getBytes("ASCII"));
        tvStatus.setText("Custom data sent");
    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        closeBT();
        Toast.makeText(this, "BT conn closed", Toast.LENGTH_SHORT).show();
    }
}
4

2 に答える 2

2

ASCII/UTF-8 エスケープ文字 (10 進数 27、または 16 進数 1B) が想定されているため、文字列リテラル " <ESC "を使用しないでください。>むしろ、char 変数を宣言する必要があります。

public final static char CHAR_ESC = 0x1B;

代わりにそれを使用します

文字列 msg = CHAR_ESC + "%-12345X@PJL COMMENTジョブ開始\n" + ...

于 2015-01-08T22:52:57.590 に答える
0

CR と LF も ASCII 文字に置き換える必要があります。

于 2017-11-21T06:58:42.083 に答える