Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用串行端口向打印机发送ESC/POS命令_Java_Raspberry Pi - Fatal编程技术网

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

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

我有一台热敏打印机。我正在重新编写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十六进制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数组中