我使用的是热敏打印机,它会在打印前后将抽屉踢出。但我想阻止它,我正在发送十六进制代码以在需要时取消平局。我使用的顺序是但是打印机驱动程序说“处理文档‘Java Printing’时出现问题”。这是怎么回事 ?我认为代码与代码有关,因此它在所有平台上运行良好。我使用的代码如下所示:
public OpenCashDrawer() {
PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
System.out.println("printservice"+pservice);
try {
DocPrintJob job = pservice.createPrintJob();
String openDrawerCommand = ((char)0x1B70111)+"";
//
openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
byte by[] = openDrawerCommand.getBytes();
//char[] printdata = "hello world\n".toCharArray();
// System.out.println(by[1]);
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
//PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
//DocPrintJob pjob = pservice.createPrintJob();
//DocFlavor flavor = DocFlavor.CHAR_ARRAY.TEXT_PLAIN;
Doc doc = new SimpleDoc(by, flavor, null);
job.print(doc, null);
} catch (Exception e) {
System.out.println("Whoa bro. The printer is balls. Check it:");
e.printStackTrace();
}
}
最佳答案
我通过以下代码实现了这一点。
public OpenCashDrawer() {
SwingWorker worker = new SwingWorker<String, Void>() {
public String doInBackground() {
try {
String sql = "INSERT INTO pos_cashdraw SET user_id='"+global_variables.user_id+"', message='Opened For Sale'";
mysql_query.update_mysql(variables.con.conn, sql);
String out = "";
do {
out = "";
//System.out.println("opened cashdraw");
//String openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
String openDrawerCommand2 = "\u0017";
//String cmd = "echo -e " + openDrawerCommand2 + " > /dev/usblp0";
String cmd = "echo -e " + openDrawerCommand2 + " > /dev/ttyS0";
ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
pb.redirectErrorStream(true);
if (pb != null) {
Process shell = pb.start();
InputStream shellin = shell.getInputStream();
int c;
while ((c = shellin.read()) != -1) {
System.out.write(c);
out += (char) c;
}
shellin.close();
}
} while (out.contains("busy"));
} catch (IOException ex) {
System.err.println("Not supported in your operating system");
}
return "Opened";
}
};
worker.execute();
}
关于Java 中的 Linux 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228055/