package com.ruoyi.ptxlib.service;

import com.ruoyi.ptxlib.domain.PTXLabelInfo;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.ptr.IntByReference;

/**
 * PTX库工具包
 */
public interface PTXLib extends Library {
    /**
     * "PTXLIB" 文件名称，不包括后缀
     *  PTXLib.class 类名
     *  调用:
     *      PTXLib.INSTANCE.XXX
     */
    PTXLib INSTANCE = Native.load("PTXLIB", PTXLib.class);

    /**
     * 初始化DLL<br/>
     * 该API将初始化DLL。这是用户应用程序调用的第一个API，在使用任何其他API之前。
     */
    void PTXA_DLLinit();

    /**
     * 退出DLL<br/>
     * 该API将释放DLL内所有已分配的内存。这是最后一个API，在DLL调用结束前有用户应用程序调用。
     */
    void PTXA_DLLexit();

    /**
     * 获取DLL版本<br/>
     * 该API将返回PTNX DLL版本
     *
     * @return Ptnx DLL版本
     */
    IntByReference PTXA_GetDllVersion();

    /**
     * 重置打印机<br/>
     * 该API将重置打印机，使用PTX_SETUP命令
     *
     * @return reset命令将以NULL(‘\0')字符结束
     */
    IntByReference PTXA_PrinterReset();

    /**
     * 设置打印机状态<br/>
     * 该API将启用或禁用侦听器
     *
     * @param mode <br/>
     * PTXA_SnoopSer 启用串口侦听器<br/>
     * PTXA_SnoopPar 启用并口侦听器<br/>
     * PTXA_SnoopEth 启用以太网端口的侦听器<br/>
     * PTXA_SnoopOff 关闭侦听器<br/>
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_SetupStatus(Integer mode);

    /**
     * 获取打印机状态<br/>
     * 这个API返回PGL STATUS命令，用户可以将结果发送到打印机，通知打印机通过他们打开的端口将打印机状态发送回用户的应用程序。
     *
     * @return 状态
     */
    IntByReference PTXA_GetStatus();

    /**
     * 设置打印机属性<br/>
     * 该API将在正常模式下使用PGL PAPER命令逐一设置打印机属性。值定义遵循PGL PAPER命令标准
     *
     * @param mode 下面的描述了PtnxDIlCommDef.h中的常量。
     * @param value 下面的描述了PtnxDIICommDef.h中的常量。<br/>
     * <table border=0 cellspacing=4 cellpadding=2>
     *  <tr>
     *    <th align=centen>mode</th>
     *    <th align=centen>units</th>
     *    <th align=centen>value</th>
     *    <th align=centen>comments</th>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeReset</td>
     *    <td>n/a</td>
     *    <td>n/a</td>
     *    <td>重置模式参数不会链接表单的任何模式参数</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeWidth</td>
     *    <td>0.0001"</td>
     *    <td>100 - 8500</td>
     *    <td>基于模型的最大宽度</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeLength</td>
     *    <td>0.0001"</td>
     *    <td>100-99000</td>
     *    <td>范围 0.1“ - 99</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeSpeed</td>
     *    <td>IPS</td>
     *    <td>1 - 14</td>
     *    <td>最大IPS因型号而异</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeIntensity</td>
     *    <td>n/a</td>
     *    <td>100-8500</td>
     *    <td></td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeLabel</td>
     *    <tb>右同</tb>
     *    <td>
     *       PTXA_JobLabelNoSensor<br/>
     *       PTXA_JobLabelMark<br/>
     *       PTXA_JobLabelGap<br/>
     *       PTXA_JobLabelAdvGap<br/>
     *       PTXA_JobLabelAdvNotch<br/>
     *    </td>
     *    <td>并非所有模式都可用，请参阅PGL程序员参考手册中的PAPER命令</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeMedia</td>
     *    <tb>右同</tb>
     *    <td>
     *      PTXA_JobMediaCon<br/>
     *      PTXA_JobMediaTearoffStrip<br/>
     *      PTXA_JobMediaTearoff <br/>
     *      PTXA_JobMediaPeeloff<br/>
     *      PTXA_JobMediaCut<br/>
     *    </td>
     *    <td>请注意，并非所有模式都可用来自PGL的PAPER命令程序员参考手册</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_JobModeRotate a</td>
     *    <tb>Degrees</tb>
     *    <td>0, 90, 180, 270</td>
     *    <td></td>
     *  </tr>
     * </table>
     *
     * @return 0, 90, 180, 270
     */
    Integer PTXA_JobSetup(Integer mode, Integer value);

