java打印标签(机型POSTEK条码打印机I300e)

实现方式

1、打印机设置网络ip
2、引入POSTEK提供的jar包依赖

部署window / linux(CentOs) 服务器打印

标签效果

在这里插入图片描述

代码

目录结构
在这里插入图片描述

public ActionResult print(ZbcWzglWzflEntity entity, Integer num) {
        /*
         *mm:点,毫米转为点,由打印机分辨率决定
         * 打印机分辨DPI=203时, mm=8
         * 打印机分辨DPI=300时, mm=12
         * 打印机分辨DPI=600时, mm=24
         */
        int mm=12;
        /*设置打印机IP地址*/
        /*打印之前先确保打印机已配置到你所处的局域网内,可用ping命令检测打印机是否已经在局域网内
         *打印机IP地址可以打印自检页查看,也可以在Utility或者液晶屏中查看
         * 配置打印机的IP地址和端口号:可在打印机液晶屏或者Utility中配置
         * 端口一般不用配置,用默认值9100就好
         */
        String printerIPAddress = ipAddress;
        int printerPort = Printers.NetPort;
        int printDarkness = 10;
        int printSpeed = 4;
        char printDirection = 'B';
        int printLabelHeight = 30;
        int printLabelWidth = 30;
        /*横坐标偏移,设置标签整体横向移动位置*/
        int offset_X = 0;
        /*纵坐标偏移,设置标签整体纵向移动位置*/
        int offset_Y = 0;


        if (SystemUtils.IS_OS_WINDOWS) {
            // Windows操作系统
            System.setProperty("jna.encoding", "UTF-8");

            CDFPSKDll PrintLab=(CDFPSKDll) Native.loadLibrary(CDFPSKDll.DLLName, CDFPSKDll.class);
            PrintLab.PTK_SetCharSets(8,'N',"001");
            int result=0;
            /*连接打印机*/
            System.out.println("打印机:"+printerIPAddress+":"+printerPort);
            System.out.println("PrintLab:"+PrintLab);
            result = PrintLab.PTK_Connect_Timer(printerIPAddress,printerPort,5);
            if (result != 0) {
//            System.err.println( Printers.getErrorInfo(result));
                return ActionResult.fail("连接打印机失败!"+Printers.getErrorInfo(result));
            }
            /*函数返回值*/
            int result_printing = 0;

            /*获取打印机状态*/
            int[] status_Net = new int[4];
            String PrinterStatus = "";
            result_printing = PrintLab.PTK_FeedBack();
            if (result_printing != 0) {
                Printers.showError("PTK_FeedBack", result_printing);
                return ActionResult.fail("打印失败!");
            }

            result_printing = PrintLab.PTK_ReadData(status_Net,4);
            if (result_printing != 0) {
                Printers.showError("PTK_ReadData", result_printing);
                return ActionResult.fail("打印失败!");
            }

            PrinterStatus = status_Net[0]+"";
            if (!PrinterStatus.equals("0") && !PrinterStatus.equals("4"))
            {
                PrintLab.PTK_CloseConnect();
                System.err.println("打印机未就绪,当前错误报告:" +Printers.Status_Explain(PrinterStatus));
                return ActionResult.fail("打印失败!打印机未就绪");
            }

            /*清空缓存*/
            result_printing = PrintLab.PTK_ClearBuffer();
            if (result_printing != 0) {
                Printers.showError("PTK_ClearBuffer",result_printing);
                return ActionResult.fail("打印失败!清空缓存失败!");
            }

            /*设置打印黑度 取值范围 0-20*/
            result_printing = PrintLab.PTK_SetDarkness(printDarkness);
            if (result_printing != 0) {
                Printers.showError("PTK_SetDarkness", result_printing);
                return ActionResult.fail("打印失败!设置打印黑度失败!");
            }

            /*设置打印速度*/
            result_printing = PrintLab.PTK_SetPrintSpeed(printSpeed);
            if (result_printing != 0) {
                Printers.showError("PTK_SetPrintSpeed", result_printing);
                return ActionResult.fail("打印失败!设置打印速度失败!");
            }

            /*设置打印方向*/
            result_printing = PrintLab.PTK_SetDirection(printDirection);
            if (result_printing != 0) {
                Printers.showError("PTK_SetDirection", result_printing);
                return ActionResult.fail("打印失败!设置打印方向失败!");
            }

            /*设置标签高度、间隙及偏移*/
            result_printing = PrintLab.PTK_SetLabelHeight( printLabelHeight * mm, 24, 0, false);
            if (result_printing != 0) {
                Printers.showError("PTK_SetLabelHeight", result_printing);
                return ActionResult.fail("打印失败!设置标签高度、间隙及偏移失败!");
            }

            /*设置标签宽度,一定要准确,否则会导致打印内容位置不准确*/
            result_printing = PrintLab.PTK_SetLabelWidth(printLabelWidth * mm);
            if (result_printing != 0) {
                Printers.showError("PTK_SetLabelWidth", result_printing);
                return ActionResult.fail("打印失败!设置标签宽度失败!");
            }
            for(int i = 0; i < num; i++){
                /* 打印文字*/
                result_printing = PrintLab.PTK_DrawText_TrueType((int)(80+offset_X), (int)(30+offset_Y), 6*mm, 0, "宋体",1, 400, false, false, false, entity.getAsset_name());
                if (result_printing != 0) {
                    Printers.showError("PTK_DrawText_TrueType", result_printing);
                    return ActionResult.fail("打印失败!打印文字失败!");
                }
                result_printing = PrintLab.PTK_DrawText_TrueType((int)(80+offset_X), (int)(100+offset_Y), 4*mm, 0, "宋体",1, 400, false, false, false, entity.getAsset_model());
                if (result_printing != 0) {
                    Printers.showError("PTK_DrawText_TrueType", result_printing);
                    return ActionResult.fail("打印失败!打印文字失败!");
                }
//                result_printing = PrintLab.PTK_DrawText_TrueType((int)(80+offset_X), (int)(150+offset_Y), 4*mm, 0, "宋体",1, 400, false, false, false, entity.getWzgl_pp_id());
//                if (result_printing != 0) {
//                    Printers.showError("PTK_DrawText_TrueType", result_printing);
//                    return ActionResult.fail("打印失败!打印文字失败!");
//                }
                /* 打印条码*/
                result_printing = PrintLab.PTK_DrawBarcode((int)(80 + offset_X), (int)(210 + offset_Y), 0, "1", 4, 4, 8 * mm, 'N', entity.getId());
                if (result_printing != 0) {
                    Printers.showError("PTK_DrawBarcode", result_printing);
                    return ActionResult.fail("打印失败!打印条码失败!");
                }
                /* 打印条码下方文字   20+4*mm+4为条码的Y坐标+条码高度+条码与文字间距*/
                result_printing = PrintLab.PTK_DrawText_TrueType((int)(80 + offset_X), (int)(210+8*mm+2+ offset_Y), 3 * mm, 0, "Arial", 1, 400, false, false, false, entity.getId());
                if (result_printing != 0) {
                    Printers.showError("PTK_DrawText_TrueType", result_printing);
                    return ActionResult.fail("打印失败!打印条码下方文字失败!");
                }

                /*打印,必须要执行这一行,否则不会打印,打印多张标签时每张标签后面都需要加它*/
                result_printing = PrintLab.PTK_PrintLabel(1, 1);
                if (result_printing != 0) {
                    Printers.showError("PTK_PrintLabel", result_printing);
                    return ActionResult.fail("打印失败!打印失败!");
                }
            }

            /*断开打印机连接*/
            PrintLab.PTK_CloseConnect();
            return ActionResult.success("打印成功!");
        } else if (SystemUtils.IS_OS_LINUX) {
            // LINUX操作系统
            PRINTDLL PrintLab=(PRINTDLL) Native.loadLibrary("PostekFunctionLib", PRINTDLL.class);
            PrintLab.PTK_SetCharSets(8,'N',"001");
            int result=0;
            /*连接打印机*/
            result = PrintLab.PTK_Connect(printerIPAddress,printerPort);
            if (result != 0) {
                return ActionResult.fail("连接打印机失败!"+Printers.getErrorInfo(result));
            }
            //*清空缓存
            PrintLab.PTK_ClearBuffer();
            //设置打印黑度 取值范围 0-20
            PrintLab.PTK_SetDarkness(printDarkness);
            //设置打印速度
            PrintLab.PTK_SetPrintSpeed(printSpeed);
            //设置打印方向
            PrintLab.PTK_SetDirection(printDirection);
            //设置标签高度、间隙及偏移
            PrintLab.PTK_SetLabelHeight(printLabelHeight * mm,24);
            //设置标签宽度,一定要准确,否则会导致打印内容位置不准确
            PrintLab.PTK_SetLabelWidth(printLabelWidth * mm);

            int numOfTF = 1;
            for(int i = 0; i < num; i++){
                /* 打印文字*/
                PrintLab.PTK_DrawTextTrueTypeW((int)(80+offset_X), (int)(30+offset_Y), 6*mm, 0, 400,0, 1, 0, 0, "font/simsun.ttf",entity.getAsset_name(),++numOfTF);
                PrintLab.PTK_DrawTextTrueTypeW((int)(80+offset_X), (int)(100+offset_Y), 4*mm, 0, 400,0, 1, 0, 0, "font/simsun.ttf", entity.getAsset_model(),++numOfTF);
                //打印条码
                PrintLab.PTK_DrawBarcode((int)(80 + offset_X), (int)(210 + offset_Y),0,"1",4,4,8 * mm,'N',entity.getId());
                /* 打印条码下方文字   20+4*mm+4为条码的Y坐标+条码高度+条码与文字间距*/
                PrintLab.PTK_DrawTextTrueTypeW((int)(80 + offset_X), (int)(210+8*mm+2+ offset_Y), 3 * mm, 0, 400, 0, 1, 0, 0, "font/simsun.ttf",entity.getId(),++numOfTF);
                //打印,必须要执行这一行,否则不会打印
                PrintLab.PTK_PrintLabel(1,1);
            }

            /*断开打印机连接*/
            PrintLab.PTK_CloseConnect();
            return ActionResult.success("打印成功!");
        } else {
            return ActionResult.fail("支持windows、linux打印,暂不支持其他操作系统打印!");
        }


    }
