嘿, 我需要在熱發票打印機 打印發票我寫了這個程序來做到這一點(見下文) 但是,我需要向打印機發送字符定位的原因值範圍爲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");
}
}
謝謝,但這似乎並沒有做到這一點..我得到了我想要的信件,但補充了第二個字母,因爲無符號字節類型的長度變化以及Unicode長度 – yaniv 2011-04-13 12:24:16
您的函數使用getBytes()從字符串中獲取數據,採用缺省編碼,對於你感興趣的字符顯然是多字節的。你應該使用帶有編碼名稱的getBytes()版本,並使用正確編碼這些字符的東西 - 即「ISO-8859- 1'。 – 2011-04-13 12:50:50
嘿,謝謝歐內斯特,但是看起來情節濃厚,我使用的打印機具有專有字符集。所以當我看到它時,我需要執行其中的一個,要麼發送一個ascii而不是unicode(我找不到這樣做的方式)或實現新的字符集(在這種情況下,我可以使用一些幫助:-) ),任何想法(ps我真的很感謝你的幫助,非常感謝:-)) – yaniv 2011-04-14 10:45:19