    /**
     * 创建Form表单<br/>
     * 请求创建表单，使用PGL create命令
     *
     * @param FormName Description创建表单的名称
     * @return 0 - 1000 创建的表单。保存此值并在窗体中创建图形时使用。
     */
    Integer PTXA_CreateForm(String FormName);

    /**
     * 设置表单参数
     *
     * @param mode <br/>
     * PTXA_FormSetupLen 表单长度: IGP点或1/72“的形式长度<br/>
     * PTXA_FormSetupCount 执行次数:执行表单的次数
     * @param value <br/>
     * PTXA_FormSetupLen: 0 – 65536<br/>
     * PTXA_FormSetupCount: 1 – 999
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_FormSetup(Integer mode, Integer value);

    /**
     * 设置清晰度<br/>
     * 为点行和列指定的数据定位定义表单的垂直线和水平间距。<br/>
     * 使用PGL SCAl F-DOT命令。<br/>
     * l默认的比例是字符行/列，当设置了这个api后，表格的比例将改为点行/列
     *
     * @param hdpi 水平分辨率，默认为60dpi
     * @param vdpi 垂直分辨率，默认为72dpi
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_Scale(Integer hdpi, Integer vdpi);

    /**
     * 绘制方框。<br/>
     * 使用PGL box命令
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param LT 1 - 表单长度 <br/>  线条粗细，输入1或更大的值。
     * @param SR 0 - 表单长度 <br/> 盒子的起始行。根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 盒子的起始列。根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param ER 0 - 表单宽度 <br/> 盒子的结束行。根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param EC 0 - 表单宽度 <br/> 盒子的结束列。根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_DrawBox(Integer lForm, Integer LT, Integer SR, Integer SC, Integer ER, Integer EC);

    /**
     * 绘制线条。<br/>
     * 根据参数SR SC ER EC，它将使用PGLDIAG/HORZ/VERT命令在DLL内相应地确定。
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param LT 1 - 表单长度 <br/> 线条粗细，输入1或更大的值。
     * @param SR 0 - 表单长度 <br/> 盒子的起始行。根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 盒子的起始列。根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param ER 0 - 表单宽度 <br/> 盒子的结束行。根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param EC 0 - 表单宽度 <br/> 盒子的结束列。根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。 <br/>
     * 请注意: <br/>
     * 1.当SR<>ER和SC<>EC时，使用DIAG <br/>
     * 2.当SR==ER时，使用HORZ <br/>
     * 3.当SC==EC时，使用VERT <br/>
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_DrawLine(Integer lForm, Integer LT, Integer SR, Integer SC, Integer ER, Integer EC);

    /**
     * 定义和定位静态数据字段上的ASCII文本
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param SR 0 - 表单长度 <br/> 根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param VE 0 - 63   <br/>   垂直扩展是默认高度的倍数。
     * @param HE 0 - 63   <br/>   水平展开是默认宽度的倍数。
     * @param data 文本字符串数据  要打印的字符串数据。该函数将使用“*”字符作为数据的默认分隔符。如果使用“*”作为数据的一部分，它将使用另一个可打印字符作为分隔符(由DLL内部决定)。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_PrintTextEng(Integer lForm, Integer SR, Integer SC, Integer VE, Integer HE, String data);

    /**
     * 在静态数据字段上定义和定位ASCII或汉字文本
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param SR 0 - 表单长度 <br/> 根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param VE 0 - 63   <br/>   垂直扩展是默认高度的倍数。
     * @param HE 0 - 63   <br/>   垂直扩展是默认高度的倍数。
     * @param data 文本字符串数据 <br/> 要打印的字符串数据。该函数将使用“*”字符作为数据的默认分隔符。如果使用“*”作为数据的一部分，它将使用另一个可打印字符作为分隔符(由DLL内部决定)。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_PrintTextCH(Integer lForm, Integer SR, Integer SC, Integer VE, Integer HE, String data);

    /**
     *
     * @param filename
     * @param logoname
     * @return
     */
    Integer PTXA_DownloadPCX(String filename, String logoname);

