我有一台直接连接有小型打印机的 Android 设备。打印机使用似乎是精简版的 ESC/POS 语言,并且与打印机的通信是通过打开串行端口连接来完成的。
我可以打印单行文本或让它打印条码,但我无法逐行打印多行。没有抛出异常,打印机只是打印发送的行之一然后停止,后续尝试具有相同的结果。
在尝试了许多不同的组合和命令序列之后,我没有运气让它工作。我在 Java 方面有一些经验,但根本不是专家。
下面的代码有什么明显的问题吗?
public void startPrint(String barcode){
sp = new fingerprint_native();
sp.OpenSerialPort("/dev/eser1")
byte[] space_cmd = new byte[3];
space_cmd[0] = 27;
space_cmd[1] = 74;
space_cmd[2] = 50;
String compName = "Test Company";
String compAdd1 = "123 Main St.";
String compAdd2 = "Cityname, ON A4A 4A4";
String ticketNum = "1234567";
byte[] cn = compName.getBytes();
byte[] ca1 = compAdd1.getBytes();
byte[] ca2 = compAdd2.getBytes();
byte[] tn = ticketNum.getBytes();
byte[] t = {0x0a, 0x0d};
try {
sp.WriteSerialPort(yn);
sp.WriteSerialPort(t);
sp.WriteSerialPort(ya1);
sp.WriteSerialPort(ya2);
sp.WriteSerialPort(tn);
sp.WriteSerialPort(space_cmd);
} catch (Exception e) {
Log.e(TAG, "write text failed");
}
byte[] cmd12 = {0x1d, 0x6b, 68, 7};
byte[] cmd11 = barcode.getBytes();
byte[] bc = new byte[cmd12.length+cmd11.length];
System.arraycopy(cmd12, 0, bc, 0, cmd12.length);
System.arraycopy(cmd11, 0, bc, cmd12.length, cmd11.length);
try {
sp.WriteSerialPort(bc);
} catch (Exception e) {
Log.e(TAG, "write barcode failed");
}
}