Nar*_*rma 33 java android escaping thermal-printer point-of-sale
我正在开发一款具有内置行式打印机的Android设备应用程序.我必须与此打印机进行交互,并使用它在收货时打印详细信息,然后自动切割收据.我在其中看到了一些ESC命令,但我不知道如何执行这些ESC命令.
关于卡西欧设备打印机,我有三个主要问题:
1.我使用了内置打印机的打印代码,但打印后切刀未激活
BuildinEx840 ex840 = new BuildinEx840();
int response = ex840.open();
System.out.println("ex840 open:" + response);
byte[] set = {
'N', 'A', 'R', 'E', 'S', 'H', 'S', 'H', 'A', 'R', 'M', 'A', (byte) 0x0d, (byte) 0x0a
};
try {
ex840.write(set);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
response = ex840.getEndStatus();
System.out.println("getEndStatus:" + response);
response = ex840.initCutter();
ex840.close();
System.out.println("initCutter:" + response);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
2.我不知道如何将ESC命令发送到android中的打印机
有如下命令的数量
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
Run Code Online (Sandbox Code Playgroud)
我们如何通过编程在android中执行这些ESC命令?
3. 我不知道如何以所需格式打印收据
有一些ESC命令可用于提供左右边距和其他一些命令.那么如何以某种格式打印数据,并且可以更改文本的大小以及要打印的文本的其他一些设置.
任何帮助表示赞赏.
Nar*_*rma 26
工作了7天后,我得到了正确的方法来获得打印,然后切割机切割收据.ESC命令对于获取与打印机相关的打印和其他任务非常重要.我们必须将这些ESC CMD以字节数组的形式传递给行式打印机.
有如下命令的数量
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
Run Code Online (Sandbox Code Playgroud)
因此,只需简单地创建此命令的字节数组并将其传递给打印机.
e.g. byte[] print = {0x1b,0x0c};
Run Code Online (Sandbox Code Playgroud)
现在将它传递给打印机.必须有一些方法,如getCmd()或writeCmd()等取决于打印机.
我们如何通过编程在android中执行这些ESC命令?下面是执行此操作的代码
BuildinEx840 lpd=new BuildinEx840();
lpd.setMulticharMode(LinePrinterDeviceBase.CHARACTERSET_USA);
//initialise Cutter
lpd.initCutter();
LinePrinter lp=new LinePrinter();
lp.open(lpd);
lpd.open();
try{
lpd.init();
}catch(IOException e){
e.printStackTrace();
}
for(int i=0; i<5;i++){
lp.printNormal("Testing the Line Printer");
}
int totalLinefeed=listofItemList.size();
//ESC CMD for line feeds
byte[] lfs=new byte[]{0x1B,'d', 5};
sendtoExprinter(lpd,lfs);
//ESC CMD for paper cut
lfs=new byte[]{0x1B,'i'};
sendtoExprinter(lpd, lfs);
private void sendtoExprinter(BuildinEx840 dev, byte[] instr) {
try{
dev.write(instr);
}catch(IOException e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 通过热敏打印机打印图像
在某些打印机中,您可以在打印机的非易失性存储器中定义图像,然后通过ESC cmd 1C 70 01 30从那里打印图像.在某些其他打印机中,您可以在通过热敏打印机打印图像时提供图像的直接路径.
在任何行式打印机中,我们必须通过此printerObj.write(命令)传递ESC CMD ; 办法.我想感谢SO社区,特别感谢TheBlastOne,他引导我走向正确的道路.
如果有人在集成热敏打印机时有任何问题,请随意询问.
归档时间: |
|
查看次数: |
23864 次 |
最近记录: |