package cctd.MainInterface;

import java.io.UnsupportedEncodingException;

public class Printers {
	public static String IPAddress;
	public static int NetPort = 9100;
	static CDFPSKDll PrintLab = CDFPSKDll.Instance;
	public static void showError(String Name, int ErrorCode) {
		System.err.println(Name + ":" + getErrorInfo(ErrorCode));
		PrintLab.ClosePort();
		PrintLab.PTK_CloseTextPort();
		PrintLab.PTK_CloseUSBPort();
		PrintLab.PTK_CloseConnect();
	}

	// 解析打印机状态
	public static String Status_Explain(String PrinterStatus) {

		int status_t = Integer.parseInt(PrinterStatus.replace("W10", ""));

		String status = "";
		switch (status_t) {
		case 0:
			status = "无错误";
			break;
		case 1:
			status = "语法错误";
			break;
		case 4:
			status = "正在打印中";
			break;
		case 82:
			status = "碳带检测出错";
			break;
		case 83:
			status = "标签检测出错";
			break;
		case 86:
			status = "切刀检测出错";
			break;
		case 87:
			status = "打印头未关闭";
			break;
		case 88:
			status = "暂停状态";
			break;
		case 108:
			status = "设置RFID写数据的方式和内容区域执行失败,输入参数错误";
			break;
		case 109:
			status = "RFID标签写入数据失败,已达到重试次数";
			break;
		case 110:
			status = "写入RFID数据失败,但未超过重试次数";
			break;
		case 111:
			status = "RFID标签校准失败";
			break;
		case 112:
			status = "设置RFID读取数据的方式和内容区域执行失败,输入参数错误";
			break;
		case 116:
			status = "读取RFID标签数据失败";
			break;

		default:
			status = "未知错误";
			break;
		}

		return status;
	}