    /**
     * 打印商标
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param SR 0 - 表单长度 <br/> 根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param logoname 徽标必须在PGL <br/> NORMAL模式下通过-LOGO预先定义，或在PGL CREATE模式下通过LOGODEF预先定义。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_PrintImage(Integer lForm, Integer SR, Integer SC, String logoname);

    /**
     * 设置条形码的可选参数.<br/>
     * 该API需要之前调用PTXA_PrintBarcode()，参数依次设置
     *
     * @param BcdType 条形码符号学的类型。常量在PtnxD11CommDef.h中定义。 <br/>
     * PTXA_BCD_C39 <br/>
     * PTXA_BCD_C128A <br/>
     * PTXA_BCD_C128B <br/>
     * PTXA_BCD_C128C <br/>
     * PTXA_BCD_EAN13 <br/>
     * PTXA_BCD_UPCA <br/>
     * PTXA_BCD_MAXICODE <br/>
     * PTXA_BCD_QR <br/>
     * PTXA_BCD_PDF417 <br/>
     * @param mode 确定要更改的条形码特性。 见下表。请注意，并非所有模式都可以与每个条形码类型组合，如表2所示。
     * @param value mode的值，ASCII文本格式 <br/>
     * <table border=0 cellspacing=3 cellpadding=2>
     *  <tr>
     *    <th align=centen>mode</th>
     *    <th align=centen>value</th>
     *    <th align=centen>comments</th>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_RESET</td>
     *    <td>没有要求</td>
     *    <td>将所有值更改回默认值</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_HEIGHT</td>
     *    <td>新墨西哥州的格式</td>
     *    <td>条码符号整体高度，数值格式为n.m，其中n为十分之一英寸，m = IGP点</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_ROTATION</td>
     *    <td>
     *       PTXA_BcdRotatePort <br/>
     *       PTXA_BcdRotateLand <br/>
     *       PTXA_BcdRotateInvPort <br/>
     *       PTXA_BcdRotateInvLand <br/>
     *    </td>
     *    <td>
     *       旋转:0度 <br/>
     *       旋转:90度 <br/>
     *       旋转:180度 <br/>
     *       旋转:270度 <br/>
     *    </td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_MAGNIFY</td>
     *    <td>X1, X1A, X2</td>
     *    <td>指定要使用的内置条码比率(例如，X1, X1A, X2)。有关可用选项，请参阅PGL程序员参考手册。</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_PDF</td>
     *    <td>
     *       PTXA_BcdPDFOff <br/>
     *       PTXA_BcdPDFOn
     *    </td>
     *    <td>PDF启用可打印数据字段。</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCDOptParam_RATIO</td>
     *    <td>窄条:窄空间:宽条:宽空间</td>
     *    <td>根据PGL程序员的Rfrca提供您自己的窄条和宽条值</td>
     *  </tr>
     * </table><br/>
     * 注意：并非所有的模式都可以与所有的条形码类型组合，有效的组合如下，它将在DLL内检查，详细信息可参考PGL程序员参考手册。<br/>
     * 表二:<br/>
     * <table border=0 cellspacing=2 cellpadding=2>
     *  <tr>
     *    <th align=centen>条码类型</th>
     *    <th align=centen>可用模式</th>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCD_C39</td>
     *    <td>
     *       PTXA_BCDOptParam_HEIGHT
     *       PTXA_BCDOptParam_ROTATION
     *       PTXA_BCDOptParam_MAGNIFY
     *       PTXA_BCDOptParam_PDF
     *    </td>
     *  </tr>
     *  <tr>
     *    <td>
     *       PTXA_BCD_C128A
     *       PTXA_BCD_C128B
     *       PTXA_BCD_C128C
     *    </td>
     *    <td>
     *       PTXA_BCDOptParam_HEIGHT
     *       PTXA_BCDOptParam_ROTATION
     *       PTXA_BCDOptParam_MAGNIFY
     *       PTXA_BCDOptParam_PDF
     *    </td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCD_EAN13</td>
     *    <td>
     *       PTXA_BCDOptParam_HEIGHT
     *       PTXA_BCDOptParam_ROTATION
     *       PTXA_BCDOptParam_MAGNIFY
     *       PTXA_BCDOptParam_PDF
     *    </td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCD_UPCA</td>
     *    <td>
     *       PTXA_BCDOptParam_HEIGHT
     *       PTXA_BCDOptParam_ROTATION
     *       PTXA_BCDOptParam_MAGNIFY
     *       PTXA_BCDOptParam_PDF
     *    </td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCD_MAXICODE</td>
     *    <td>PTXA_BCDOptParam_ROTATION</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_BCD_QR</td>
     *    <td>
     *       PTXA_BCDOptParam_ROTATION
     *       PTXA_BCDOptParam_RATIO
     *       (只有x维度的打印机点)
     *    </td>
     *  </tr>
     *  <tr>
     *     <td>PTXA_BCD_PDF417</td>
     *     <td>PTXA_BCDOptParam_ROTATION</td>
     *  </tr>
     * </table>
     *
     * @return
     */
    Integer PTXA_SetBarcode(Integer BcdType, Integer mode, String value);

