1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Zebra POS打印机Wifi无线打印方案和Android实现

Zebra POS打印机Wifi无线打印方案和Android实现

时间:2023-06-13 11:45:59

相关推荐

Zebra POS打印机Wifi无线打印方案和Android实现

前段时间做了一个无线打印的Android App,打印机用的是Zebra的 QL 220(移动打印机)和GX 430t(桌面打印机)。这里给大家分享一下具体实现方法。调用打印机用的是Zebra提供的ZSDK_ANDROID_API。此jar需要大家自己去网上下载,我忘记下载地址了,如果需要可以给我留言,我单独发给你们。在实现打印前需要先配置好环境:准备好可用的Zebra打印机(可支持CPCL或ZPL打印指令),连上局域网,Android设备与打印机需在同一个局域网内。蓝牙打印与Wifi打印类似,下面是具体实现:1.创建连接connection = new TcpConnection(PRINT_IP, PRINT_PORT);PRINT_IP:打印机对应的IPPRINT_PORT:打印机端口,可以在打印机上面查看。2.打开连接并且创建打印机实例(ZebraPrinterFactory是ZSDK_ANDROID_API.jar提供)。connection.open();ZebraPrinter printer = ZebraPrinterFactory.getInstance(connection);3.获取打印机控制语言(一般为CPCL或ZPL)PrinterLanguage pl = printer.getPrinterControlLanguage();针对不同的语言编写对应的打印指令,下面简单介绍一下语法:- ZPL(Zebra桌面打印机一般都支持)

开始指令:

/*** ^XA 指令块的开始* ^MD 设置色带颜色的深度,取值范围从-30到30,上面的示意指令将颜色调到了最深.* ^LH 设置条码纸的边距的.* ^CF 改变字符字体默认字体*/private static String lableStart_ZPL(int md,int x,int y){String strLable="^XA"+"^CF0,15,7"+ "^MD"+String.valueOf(md)+ "^LH"+String.valueOf(x)+","+String.valueOf(y);return strLable;}

打印文字:

/**** @param x 起始水平坐标* @param y 起始垂直坐标* @param strValue 内容* @return*/private static String printText_ZPL(int x,int y,String strValue) {String strText = "^FO"+String.valueOf(x)+","+String.valueOf(y)+"^AD" +"^FD"+ strValue + "^FS";return strText;}

打印条形码(Code128):

/*** ^FO20,10 ^FO是设置条码左上角的位置的,0,0代表完全不留边距.* ^ACN,18,10 ^ACN是设置字体的.因为在条码下方会显示该条码的内容,所以要设一下字体.这个跟条码无关.* ^BY1.4,3,50 ^BY是设置条码样式的,1.4是条码的缩放级别,3是条码中粗细柱的比例,50是条码高度.* ^BCN,,Y,N ^BC是打印code128的指令,具体参数详见ZPL的说明书(百度云盘)* ^FD01008D004Q-0^FS ^FD设置要打印的内容, ^FS表示换行.*/private static String printCode128_ZPL(int x,int y,int height,String strValue){String strBarCode = "^FO"+String.valueOf(x)+","+String.valueOf(y)+"^BC"+"N"+","+String.valueOf(height)+",N,N,N" +"^FD" + strValue + "^FS";return strBarCode;}

结束指令:

private static String lableEnd_ZPL(){String strBarCode = "^XZ" ;return strBarCode;}

- CPCL(Zebra移动打印机一般都支持)

开始指令:

/*** @param offset 偏移* @param Horizontal 水平尺寸* @param Vertical垂直尺寸* @param height 高度* @param qty 数量* @return*/private static String lableStart(double offset,float Horizontal,float Vertical,double height,int qty){String strLable="!"+" "+String.valueOf(offset)+" "+String.valueOf(Horizontal)+" "+String.valueOf(Vertical)+" "+String.valueOf(height)+" "+String.valueOf(qty);return strLable;}

打印文字:

/*** @param font字体* @param size字号* @param x 起始水平坐标* @param y 起始垂直坐标* @param strValue内容* @return*/private static String printText(int font, double size, double x, double y,String strValue) {String strText = "VT" + " " + String.valueOf(font) + " "+ String.valueOf(size) + " " + String.valueOf(x) + " "+ String.valueOf(y) + " " + strValue;return strText;}

打印条形码:

/*** @param type条码字体类型(例如:39,128,UPCA,UPCE,EAN13,EAN8,I2OF5,UCCEAN128,MSI,POSTNET,FIM)* @param width 条码宽度* @param ratio 宽窄比(例如:0 = 1.5 : 1,1 = 2.0 : 1,20 = 2.0:1,30 = 3.0:1)* @param height 高度* @param x 起始水平坐标* @param y 起始垂直坐标* @param strValue内容* @return*/private static String printBarCode(String type,int width,int ratio,int height,int x,int y,String strValue){String strBarCode = "VB" + " "+type+ " "+ String.valueOf(width) + " "+ String.valueOf(ratio) + " " +String.valueOf(height) + " " + String.valueOf(x) + " "+ String.valueOf(y) + " " + strValue;return strBarCode;}

打印二维码:

/*** @param x 起始水平坐标* @param y 起始垂直坐标* @param strValue内容* @return*/private static String printQRCode(int x,int y,String strValue){/*** M: QR code model No.Range is 1 or 2.Default is 2.* U: Unit-width/Unit-height of the module.Range is 1 to 32.Default is 6.* "M" is the error correction parameter (L=Low, M=Medium, Q=Medium High, H=High)* "0" is the mask pattern* "A" is the mode conversion (A=Auto, M=Manual)*/String strWrap="\r\n";String strBarCode = "VB" + " QR " + String.valueOf(x) + " " + String.valueOf(y) + " M 2 "+ " U 4 "+strWrap+"M0A,"+ strValue + strWrap+"ENDQR";return strBarCode;}4.向打印机发送打印指令printer.sendCommand(ConfigLabel);5.不要忘记关闭连接。connection.close();这些是主要的语法,还有一些细节控制没有在这里写出我将上传源码,有需要的人可以自行下载研究。下载地址:[连接POS打印机使用ZPL和CPCL指令打印类](/detail/h072056218/9390530)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。