	public static String getErrorInfo(int errorCode) {

		String information = "";
		byte[] errorInfo = new byte[2048];
		int result = PrintLab.PTK_GetErrorInfo(errorCode, errorInfo, 2048);
		if (result == 0) {

			try {
				information = new String(errorInfo, "gbk").trim();
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} else if (result == -1) {
			information = "解析错误代码失败,没有该错误代码";
		} else if (result == 4) {
			information = "错误信息过长无法显示";
		} else {
			information = "无法解析错误解析码返回值:" + result;
		}

		return information;
	}
}


package cctd.MainInterface;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;

public interface CDFPSKDll extends Library {

	// 第一步,根据JDK版本重命名CDFPSDK.dll,将X86目录下的Release目录下的dll重命名为CDFPSDK32.dll,将X64目录下的Release目录下的dll重命名为CDFPSDK64.dll
	// 放在src目录下
	String DLLName = "CDFPSK" + System.getProperty("sun.arch.data.model");
	@SuppressWarnings("deprecation")
	CDFPSKDll Instance = null;
	int PTK_GetLastError();

	int PTK_WSAGetLastError();

	/*
	 * 日志功能 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_OpenLogMode(String filePath);

	int PTK_CloseLogMode();

	/*
	 * 编码转换功能 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_UTF8toGBK(byte[] utf8Str, byte[] gbkStr, int gbkStrCount);

	int PTK_GBKtoUTF8(byte[] gbkStr, byte[] utf8Str, int utf8StrCount);

	/*
	 * 端口操作 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_OpenUSBPort(int port);

	int PTK_CloseUSBPort();

	int PTK_Connect_Timer(String IPAddress, int Port, int time);

	int PTK_Connect(String IPAddress, int Port);

	int PTK_CloseConnect();

	int PTK_OpenSerialPort(int port, int bRate);

	int PTK_CloseSerialPort();

	int PTK_OpenPrinter(String printerName);

	int PTK_ClosePrinter();

	int PTK_OpenParallelPort(int port);

	int PTK_CloseParallelPort();

	int PTK_OpenTextPort(String fn);

	int PTK_CloseTextPort();

	int PTK_OpenUSBPort_Buff(int portNum);

	int PTK_Connect_Timer_Buff(String IPAddr, int netPort, int time_sec);

	int PTK_OpenPrinter_Buff(String printerName);

	int PTK_CloseBuffPort();

	int PTK_WriteBuffToPrinter();

	int PTK_SendFile(String FilePath);

	int PTK_SendCmd(String data, int datalen);

	int PTK_SendString(int charset, String data);

	int PTK_GetUSBID(byte[] p);

	int PTK_GetErrorInfo(int error_n, byte[] errorInfo, int infoSize);

	int PTK_GetAllPrinterUSBInfo(byte[] USBInfo, int infoSize);

	int PTK_GetInfo();

	int PTK_GetErrState();

	/*
	 * 打印机设置 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_PrintConfiguration();

	int PTK_MediaDetect();

	int PTK_UserFeed(int feedLen);

	int PTK_UserBackFeed(int feedLen);

	int PTK_EnableFLASH();

	int PTK_DisableFLASH();

	int PTK_FeedMedia();

	int PTK_CutPage(int page);

	int PTK_CutPageEx(int page);

	int PTK_SetCoordinateOrigin(int px, int py);

	int PTK_GetUtilityInfo(int infoNum, byte[] data, int dataSize);

	int PTK_GetAllPrinterInfo(int infoNum, int fileflag, byte[] data, int dataSize);

	int PTK_ErrorReport_USBInterrupt(int[] status);

	int PTK_GetPrinterName(byte[] PrinterName);

	int PTK_GetPrinterDPI(int[] dpi);

	int PTK_GetPrinterKey_USB(byte[] printerKey);

	/*
	 * 标签设置 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_ClearBuffer();

	int PTK_SetPrintSpeed(int px);

	int PTK_SetDirection(char direct);

	int PTK_SetDarkness(int id);

	int PTK_SetLabelHeight(int lheight, int gapH, int gapOffset, boolean bFlag);

	int PTK_SetLabelWidth(int lwidth);

	int PTK_PrintLabel(int number, int cpnumber);

	int PTK_PrintLabelFeedback(byte[] data, int dataSize);

	/*
	 * 打印文字 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_DrawText(int px, int py, int pdirec, int pFont, int pHorizontal, int pVertical, char ptext, String pstr);

	int PTK_DrawTextEx(int px, int py, int pdirec, int pFont, int pHorizontal, int pVertical, char ptext, String pstr,
			int varible);

	int PTK_DrawTextTrueTypeW(int x, int y, int FHeight, int FWidth, String FType, int Fspin, int FWeight, int FItalic,
			int FUnline, int FStrikeOut, String id_name, String data);

	int PTK_DrawText_TrueType(int x, int y, int FHeight, int FWidth, String FType, int Fspin, int FWeight, boolean b,
			boolean c, boolean d, String data);

	int PTK_DrawText_TrueType_AutoFeedLine(int x, int y, int FHeight, int FWidth, String FType, int Fspin, int FWeight,
			boolean FItalic, boolean FUnline, boolean FStrikeOut, int lineMaxWidth, int lineMaxNum, int lineGapH,
			char middleSwitch, char codeFormat, String data);

	int PTK_DrawText_TrueTypeEx(int x, int y, int FHeight, int FWidth, String FType, int Fspin, int FWeight,
			int FItalic, int FUnline, int FStrikeOut, int lineMaxWidth, int lineMaxNum, int lineGapH, int middleSwitch,
			String data);

	/*
	 * 打印图片 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_ChangeIMGtoPCX(String filename);

	int PTK_PcxGraphicsList();

	int PTK_PcxGraphicsDel(String pid);

	int PTK_AnyGraphicsDownload(String pcxname, String filename, float ratio, int width, int height, int iDire);

	int PTK_DrawPcxGraphics(int px, int py, String gname);

	int PTK_AnyGraphicsPrint(int x, int y, String GraphicsName, String filePath, float ratio, int width, int height,
			int iDire);

	int PTK_AnyGraphicsPrint_Base64(int px, int py, int imageType, float ratio, int width, int height, int iDire,
			String imageBuffer);

	int PTK_AnyGraphicsDownloadFromMemory(String pcxname, int imageType, int imageSize, float ratio, int width,
			int height, int iDire, Byte[] imageBuffer);

	int PTK_AnyGraphicsPrintFromMemory(int px, int py, String pcxname, int imageType, int imageSize, float ratio,
			int width, int height, int iDire, Byte[] imageBuffer);

	int PTK_PcxGraphicsDownload(String pcxname, String pcxpath);

	int PTK_PrintPCX(int px, int py, String filename);

	int PTK_BmpGraphicsDownload(String pcxname, String pcxpath, int iDire);

	/*
	 * 打印点阵图片 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_BinGraphicsList();

	int PTK_BinGraphicsDel(String pid);

	int PTK_BinGraphicsDownload(String name, int pbyte, int pH, byte[] Gdata);

	int PTK_RecallBinGraphics(int px, int py, String name);

	int PTK_DrawBinGraphics(int px, int py, int pbyte, int pH, byte[] Gdata);

	/*
	 * 打印线条 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_DrawRectangle(int px, int py, int thickness, int pEx, int pEy);

	int PTK_DrawLineXor(int px, int py, int pbyte, int pH);

	int PTK_DrawLineOr(int px, int py, int pLength, int pH);

	int PTK_DrawDiagonal(int px, int py, int thickness, int pEx, int pEy);

	int PTK_DrawWhiteLine(int px, int py, int plength, int pH);

	/*
	 * 打印二维码 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_DrawBar2D_QR(int x, int y, int w, int v, int o, int r, int m, int g, int s, String pstr);

	int PTK_DrawBar2D_QREx(int x, int y, int o, int r, int g, int s, int v, String id_name, String pstr);

	int PTK_DrawBar2D_HANXIN(int x, int y, int w, int v, int o, int r, int m, int g, int s, String pstr);

	int PTK_DrawBar2D_Pdf417(int x, int y, int w, int v, int s, int c, int px, int py, int r, int l, int t, int o,
			String pstr);

	int PTK_DrawBar2D_Pdf417Ex(int x, int y, int w, int v, int s, int c, int px, int py, int r, int l, int t, int o,
			String pstr);

	int PTK_DrawBar2D_MaxiCode(int x, int y, int m, int u, String pstr);

	int PTK_DrawBar2D_DATAMATRIX(int x, int y, int w, int h, int o, int m, String pstr);

	/*
	 * 打印一维码 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_DrawBarcode(int px, int py, int pdirec, String pCode, int pHorizontal, int pVertical, int pbright,
			char ptext, String pstr);

	int PTK_DrawBarcodeEx(int px, int py, int pdirec, String pCode, int NarrowWidth, int pHorizontal, int pVertical,
			int pbright, char ptext, String pstr, int Varible); // 打印一个条码。

	/*
	 * 打印表单及相关 =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_GetStorageList(byte[] tempName, int listBuffSize, int TempType);

	int PTK_FormList();

	int PTK_FormDel(String pid);

	int PTK_FormDownload(String pid);

	int PTK_FormEnd();

	int PTK_ExecForm(String pid);

	int PTK_DefineVariable(int pid, int pmax, char porder, String pmsg);

	int PTK_DefineCounter(int id, int maxNum, char ptext, String pstr, String pMsg);

	int PTK_Download();

	int PTK_DownloadInitVar(String pstr);

	int PTK_PrintLabelAuto(int number, int cpnumber);

	int PTK_FormPrinting(String FormName, String FormVariable, int Quantity, int Copies);

	/*
	 * 超高频RFID标签读写及相关(UHF) =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_RFIDCalibrate();

	int PTK_RWRFIDLabel(int nRWMode, int nWForm, int nStartBlock, int nWDataNum, int nWArea, String pstr);

	int PTK_RWRFIDLabelEx(int nRWMode, int nWForm, int nStartBlock, int nWDataNum, int nWArea, String pstr);

	int PTK_SetRFLabelPWAndLockRFLabel(int nOperationMode, int OperationnArea, String pstr);

	int PTK_EncodeRFIDPC(String PCValue);

	int PTK_SetRFID(int nReservationParameters, int nReadWriteLocation, int ReadWriteArea, int nMaxErrNum,
			int nErrProcessingMethod);

	int PTK_ReadRFIDLabelData(int nDataBlock, int nRFPower, int bFeed, byte[] data, int dataSize);

	int PTK_ReadRFIDLabelDataEx(int nDataBlock, int nRFPower, int bFeed, String AccessCode, byte[] data, int dataSize);

	int PTK_RFIDEndPrintLabel(int block, byte[] data, int dataSize);

	int PTK_RFIDEndPrintLabelFeedBack(int block, byte[] data, int dataSize, byte[] printerStatus, int statusSize);

	int PTK_SetReadRFIDForwardSpeed(int speed);

	int PTK_SetReadRFIDBackSpeed(int speed);

	int PTK_ReadRFIDSetting(int nRMode, int nStartBlock, int nRBlockLength, String AccessCode);

	int PTK_PrintAndCallback(byte[] data, byte[] printerStatus);

	/*
	 * 高频RFID标签读写及相关(HF) =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int PTK_RWHFLabel(char ptext, int nStartBlock, int nBlockNum, String pstr, boolean b);

	int PTK_SetHFRFID(char pWForm, int nProtocolType, int nMaxErrNumd);

	int PTK_ReadHFTagData(int wPort, int rPort, int BaudRate, Boolean HandShake, int TimeOut, int nStartBlock,
			int nBlockNum, char pFeed, Pointer strRFData);

	int PTK_ReadHFLabelData(int nStartBlock, int nBlockNum, char pFeed, byte[] data, int dataSize);

	int PTK_ReadHFLabeUID(char pFeed, byte[] data, int dataSize);

	int PTK_ReadHFTagUID(int wPort, int rPort, int BaudRate, Boolean HandShake, int TimeOut, char pFeed,
			Pointer strRFData);

	int PTK_ReadHFTagDataPrintAuto(int nStartBlock, int nBlockNum);

	int PTK_ReadHFTagUIDPrintAuto();

	int PTK_SetHFAFI(int nAFIValue);

	int PTK_SetHFDSFID(int nDSFIDValue);

	int PTK_SetHFEAS(char EAS);

	int PTK_HFDecrypt(int key, int nStartBlock, int nBlockNum, String VerifyPassword);

	int PTK_LockHFLabel(int nStartBlock, int nBlockNum, String keyA, String keyB, String nControlByte);

	int PTK_LockHFIdentifier(char Identifier);

	int PTK_LockHFBlock(int nStartBlock, int nBlockNum);

	int PTK_SetHFKey(int lockType, String keyA, String keyB, String keyFx);

	int PTK_SetHFCRCCommand(int lockType, String oldCRCCommand, String newCRCCommand);

	int PTK_SetHFPrivateCommand(int lockType, String oldPrivateCommand, String newPrivateCommand);

	int PTK_LockHFUser(int lockType, int nStartBlock, int nBlockNum);

	int PTK_SetHFCFG10(String CFG_Set_0x10);

	int PTK_SetHFCFG80(String CFG_Set_0x80);

	int PTK_ReadHFRFIDSetting(int nDataBlock, int nStartBlock, int nRBlockLength);

	/*
	 * 兼容版API =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=
	 * =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^= =^-^=/
	 */
	int OpenPort(int px);

