java对接斑马打印机打印标签

JAVA对接斑马打印机打印RFID标签和普通标签

1、打印RFID标签

在打印RFID标签时,如果机器在没有校准的情况下进行打印标签,此时如果还需要获取到RFID的epc值,那么打印机返回的EPC值,有可能不是当前标签的epc值。考虑到此种情形,我们采用zpl命令进行控制打印机打印:命令包含写入EPC,同时包含返回EPC值。用写入的epc是否等于返回的epc,加以校验,从而避免这种情况的发生。以下用zt411型号验证过的代码

所需第三方jar:

ZSDK_API.jar  斑马打印机sdk
ts24.lib     字体库

在程序启动时,首先加载字体库:

private byte[] dotFont;
......
/**
	 * 构造方法 加载中文字体支持
	 */
	public ZplPrinter() {
   
		String currentp = System.getProperty("user.dir");
		String tspath = currentp + File.separator + "lib" + File.separator + "ts24.lib";
		File file = new File(tspath);
		log.info("the path of ts24.lib is == " + tspath);
		FileInputStream fis;
		try {
   
			fis = new FileInputStream(file);
			dotFont = new byte[fis.available()];
			fis.read(dotFont);
			fis.close();
		} catch (IOException e) {
   
			log.error(e.getMessage(), e);
		}
	}

拼接ZPL命令:

private String getRFIDZPL(MaterialInfo m) {
   

		StringBuilder sb = new StringBuilder("^XA^CW1,E:HEITI.TTF^FS^CI28");// 字体
		String fontsize = "^A1N,30,30";// 字体大小

		int x = 150;
		int y = 70;
		int step = 40;

		// 商品名称
		String str = "名称:" + m.getProductName();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + step) + "^FD" + str + "^FS");

		// 商品编码
		str = "编码:" + m.getProductCode();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + 2 * step) + "^FD" + str + "^FS");

		// 商品规格
		str = "规格:" + m.getSpecifications();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + 3 * step) + "^FD" + str + "^FS");

		// 商品批次
		str = "批次:" + m.getBatchNumber();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + 4 * step) + "^FD" + str + "^FS");

		// 商品效期
		str = "效期:" + m.getExpiredDate();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + 5 * step) + "^FD" + str + "^FS");

		// 商品生产厂家
		str = "供应商:" + m.getSupplier();
		sb.append(fontsize);
		sb.append("^FO" + x + "," + (y + 6 * step) + "^FD" + str + "^FS");

		String writec = "^RS8^RFW,H,1,2,1^FD3400^FS^RFW,H,2,12,1^FD" + m.getRfidCode() + "^FS";
		sb.append(writec);

		// 条形码
		sb.append("^BY3,3,60^FT150,70^BCN,50,Y,N^FD>:").append(m.getBarCode()).append("^FS");

		/// 二维码
		sb.append("^FT520,270^BQN,2,7^FH\\^FDLA,").append(m.getBarCode()).append("^FS");

		sb.append("^RS8,,,1 ^RFR,H,0,8,E^FN1^FS^HV1,,^FS");

		// 打印数量
		sb.append("^PQ1,0,1,Y");

		// 结束标识
		sb.append("^XZ");

		return sb.toString();

连接打印机,发送打印请求:

public void printRFID(String printerip, MaterialInfo m) throws Exception {
   
		Connection connection = ConnectionBuilder.build("TCP_MULTI:" + printerip + ":9100:9200");
		Integer timeout = 8000;
		Date date = new Date();
		try {
   
			connection.open();
			if (StringUtils.isBlank(m.getBarCode())) {
   
				String barcode = customerService.createSPDUniqueCode();// 自动生成spd唯一码
				m.setBarCode(barcode)<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值