2017-08-01 210 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);