	int ClosePort();

	int SetPCComPort(int BaudRate, boolean HandShake);

	int PTK_Reset();

	int PTK_SoftFontList();

	int PTK_SoftFontDel(char pid);

	int PTK_DisableBackFeed();

	int PTK_EnableBackFeed(int distance);

	int PTK_SetPrinterState(String state);

	int PTK_DisableErrorReport();

	int PTK_EnableErrorReport();

	int PTK_SetRFIDLabelRetryCount(int nRetryCount);

	int PTK_FeedBack();

	int PTK_ReadData(int[] data, int dataSize);

	int PTK_ErrorReport(int wPort, int rPort, int BaudRate, int HandShake, int TimeOut);

	int PTK_ErrorReportNet(String PrintIPAddress, int PrintetPort);

	int PTK_ErrorReportUSB(int USBport);

	int PTK_SetFontGap(int gap);

	int PTK_SetBarCodeFontName(char Name, int FontW, int FontH);

	int PTK_RenameDownloadFont(int StoreType, char Fontname, String DownloadFontName);

	int PTK_SetCharSets(int BitValue, char CharSets, String CountryCode);

	int PTK_ReadRFTagDataNet(String IPAddress, int Port, int nFeedbackPort, int nRFPower, int bFeed, Pointer strRFData);

