将PCL命令发送到蓝牙打印机

时间:2014-06-25 12:13:37

标签: android pdf printing bluetooth printer-control-language

我制作了Android应用程序,它将PCL命令发送到BT打印机(HP Officejet 100)。问题是当我发送字符串数据(PCL命令)时,打印机不识别这些命令并打印所有这些命令,如普通字符串。知道为什么打印机不能识别命令吗?我的完整代码在这里:CODE

我也尝试将charset更改为US-ASCII,UTF-8但无法识别PCL命令。

第二个问题:有什么方法可以将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();
    }
}

2 个答案:

答案 0 :(得分:2)

您不应该使用字符串文字“< ESC >”,因为它期望ASCII / UTF-8转义字符(十进制27或十六进制1B)。相反,你应该声明一个char变量:

public final static char CHAR_ESC = 0x1B;

并改为使用

字符串msg = CHAR_ESC +“%-12345X @ PJL评论开始工作 \ n”+ ...

答案 1 :(得分:0)

CR和LF也应该用ASCII字符替换。