Java 使用串行端口向打印机发送ESC/POS命令
我有一台热敏打印机。我正在重新编写SDK。 我正在使用pi4j库通过串行端口发送ESC/POS命令。 我的问题是我不知道如何将整数发送到打印机,因为pi4j库不接受整数 这是我的职责Java 使用串行端口向打印机发送ESC/POS命令,java,raspberry-pi,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 seri
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十六进制1B 64
n十进制27 100 n[范围]0≤N≤255[说明]打印中的数据
打印缓冲区和馈送n行。[注意]•此命令设置
将起始位置打印到行首。•此命令
不影响ESC 2或ESC 3设置的行距最大值
送纸量为1016mm{40}。如果进纸量为n×线
打印机进纸时,指定的间距大于1016 mm{40}
这张纸只有1016毫米{40}。[参考]ESC 2默认行
间距,ESC 3设置行间距
pi4j参考
... 电子字符-
我试过这个:
代码可以接受:
char[] F = new char[]{0x1B,'d',11};
serial.write(F);
但它不接受这一点
char[] F = new char[]{0x1B,'d',feed};
printer.write(F);
@亚赞,@Mike Harris非常感谢你的帮助。 我按照他们的建议将所有整数转换为字节 代码是如果有人遇到这个问题需要帮助 int-feed=11; 字节[]B=新字节[]{0x1B,'d',bytefeed};
printer.writeB write方法是否有一个接受byte[]的版本?我同意@Yazan的说法:您应该通过OutputStream类型的接口发送字节,而不是通过Writer发送char/String。您发布到pi4j引用的链接已断开,因此我无法判断这是否可行。是的,编写器接受byte[],这是工作链接:@Yazan我已尝试byte,没有错误。你认为代码是正确的吗?字节[]B1=新字节[]{0x1B,'d',bytefeed};printer.writeB1;是的,Ammar,我认为这就是您需要发送命令的方式,只要确保'd'正确地转换为byte,否则我建议使用d.getBytes并将其插入到URB1数组中