	int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, int bFeed, byte[] b);

	int PTK_ClearUIDBuffers();

	int PTK_ReadHFTagUIDUSB(int usbPort, char pFeed, byte[] readbuffer);

	int PTK_SetTearAndTphOffset(float tear_offset, float tph_offset);

}

package cctd.MainInterface;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;


public interface PRINTDLL extends Library {
	PRINTDLL Instance = null;

	
	int OpenPort(int px); // 打开通讯端口
	void GetOnePrinterSn(byte[] buf);//获取打印机的序列号
	int OpenPortWithSn(String Sn);//当有两台或者两台以上的打印机时用次函数打开端口 
	
	int PTK_Connect(String IPAddress,int Port);
	void PTK_CloseConnect();
	int ClosePort(); // 关闭使用 OpenPort函数打开的通讯端口

	//int SetPCComPort(int BaudRate, boolean HandShake);

	int PTK_GetErrState();//是检测使用 libPostekFunctionLib.so 里的其它函数后是否有错误产生

	int PTK_GetInfo();//获取API 函数库版本的信息
	int PTK_ClearBuffer(); // 清除打印机缓冲内存的容

	int PTK_SetDarkness(int id); // 设置打印头发热温度

	int PTK_SetPrintSpeed( int px); // 设置打印速度

