2017-08-01 245 views
0

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

这是我的功能

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 dn [名称]打印并输入n行[格式] ASCII ESC dn十六进制1B 64 n十进制数27 100 n [范围]0≤n≤255[描述]在打印缓冲区中打印 中的数据并送入n行。 [注释]•该命令将 打印起始位置设置到行首。 •此命令 不会影响ESC 2或ESC 3设置的行间距。•最大供纸量为1016 mm {40“}。如果纸张进纸量大于1016的支架(n×行 间距)毫米{40 “}指定,则打印机馈送 纸张仅1016毫米{40”}。[参考] ESC 2(默认线 间距),ESC 3(集线间距)

的pi4j参考 http://pi4j.com/apidocs/com/pi4j/io/ser ... E-焦炭...-

我这个尝试之一: 代码可以接受:

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

,但它不接受这个

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

做了'写(如果有人碰到这个,需要帮助来)()'方法有一个接受'字节版本[] '? – Yazan

+0

我同意@Yazan所说的:你应该发送字节(通过'OutputStream'类型的接口)而不是char/String(通过'Writer')。您发布到pi4j参考的链接已损坏,所以我无法确定这是否可行。 –

+0

是作家接受字节[] ,这是工作链接:http://pi4j.com/apidocs/com/pi4j/io/serial/SerialDataWriter.html – Ammar

回答

1

@ Yazan,@麦克·哈里斯非常感谢你的帮助。 我转换我的所有整数字节作为他们建议 代码

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