我的目标是通过编程打开一个现金抽屉,但是我没有找到关于Java如何与Windows端口交互的详细信息,所以我无法让它工作。以下是我尝试过的方法( Java控制台中没有错误):
public void cashdrawerOpen() {
String code1 = "27 112 0 150 250"; //decimal
String code2 = "1B 70 00 96 FA"; //hexadecimal
String code = "ESCp0û."; //ascii
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
System.out.println(service.getName());
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
DocPrintJob pj = service.createPrintJob();
byte[] bytes;
bytes=code2.getBytes();
Doc doc=new SimpleDoc(bytes,flavor,null);
try {
pj.print(doc, null);
} catch (PrintException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void cashdrawerOpen2(){
String code1 = "27 112 0 150 250";
String code2 = "1B 70 00 96 FA";
String code = "ESCp0û.";
FileOutputStream os = null;
try {
os = new FileOutputStream("USB001:POS-58");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
PrintStream ps = new PrintStream(os);
ps.print(code1.getBytes());
ps.close();
}然后我开始使用cmd,特别是跟随this线程,但是当我执行命令‘/b open.bat USB001’时,它只是说:‘覆盖USB001?(是/否/全部)’
有什么想法吗?
发布于 2016-11-09 18:21:54
解决了。
我没有找到如何通过USB发送命令,我不得不模拟LPT端口。
如果您的打印机附带了名为TM虚拟端口驱动程序或类似的驱动程序(在我的示例中):
若否,则:
发布于 2016-11-06 00:13:20
Well...the USB001文件必须已经存在于要复制到的位置,现在它询问您是否要覆盖它,因为您要将open.bat复制到完全相同的USB001文件名。
如果您总是希望覆盖USB001文件,那么也可以使用/Y开关,例如:
copy /B /Y open.bat USB001您可以在命令提示符下查看用于复制的所有开关,输入:
copy /?https://stackoverflow.com/questions/40444457
复制相似问题