	int PTK_SetLabelHeight(int lheight, int gapH);// 设置标签的高度和定位间隙 \黑线 \穿孔的高度。

	int PTK_SetLabelWidth(int lwidth); // 设置标签的宽度。

	int PTK_SetDirection(char direct);

	int PTK_SetCoordinateOrigin(int px, int py);

	int PTK_PrintLabel(int number, int cpnumber); // 命令打印机执行工作

	int PTK_DrawText(int px, int py, int pdirec, int pFont, int pHorizontal, int pVertical, char ptext, String pstr); // 打印一行文本字

	int PTK_DrawTextEx(int px, int py, int pdirec, int pFont, int pHorizontal, int pVertical, char ptext, String pstr,
			int varible); // 打印一行文本文字,内容可以是常量、序列号变或组合符串。

//	int PTK_DrawTextTrueTypeW(int x, int y, int FHeight, int FWidth, String FType, int Fspin, int FWeight,int FItalic, int FUnline, int FStrikeOut, String id_name, String data); // 打印一行
																								// TrueTypeFont文字,并且宽度和高可以微调
	int PTK_DrawTextTrueTypeW(int x, int y, int FHeight,  int FWidth,int FWeight, int FLean, int Fspin,int FUnline, int Fgap, String path,String ptext,int numOfTF);
	int PTK_DrawBarcode(int px, int py, int pdirec, String pCode, int pHorizontal, int pVertical, int pbright,
			char ptext, String pstr); // 打印一个条码。