    /**
     * 指定的条形码将包含在表格中。
     *
     * @param lForm 0-1000 <br/> 待打印表格
     * @param BcdType 条形码符号学的类型。<br/>
     * PTXA_BCD_C39 <br/>
     * PTXA_BCD_C128A<br/>
     * PTXA_BCD_C128B<br/>
     * PTXA_BCD_C128C<br/>
     * PTXA_BCD_EAN13<br/>
     * PTXA_BCD_UPCA<br/>
     * PTXA_BCD_MAXICODE<br/>
     * PTXA_BCD_QR<br/>
     * PTXA_BCD_PDF417<br/>
     * @param SR 0 - 表单长度 <br/> 根据比例设置，该参数可以是点行或字符行。不支持CP.DP格式。默认值是字符行。
     * @param SC 0 - 表单宽度 <br/> 根据比例设置，该参数可以是点列或字符列。不支持CP.DP格式。默认是字符列。
     * @param data 文本字符串数据 <br/> 要打印的字符串数据。该函数将使用“*”字符作为数据的默认分隔符。如果使用“*”作为数据的一部分，它将使用另一个可打印字符作为分隔符(由DLL内部决定)。
     *
     * @return 操作成功/失败，参数无效：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_PrintBarcode(Integer lForm, Integer BcdType, Integer SR, Integer SC, String data);

    /**
     * 将PTXA_CreateForm创建的表单返回并发送给用户应用程序，<br/>
     * DLL将根据用户应用程序的输入执行API并生成PGL表单(包括打印机设置和创建表单)，将保存整个PGL程序的缓冲区指针返回给用户应用程序。<br/>
     * 调用者可以将它们发送到打印机或重新存储到用户应用程序中的特定内存中。
     *
     * @param lForm 0 - 1000 <br/> 待打印表格
     * @return 指向缓冲区的指针 P指向保存整个PGL程序的缓冲区的指针，以“\0”结尾。
     */
    IntByReference PTXA_PrintForm(Integer lForm);

    /**
     * 将PTXA_PrintForm创建的表单数据复制到用户缓冲区中。
     *
     * @param lForm 0 - 1000 <br/> 待打印表格
     * @return 指向缓冲区的指针 P指向保存整个PGL程序的缓冲区的指针，以“\0”结尾。
     */
    IntByReference PTXA_GetFormData(Integer lForm);

