使用串行端口将ESC / POS命令发送到打印机

时间:2017-08-01 11:51:20

标签: java raspberry-pi

我有一台热敏打印机。我正在重写SDK。 我正在使用pi4j库通过串口发送ESC / POS命令。 我的问题是我不知道如何将整数发送到打印机,因为pi4j库不接受整数

这是我的功能

public void printAndFeed(String str, int feed) throws IOException {
    //escInit();
    serial.write(str);
    //output extra paper          ESC d n
    serial.write((char) 0x1B);
    serial.write("d");
    serial.write(feed);
}

错误就在这里

serial.write(feed);

命令参考:

  

ESC d n [名称]打印并输入n行[格式] ASCII ESC d n Hex 1B 64   n十进制27 100 n [范围]0≤n≤255[描述]打印数据   打印缓冲区并输入n行。 [注意]•此命令设置   将起始位置打印到行首。 •此命令   不影响ESC 2或ESC 3设置的行间距。•最大值   进纸量为1016 mm {40“}。如果纸张进给量为安装(n×线   间距)指定超过1016毫米{40“},打印机进纸   纸张只有1016毫米{40“}。[参考] ESC 2(默认线   间距),ESC 3(设置行间距)

pi4j参考 http://pi4j.com/apidocs/com/pi4j/io/ser ... e-char ...-

我试过这个: 代码可以接受:

            char[] F = new char[]{0x1B,'d',11};
            serial.write(F);

但它不接受此

            char[] F = new char[]{0x1B,'d',feed};
            printer.write(F);

1 个答案:

答案 0 :(得分:1)

@ Yazan,@ Mike Harris非常感谢你的帮助。 我按照他们的建议将所有整数转换为字节 代码是(如果有人遇到这个并需要帮助)

int feed=11; byte [] B=new byte[] {0x1B,'d',(byte)feed}; printer.write(B);