	int PTK_DrawBarcodeEx(int px, int py, int pdirec, String pCode, int NarrowWidth, int pHorizontal, int pVertical,
			int pbright, char ptext, String pstr ,int Varible); // 打印一个条码。

	int PTK_DrawBar2D_DATAMATRIX(int x, int y, int w, int v, int o, int m, String pstr); // 打印DataMatrix二维条码

	int PTK_DrawBar2D_QR(int x, int y, int w, int v, int o, int r, int m, int g, int s, String pstr); // 打印一个 QR 条码

	int PTK_DrawBar2D_QREx(int x, int y, int o, int r, int g, int s, int v, String id_name, String pstr); // 打印一个 QR

	int PTK_DrawBar2D_MaxiCode(int x, int y, int m, int u, String pstr);

	int PTK_DrawBar2D_Pdf417(int x, int y, int w, int v, int s, int c, int px, int py, int r, int l, int t, int o,
			String pstr); // 打印一个

	int PTK_DrawBar2D_HANXIN(int x, int y, int w, int v, int o, int r, int m, int g, int s, String pstr); // 打印一个汉信码二维条码

	int PTK_PcxGraphicsList();

	int PTK_PcxGraphicsDel(String pid); // 删除存储在 打印机 RAM或 FLASH存储器里的一个或所有图形

	int PTK_PcxGraphicsDownload(String pcxname, String pcxpath); // 存储一个 PCX格式的图形到打印机

	int PTK_DrawPcxGraphics(int px, int py, String gname); // 打印指定的图形

	int PTK_PrintPCX(int px, int py, String filename);// 函数是打印一个 函数是打印一个 PCXPCXPCX格式的图形。

	int PTK_BmpGraphicsDownload(String pcxname, String pcxpath, int iDire);

	int PTK_BinGraphicsList();

	int PTK_BinGraphicsDel(String pid);

	int PTK_BinGraphicsDownload(String name, int pbyte, int pH, byte[] Gdata);

	int PTK_RecallBinGraphics(int px, int py, String name);

	int PTK_DrawBinGraphics(int px, int py, int pbyte, int pH, byte[] Gdata);

	int PTK_DrawRectangle(int px, int py, int thickness, int pEx, int pEy); // 画矩形

	int PTK_DrawLineXor(int px, int py, int pbyte, int pH);

	int PTK_DrawLineOr(int px, int py, int pLength, int pH); // 画直线 (两直线相交处作”或”处理 )。

	int PTK_DrawDiagonal(int px, int py, int thickness, int pEx, int pEy);

	int PTK_DrawWhiteLine(int px, int py, int plength, int pH);

	int PTK_SoftFontList();

	int PTK_SoftFontDel(char pid);

	int PTK_FormList();

	int PTK_FormDel(String pid); // 删除存储在打印机里的一个或所有表格

	int PTK_FormDownload(String pid); // 存储一个表格到打印机; 此命令与 此命令与 PTK_FormEnd 函数配对使用。

	int PTK_FormEnd(); // 结束存储表格 (Form),此函数与 PTK_FormDownload配对使用

	int PTK_ExecForm(String pid); // 运行指定的表格

	//int PTK_DefineCounter(int id, int maxNum, short ptext, String pstr, String pMsg); // 定义一个序列号变量

	int PTK_DefineCounter(int id, int maxNum, char ptext, String pstr, String pMsg);

	int PTK_DefineVariable(int pid, int pmax, char porder, String pmsg);

	int PTK_Download(); // 下载变量或系列号变量

	int PTK_DownloadInitVar(String pstr); // 初始化变量或系列号变量

	int PTK_PrintLabelAuto(int number, int cpnumber);

	int PTK_SendFile(String FilePath);

	int PTK_GetUSBID(String USBDeviceSerial);

	int PTK_DisableBackFeed();

	int PTK_EnableBackFeed(int distance);

	int PTK_PrintConfiguration();

	int PTK_SetPrinterState(char state);

	int PTK_DisableErrorReport();

	int PTK_EnableErrorReport();

	int PTK_EnableFLASH();

	int PTK_DisableFLASH();

	int PTK_FeedMedia();

	int PTK_MediaDetect();

	int PTK_CutPage(int page);

	int PTK_CutPageEx(int page);

	int PTK_FeedBack();

	int PTK_Reset();

	int PTK_ErrorReport(int wPort, int rPort, int BaudRate, int HandShake, int TimeOut);

	int PTK_ErrorReportUSB(int USBport); // 发送错误查询指令到打印机并且指定USB端口接收和分析打印机当前错误代码。

	int PTK_RWRFIDLabel(int nRWMode, int nWForm, int nStartBlock, int nWDataNum, int nWArea, String pstr); // 读写RFID标签。

	int PTK_SetRFIDLabelRetryCount(int nRetryCount);

