使用java连接斑马打印机,开发rfid标签打印功能

1.引用斑马打印机的SDKjar包

ZSDK_API.jar

将这个jar文件放到项目的lib目录下,没有就新建一个。

rfid标签打印开发指导_标签宽度

然后点击 File--Project Sreucture--Modules 点击加号 选择对应jar包即可

rfid标签打印开发指导_数据_02

rfid标签打印开发指导_nVisual_03

rfid标签打印开发指导_标签宽度_04

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);