2011-04-13 70 views
0

嘿, 我需要在熱發票打印機 打印發票我寫了這個程序來做到這一點(見下文) 但是,我需要向打印機發送字符定位的原因值範圍爲0x80 - 0x102,但我發現它是不可能的,因爲我不能發送一個字節這個值(這是無符號字節在java中不存在)java的發票打印CommPortIdentifier

有關如何將此值添加到字符串的任何想法將被髮送到打印機? 感謝

import gnu.io.CommPortIdentifier; 
import gnu.io.NoSuchPortException; 
import gnu.io.PortInUseException; 
import gnu.io.SerialPort; 
import gnu.io.UnsupportedCommOperationException; 
import java.io.IOException; 
import java.io.OutputStream; 

public class SimpleWrite { 
    static CommPortIdentifier portId; 
    static SerialPort serialPort; 
    static OutputStream outputStream; 

     public static void print(String messageString){ 
     try { 
      portId = CommPortIdentifier.getPortIdentifier("COM1"); 
      serialPort = (SerialPort) portId.open("SimpleWrite", 2000); 
      outputStream = serialPort.getOutputStream(); 
      serialPort.setSerialPortParams(9600, 
              SerialPort.DATABITS_8, 
              SerialPort.STOPBITS_1, 
              SerialPort.PARITY_NONE); 
      outputStream.write(messageString.getBytes()); 
      serialPort.close(); 
     }catch (IOException e) {      System.out.println(e.getMessage()); 
     }catch (PortInUseException e) {     System.out.println(e.getMessage()); 
     }catch (UnsupportedCommOperationException e) { System.out.println(e.getMessage()); 
     }catch (NoSuchPortException e) {    System.out.println(e.getMessage());} 
    } 

    public static void main(String[] args) throws IOException{ 
     print("Hello , world \n\r"); 
    } 
} 

回答

1

當然,你可以用十六進制值0x80發送一個字節。

,取值範圍在Java byte是:

-128 .. 127 (in decimal) 
0x00 .. 0xff (in hexadecimal) 

您可以在16進制發送值與\u逃逸,如:

print("\u0080"); // sends 0x80 to your thermal printer 
0

您可以在源寫這樣的性格使用Unicode轉義,如

print("Eighty: \u0080\n"); 
+0

謝謝,但這似乎並沒有做到這一點..我得到了我想要的信件,但補充了第二個字母,因爲無符號字節類型的長度變化以及Unicode長度 – yaniv 2011-04-13 12:24:16

+2

您的函數使用getBytes()從字符串中獲取數據,採用缺省編碼,對於你感興趣的字符顯然是多字節的。你應該使用帶有編碼名稱的getBytes()版本,並使用正確編碼這些字符的東西 - 即「ISO-8859- 1'。 – 2011-04-13 12:50:50

+0

嘿,謝謝歐內斯特,但是看起來情節濃厚,我使用的打印機具有專有字符集。所以當我看到它時,我需要執行其中的一個,要麼發送一個ascii而不是unicode(我找不到這樣做的方式)或實現新的字符集(在這種情況下,我可以使用一些幫助:-) ),任何想法(ps我真的很感謝你的幫助,非常感謝:-)) – yaniv 2011-04-14 10:45:19