	int PTK_SetRFLabelPWAndLockRFLabel(int nOperationMode, int OperationnArea, String pstr);// 设置RFID标签密码和锁定RFID标签

	int PTK_SetRFID(int nReservationParameters, int nReadWriteLocation, int ReadWriteArea, int nMaxErrNum,
			int nErrProcessingMethod);

	int PTK_SetFontGap(int gap);

	int PTK_SetBarCodeFontName(char Name, int FontW, int FontH);

	int PTK_RenameDownloadFont(int StoreType, char Fontname, String DownloadFontName);

	int PTK_SetCharSets(int BitValue, char CharSets, String CountryCode);

	/*int PTK_ReadRFTagData(int wPort, int rPort, int BaudRate, boolean HandShake, int TimeOut, int nDataBlock,
			int nRFPower, boolean bFeed, String strRFData);

	int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, boolean bFeed, String strRFData);

	int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, boolean bFeed, char[] strRFData);
*/
	int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, int bFeed, Pointer strRFData);

	/*int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, boolean bFeed, byte[] strRFData);

	int PTK_ReadRFTagDataUSB(int usbPort, int nDataBlock, int nRFPower, int bFeed, String strRFData);
	
*/
	/*
	 * 从指定TCP/IP端口发送读取RFID标签数据指令到打印机并接收打印机当前读取的RFID标签信息。
	 @param  IPAddress: 打印机IP地址.
     @param  Port:      打印机网络端口.
	 @param  nDataBlock:选择数据区域; 0: TID , 1: EPC , 2: TID+EPC.
 	 @param  nRFPower: 设置读功率;范围: 0 ~ 30dBm;设置为0时,采用系统默认23dBm读取功率;
     @param  bFeed:     读取后是否向前走一张标签; 
             1:向前走一张标签有效,
             0:向前走一张标签无效。
	 @param  strRFData:  用于存储获取RFID标签数据信息。
*/
	int PTK_ReadRFTagDataNet(String IPAddress, int Port, int nFeedbackPort, int nRFPower, int bFeed,String strRFData);

	//int PTK_Connect(String IPAddress, int Port);

	//int   PTK_CloseConnect();
    //int PTK_GetPrinterName(byte[] p);
    
    
    //高频RFID
    /*
     * 读写高频RFID标签*/
    int PTK_RWHFLabel(char ptext,  int nStartBlock,  int nBlockNum,String  pstr,int Varible);
    
    //设置高频RFID 标签。
    int PTK_SetHFRFID(char pWForm, int nProtocolType,int nMaxErrNumd);
    int PTK_ReadRFID(int comm_mode,int start_addr,int block,int len,int atuo_foward,byte[] data);
    int PTK_WriteRFID(int start_addr,int block,int len,int data_moden,String data);
    
    //从指定串口接收打印机当前读取的高频RFID标签信息。
  //  int PTK_ReadHFTagData( int wPort,  int rPort, int BaudRate, Boolean HandShake,  int TimeOut, int nStartBlock,  int nBlockNum,char pFeed,Pointer strRFData);

    //从指定USB端口发送读取高频RFID标签数据指令到打印机并接收打印机当前读取的RFID标签信息。
 //   int PTK_ReadHFTagDataUSB( int usbPort, int nStartBlock, int nBlockNum,char pFeed,Pointer strRFData);
    
    //从指定串口接收打印机当前读取取的高频RFID标签UID信息。
   // int PTK_ReadHFTagUID( int wPort,  int rPort, int BaudRate, Boolean HandShake,  int TimeOut,char pFeed,Pointer strRFData);
    
    //从指定USB端口发送读取高频RFID标签数据指令到打印机并接收打印机当前读取的RFID标签UID信息.
  //  int PTK_ReadHFTagUIDUSB( int usbPort,char pFeed,Pointer strRFData);
    
    //打印过程中先读取高频标签指定位置块的数据内容,然后打印在标签上面。   注意:  此方法需配合PTK_DrawTextEx 一起使用。
  //  int PTK_ReadHFTagDataPrintAuto( int nStartBlock, int nBlockNum);

}

pom.xml设置打包

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>win32-x86-64/CDFPSK64.dll</include>
                    <include>linux-x86-64/**</include>

                    <include>libfreetype.so</include>
                    <include>libfreetype_PTK.a</include>
                    <include>libfreetype_PTK.la</include>
                    <include>libfreetype_PTK.so</include>
                    <include>libfreetype_PTK.so.6</include>
                    <include>libfreetype_PTK.so.6.11.2</include>
                    <include>libPostekFunctionLib.so</include>
                    <include>libusb-1.0.a</include>
                    <include>libusb-1.0.la</include>
                    <include>libusb-1.0.so</include>
                    <include>libusb-1.0.so.0</include>
                    <include>libusb-1.0.so.0.1.0</include>

                    <include>font/simsun.ttf</include>

                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

下载resources资源

https://download.csdn.net/download/weixin_44174685/89071743

获取更多相关资料

百度搜索:POSTEK,博思得官网,
如有问题,联系客服

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值