    /**
     * 为RFID设置参数
     *
     * @param length 0 - 1000 <br/> 指定标记内字段位长度的十进制数
     * @param incremental True/False <br/> 该参数将位字段从非增量数据格式设置为增量固定数据格式。
     * @param format B\D\H <br/> 此参数指定密码数据的格式。B表示二进制，D表示十进制，H表示十六进制。
     * @param increment_amount 0 - 1000 <br/> 如果bit字段是增量固定数据格式，则此参数指定每次执行表单时要增加的数量。
     * @param data 文本字符串数据 <br/> 要打印的字符串数据。该函数将使用“*”字符作为数据的默认分隔符。如果使用“*”作为数据的一部分，它将使用另一个可打印字符作为分隔符(由DLL内部决定)。
     *
     * @return 操作成功/失败，参数无效：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_SetupRFID(Integer length, Boolean incremental, String format, Integer increment_amount, String data);

    /**
     * 编写RFID标签
     *
     * @param lForm 0 - 1000 <br/> 包含RFID的表格
     * @param LOCK 1 - FFFFFFFF <br/> 可选参数，用于锁定数据块，防止数据块被覆盖
     * @param membank 指定将应用此命令的哪个标记逻辑内存区域 <br/>
     * EPC <br/>
     * TID <br/>
     * USR <br/>
     * ACS <br/>
     * KIL <br/>
     * PC
     *
     * @return 操作成功/失败，参数无效：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_WriteRFID(Integer lForm, String LOCK, String membank);

    /**
     * 将RFID标签的内容读取到一个动态字段中，并请求打印机将ASCll表示发送给主机。
     *
     * @param lForm 0 - 1000 <br/> 包含RFID的表格
     * @param UNLOCK 1 - FFFFFFFF <br/> 可选参数解锁数据块，以便它可以稍后被覆盖
     * @param membank 指定将应用此命令的哪个标记逻辑内存区域<br/>
     * EPC<br/>
     * TID<br/>
     * USR<br/>
     * ACS<br/>
     * KIL<br/>
     * PC<br/>
     * @param length 0 - 1000 <br/> 指定RFID标签存储库的总位长度的十进制数
     * @param format B\D\H <br/> 此参数指定密码数据的格式。B表示二进制，D表示十进制，H表示十六进制。
     *
     * @return 操作成功/失败，参数无效：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_VerifyRFID(Integer lForm, String UNLOCK, String membank, Integer length, String format);

    /**
     * 设置文本字体
     *
     * @param mode 见下表
     * @param value 见下表<br/>
     * <table border=0 cellspacing=3 cellpadding=2>
     *  <tr>
     *    <th align=centen>mode</th>
     *    <th align=centen>value</th>
     *    <th align=centen>comments</th>
     *  </tr>
     *  <tr>
     *    <td>PTXA_FontName</td>
     *    <td>string</td>
     *    <td>标识特定的字体</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_FontBold</td>
     *    <td>
     *       PTXA_BoldOn <br/>
     *       PTXA_BoldOff
     *    </td>
     *    <td>选择粗体属性</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_FontSlant</td>
     *    <td>
     *       PTXA_SlantRight <br/>
     *       PTXA_SlantLeft
     *    </td>
     *    <td>选择一个字体倾斜</td>
     *  </tr>
     *  <tr>
     *    <td>PTXA_FontEncoding</td>
     *    <td>
     *       PTXA_CPAscii <br/>
     *       PTXA_CPGB <br/>
     *       PTXA_CPBig5 <br/>
     *       PTXA_CPKSC <br/>
     *       PTXA_CPSJIS <br/>
     *       PTXA_CPUTF8 <br/>
     *    </td>
     *    <td>选择一个字体编码</td>
     *  </tr>
     * </table>
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_FontSetup(Integer mode, String value);

    /**
     * 按照请求的数据长度将PTXA_PrintForm创建的表单数据复制到用户的缓冲区中。
     *
     * @param EndLine 返回数据的结束符号
     * @return 指向保存回送数据的缓冲区的指针
     */
    IntByReference PTXA_Read(String EndLine);

    /**
     *
     * @return
     */
    Integer about();

    /**
     * 打开端口<br/>
     * 该API将启动打印机轴
     *
     * @param printername <br/>
     * 对于本地打印机，请指定打印机驱动程序名称，如：tpp-244 Plus<br/>
     * 对于网络打印机，请指定UNC路径和打印机名称，如：lserverlTTP243<br/>
     * 如果是中心接口，请指定LPT1 ~ LPT4，如：LPT1<br/>
     * 如需直接使用USB接口，请指定USB，如：USB<br/>
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer openport(String printername);

    /**
     * 开放以太网<br/>
     * 该API将打开一个以太网连接
     *
     * @param ipaddress IP地址，如：192.168.2.33
     * @param portnumber 端口号
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer openethernet(String ipaddress, Integer portnumber);

    /**
     * 关闭端口<br/>
     * 该API将关闭打印机轴
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer closeport();

    /**
     * 发送命令到打印机
     *
     * @param printercommand 发送的打印机命令。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer sendcommand(String printercommand);

    /**
     *
     * @param lForm
     * @param printercommand 发送的打印机命令。
     *
     * @return 操作成功/失败：<br/> PTXA_OK/PTXA_INVALID
     */
    Integer PTXA_SendCommand(Integer lForm, String printercommand);

    /**
     *
     * @param printerCommand
     * @param CommandLength
     * @return
     */
    Integer sendBinaryDataNoCRLF(byte[] printerCommand, Integer CommandLength);
}
