使用java连接斑马打印机,开发rfid标签打印功能
1.引用斑马打印机的SDKjar包
ZSDK_API.jar
将这个jar文件放到项目的lib目录下,没有就新建一个。
然后点击 File--Project Sreucture--Modules 点击加号 选择对应jar包即可
2.代码开发
1.打印机连接地址
static final String theIpAddress = "192.168.100.28";
static final int theIpPort = 9100;
theIpAddress写打印机ip地址,端口默认9100不用变
2.连接打印机
Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_ZPL_TCP_PORT);
thePrinterConn.open();
3.根据需求写打印指令
打印指令是一段string,指令有特殊的编码规则
例如:
ZPL指令开始:^XA
调用CI28编码集,UTF-8,标签打印中文必须:^CI28
调用字体,并赋予编号1(我这里用的是E盘里的宋体):^CW1,E:SIMSUN.TTF
设置标签宽度,高度(我这里设置1080点宽,840点高,300DPI的打印机1mm=12点):^PW1080,LL840
纸张文字打印,设置文字位置、大小、字体、内容(FTX,Y(X,Y坐标),A1N,w,h调用编号1的字体,字体宽28,高28,FD...FS之间是字符串):FT540,280A1N,28,28FD测试标签打印0101FS
执行RFID写入,H代表写入的是十六进制数据,A是自动调整显示数据的内容:RFW,H,,,AFD0101010101^FS
结束:^XZ
示例:
public static String getRfidTag() {
StringBuilder sb = new StringBuilder();
//ZPL指令开始^XA
sb.append("^XA");
//调用CI28编码集,UTF-8,标签打印中文必须
sb.append("^CI28");
//调用打印内存E盘中的宋体字,并赋予编号1
sb.append("^CW1,E:SIMSUNB.TTF");
//标签宽度400点,高度280点,300DPI的打印机1mm=12点
sb.append("^PW1080,LL840");
//^FTX,Y(X,Y坐标),^A1N,w,h调用编号1的字体,字体宽28,高28
//^FD...^FS之间是字符串
sb.append("^FT540,280^A1N,28,28^FDprintTest111^FS");
sb.append("^FT540,320^A1N,28,28^FD测试标签打印222^FS");
//^RFW执行RFID写入,H代表写入的是十六进制数据,A是自动调整显示数据的内容
//也就是只显示本次写入的数据
//十六进制数据,仅支持A-F,a-f,0-9
//也是可以写入ASCII,指令就是^RFW,A,,,A
//ASCII支持A-Z,a-z,以及其他ASCII编码的字符
sb.append("^RFW,H,,,A^FD111222333444555^FS");//写入到标签中
sb.append("^XZ");
return sb.toString();
}
4.根据指令打印
byte[] zplLabel = PrintMethod.returnEPC().getRfidTag(StandardCharsets.UTF_8);
thePrinterConn.write(zplLabel);