嘿, 我需要在热发票打印机 打印发票我写了这个程序来做到这一点(见下文) 但是,我需要向打印机发送字符定位的原因值范围为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