Печать счета-фактуры Java CommPortIdentifier с проблемой неподписанных байтов
Эй, мне нужно распечатать счета на термопринтере. Я написал эту программу, чтобы сделать это (см. Ниже). Однако по причинам локализации мне нужно отправить на принтер символы со значениями в диапазоне 0x80 - 0x102, но я нахожу это невозможным, поскольку Я не могу отправить байт с этими значениями (это неподписанные байты, которые не существуют в Java)
Любые идеи о том, как добавить эти значения в строку, которая будет отправлена на принтер??? Спасибо
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");
}
}
2 ответа
Конечно, вы можете отправить байт с шестнадцатеричным значением 0x80
,
Диапазон значений для byte
в Java есть:
-128 .. 127 (in decimal)
0x00 .. 0xff (in hexadecimal)
Вы можете отправлять значения в шестнадцатеричной записи с помощью \u
бежать, как:
print("\u0080"); // sends 0x80 to your thermal printer
Вы можете написать такой символ в своем источнике, используя экранирование Unicode, например
print("Eighty: \u0080\n");