com.syc.function

## 类 Function

- java.lang.Object
- - com.syc.function.Function

-     public class Function
      extends java.lang.Object

  RFID读卡器USB接口，Linux下的Java接口类。使用该包时，请将Function.jar,jNative.jar,libfunction.so,libJNativeCpp.so复制到工程目录下。导入 Function.jar,jNative.jar接口包。
  函数返回值代码表：
  0x00 命令执行成功
  0x01 命令操作失败（失败原因请参考底层单片机上传代码表）
  0x02 地址校验错误
  0x03 没有选择COM口
  0x04 读写器返回超时
  0x05 数据包流水号不正确
  0x07 接收异常
  0x0A 参数值超出范围
  底层单片机上传代码表：
  0x80 参数设置成功
  0x81 参数设置失败
  0x82 通讯超时
  0x83 卡不存在
  0x84 接收卡数据出错
  0x87 未知的错误
  0x85 输入参数或者输入命令格式错误
  0x8f 输入的指令代码不存在
  0x8A 在对于卡块初始化命令中出现错误（仅用于14443命令）
  0x8B 在防冲突过程中得到错误的序列号（仅用于14443命令）
  0x8C 密码认证没通过（仅用于14443命令）
  0x90 卡不支持这个命令（仅用于15693命令）
  0x91 命令格式有错误（仅用于15693命令）
  0x92 在命令的FLAG参数中，不支持OPTION 模式（仅用于15693命令）
  0x93 要操作的BLOCK不存在（仅用于15693命令）
  0x94 要操作的对象已经别锁定，不能进行修改（仅用于15693命令）
  0x95 锁定操作不成功（仅用于15693命令）
  0x96 写操作不成功（仅用于15693命令）

- - ### 构造器概要

    构造器
    构造器和说明
    `Function()`

  - ### 方法概要

    方法
    限定符和类型 | 方法和说明
    --- | ---
    `static int` | `AntiType_B(byte[] buffer)` ISO14443B命令：该命令执行ISO14443B中的AnticollB命令.
    `static int` | `API_ControlBuzzer(byte freq, byte duration, byte[] buffer)` 系统命令：设置蜂鸣器的工作状态，包括，蜂鸣器的工作周期以及循环的次数。
    `static int` | `API_ControlLED(byte freq, byte duration, byte[] buffer)` 系统命令：设置灯的工作状态，包括，灯亮的周期以及循环的次数。
    `static int` | `API_GetSerNum(byte[] buffer)` 系统命令：读取由厂家预设的1个字节的读卡器地址和8个字节序列号。
    `static int` | `API_ISO14443TypeBTransCOSCmd(byte[] cmd, int cmdSize, byte[] buffer)` ISO14443B命令：ISO14443传送命令，可以通过此命令向卡发任意有效的命令，数据.
    `static int` | `API_ISO15693_GetMulSecurity(byte flags, byte blkAddr, byte blkNum, byte[] uid, byte[] pBuffer)` ISO15693命令：用于获取卡的各个块的安全状态位的数据
    `static int` | `API_ISO15693_GetSysInfo(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：用于得到卡的详细信息，具体内容请参考，ISO15693协议资料。
    `static int` | `API_ISO15693_Inventory(byte flag, byte afi, byte[] pData, byte[] nrOfCard, byte[] pBuffer)` ISO15693命令：此命令通过防冲突用于得到读卡区域内所有卡片的序列号（能得到的卡片数量与模块天线的输出功率有关，一般能对2~6卡进行防冲突）.
    `static int` | `API_ISO15693Lock(byte flags, byte num_blk, byte[] uid, byte[] buffer)` ISO15693命令：用于锁定块内容。
    `static int` | `API_ISO15693Read(byte flags, byte blk_add, byte num_blk, byte[] uid, byte[] buffer)` ISO15693命令：用来读取1个或多个扇区的值，如果要读每个块的安全位，将FLAGS中Option_flag置为1，即FLAG = 0X42，每个扇区将返回5个字节，包括1个表示安全状态字节和4个字节的块内容，这时候每次最多能读12个块。
    `static int` | `API_ISO15693Select(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：此命令必须用地址模式，如果发送的数据与被操作的卡的序列号相同，操作成功后，卡将进入被选择状态，否则状态不变。
    `static int` | `API_ISO15693StayQuiet(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：此命令用于将卡置于静止的状态, 必须用地址模式，如果发送的数据与被操作的卡的序列号相同，操作成功后，卡将进入静止状态，否则状态不变。
    `static int` | `API_ISO15693TransCOSCmd(byte[] cmd, int cmdSize, byte[] buffer)` ISO15693命令：一个通用命令，用户可以通过此命令，对卡进行各种操作。
    `static int` | `API_ISO15693Write(byte flags, byte blk_add, byte num_blk, byte[] uid, byte[] data)` ISO15693命令：对一个块进行写操作（每次只能写一个块）。
    `static int` | `API_LockAFI(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：用于锁定卡的AFI，锁定后AFI不可以更改。
    `static int` | `API_LockDSFID(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：用于锁定卡的DSFID，锁定后DSFID不可以更改.
    `static int` | `API_PCDDec(byte mode, byte SectNum, byte[] snr, byte[] value)` ISO14443A命令：对卡的指定扇区进行减值操作。
    `static int` | `API_PCDInc(byte mode, byte SectNum, byte[] snr, byte[] value)` ISO14443A命令：对卡的指定扇区进行加值操作。
    `static int` | `API_PCDInitVal(byte mode, byte SectNum, byte[] snr, byte[] value)` ISO14443A命令：初始化卡.
    `static int` | `API_PCDRead(byte mode, byte blk_add, byte num_blk, byte[] snr, byte[] buffer)` ISO14443A命令：在指定位置读取指定长度的数据.
    `static int` | `API_PCDWrite(byte mode, byte blk_add, byte num_blk, byte[] snr, byte[] buffer)` ISO14443A命令：在指定位置写入数据.
    `static int` | `API_ResetToReady(byte flags, byte[] uid, byte[] buffer)` ISO15693命令：操作成功后，卡回到Ready状态。
    `static int` | `API_SetSerNum(byte[] newValue, byte[] buffer)` 系统命令：设置 8个字节的产品序列号。
    `static int` | `API_WriteAFI(byte flags, byte afi, byte[] uid, byte[] buffer)` ISO15693命令：对卡进行写AFI操作。
    `static int` | `API_WriteDSFID(byte flags, byte DSFID, byte[] uid, byte[] buffer)` ISO15693命令：对卡的进行写DSFID操作.
    `static int` | `GET_SNR(byte mode, byte API_halt, byte[] snr, byte[] value)` ISO14443A命令：返回1个字节的单卡或多卡标识，4个字节的卡号。
    `static int` | `GetVersionNum(byte[] VersionNum)` 系统命令：读取读写器的版本号.
    `static int` | `MF_Anticoll(byte[] snr, byte[] status)` ISO14443A命令：检测卡片数量，单卡或多卡，并返回4个字节的卡号。
    `static int` | `MF_Halt()` ISO14443A命令：选择卡，使卡进入被中断的状态.
    `static int` | `MF_Request(byte inf_mode, byte[] buffer)` ISO14443A命令：发送ISO14443 A 寻卡指令。
    `static int` | `MF_Restore(byte mode, int cardlength, byte[] carddata)` ISO14443A命令：按照选择的模式，进行数据的发送.
    `static int` | `MF_Select(byte[] snr)` ISO14443A命令：使卡进入被选择的状态.
    `static int` | `ReadUserInfo(int num_blk, int num_length, byte[] user_info)` 系统命令：读取读卡器中提供4个块（每个块不能大于120个字节）的数据。
    `static int` | `Request_AB(byte[] buffer)` ISO14443B命令：该命令执行几集成了ISO14443B中的，REQUEST和ATTRIB命令，通过一个命令使卡复位。
    `static int` | `RequestType_B(byte[] buffer)` ISO14443B命令：该命令执行ISO14443B中的REQB命令，获取卡片的PUPI代码。
    `static int` | `SelectType_B(byte[] SerialNum)` ISO14443B命令：该命令执行ISO14443B中的ATTRIB命令，给已知PUPI的卡片分配一个识别号CID.
    `static int` | `UL_HLRead(byte mode, byte blk_add, byte[] snr, byte[] buffer)` Ultralight命令：发送Ultralight读卡命令。
    `static int` | `UL_HLWrite(byte mode, byte blk_add, byte[] snr, byte[] buffer)` Ultralight命令：发送Ultralight写卡命令。
    `static int` | `UL_Request(byte mode, byte[] snr)` Ultralight命令：发送Ultralight寻卡指令。
    `static int` | `WriteUserInfo(int num_blk, int num_length, byte[] user_info)` 系统命令：读卡器提供4个块（每个块不能大于120个字节），共480个字节空间的用户数据区。

    - ### 从类继承的方法 java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 构造器详细资料

    - #### Function

          public Function()

  - ### 方法详细资料

    - #### API_SetSerNum

          public static int API_SetSerNum(byte[] newValue,
                          byte[] buffer)

      系统命令：设置 8个字节的产品序列号。
      参数:
        `newValue` - 8个字节的读写器序列号.
        `buffer` - 用来返回接收到的数据.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        设置成功：
        buffer=0x80
        设置失败：
        则buffer为底层（读卡器单片机）上传的错误代码。

    - #### API_GetSerNum

          public static int API_GetSerNum(byte[] buffer)

      系统命令：读取由厂家预设的1个字节的读卡器地址和8个字节序列号。
      参数:
        `buffer` - 用来返回接收到的数据。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        buffer[0] 读写器地址。
        buffer[1...8] 8个字节的读写器序列号。

    - #### WriteUserInfo

          public static int WriteUserInfo(int num_blk,
                          int num_length,
                          byte[] user_info)

      系统命令：读卡器提供4个块（每个块不能大于120个字节），共480个字节空间的用户数据区。用户可以根据需要，储存相应的用户信息到读写器中。
      参数:
        `num_blk` - 区域号。
        `num_length` - 数据长度。
        `user_info` - 用户数据。
      返回:
        0x00 设置成功.
        0x01 设置失败.

    - #### ReadUserInfo

          public static int ReadUserInfo(int num_blk,
                         int num_length,
                         byte[] user_info)

      系统命令：读取读卡器中提供4个块（每个块不能大于120个字节）的数据。
      参数:
        `num_blk` - 区域号。
        `num_length` - 读取的数据长度。
        `user_info` - 待读入的用户数据 。
      返回:
        0x00 设置成功.
        0x01 设置失败.

    - #### GetVersionNum

          public static int GetVersionNum(byte[] VersionNum)

      系统命令：读取读写器的版本号.
      参数:
        `VersionNum` - 待读入的版本号。
      返回:
        0x00 设置成功.
        0x01 设置失败.

    - #### API_ControlLED

          public static int API_ControlLED(byte freq,
                           byte duration,
                           byte[] buffer)

      系统命令：设置灯的工作状态，包括，灯亮的周期以及循环的次数。
      参数:
        `freq` - 周期数。
        `duration` - 次数。
        `buffer` - 待返回的参数。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作失败， 则buffer[0]为 错误代码。
        操作成功， 则buffer[0]为成功标志 ，即为0x80。

    - #### API_ControlBuzzer

          public static int API_ControlBuzzer(byte freq,
                              byte duration,
                              byte[] buffer)

      系统命令：设置蜂鸣器的工作状态，包括，蜂鸣器的工作周期以及循环的次数。
      参数:
        `freq` - 周期数。
        `duration` - 次数。
        `buffer` - 待返回的参数。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作失败， 则buffer[0]为 错误代码。
        操作成功， 则buffer[0]为成功标志 ，即为0x80。

    - #### MF_Request

          public static int MF_Request(byte inf_mode,
                       byte[] buffer)

      ISO14443A命令：发送ISO14443 A 寻卡指令。
      参数:
        `inf_mode` - 寻卡模式。
        0x52–Idle模式（一次只对一张卡操作）。
        0x26–All模式（一次可对多张卡操作）。
        `buffer` -
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作失败， 则snr[0]为 错误代码。
        操作成功， 则buffer[0..1]返回2个字节的数据串。

    - #### MF_Anticoll

          public static int MF_Anticoll(byte[] snr,
                        byte[] status)

      ISO14443A命令：检测卡片数量，单卡或多卡，并返回4个字节的卡号。（如果有多张卡，就返回其中一张卡的卡号）。
      参数:
        `snr` - 返回4个字节的卡号。
        `status` - 返回卡片的数量。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        status[0] 检测到的卡片的数量(0x00表示检测到单卡,0x01表示检测到多卡)。
        snr 4个字节的卡号（snr[0..3]）。
        操作失败：
        snr[0] 错误代码。

    - #### MF_Select

          public static int MF_Select(byte[] snr)

      ISO14443A命令：使卡进入被选择的状态.
      参数:
        `snr` - 传入4个字节卡号，并且返回4个字节的卡号.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        snr 4个字节的卡号（snr[0..3]）

    - #### MF_Halt

          public static int MF_Halt()

      ISO14443A命令：选择卡，使卡进入被中断的状态.
      返回:
        0x00 设置成功.
        0x01 设置失败.

    - #### API_PCDRead

          public static int API_PCDRead(byte mode,
                        byte blk_add,
                        byte num_blk,
                        byte[] snr,
                        byte[] buffer)

      ISO14443A命令：在指定位置读取指定长度的数据.
      参数:
        `mode` - 读取模式
        Idle+KeyA mode=00
        Idle+KeyB mode=02
        All+KeyA mode=01
        All+KeyB mode=03
        `blk_add` - 读取块地址.
        `num_blk` - 读取块数目.
        `snr` - 六个字节的密钥.
        `buffer` - 等待接受输出变量.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr 4个字节的卡号.
        buffer 读取到的数据(具体数量为：num_blk*16).
        操作失败:
        snr[0] 错误代码.

    - #### API_PCDWrite

          public static int API_PCDWrite(byte mode,
                         byte blk_add,
                         byte num_blk,
                         byte[] snr,
                         byte[] buffer)

      ISO14443A命令：在指定位置写入数据.
      参数:
        `mode` - 读取模式
        Idle+KeyA mode=00
        Idle+KeyB mode=02
        All+KeyA mode=01
        All+KeyB mode=03
        `blk_add` - 要写块地址.
        `num_blk` - 要写块数目.
        `snr` - 6字节密码.
        `buffer` - 待写入的数据.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr[0..3] 4个字节的卡号.
        操作失败:
        snr[0] 错误代码.

    - #### API_PCDInitVal

          public static int API_PCDInitVal(byte mode,
                           byte SectNum,
                           byte[] snr,
                           byte[] value)

      ISO14443A命令：初始化卡.
      参数:
        `mode` - 读取模式
        Idle+KeyA mode=00
        Idle+KeyB mode=02
        All+KeyA mode=01
        All+KeyB mode=03
        `SectNum` - 要初始化的扇区号00-0F.
        `snr` - 6字节密钥.
        `value` - 4 字节的要初始化的数据.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr[0..3] 4个字节的卡号.
        操作失败:
        snr[0] 错误代码.

    - #### API_PCDDec

          public static int API_PCDDec(byte mode,
                       byte SectNum,
                       byte[] snr,
                       byte[] value)

      ISO14443A命令：对卡的指定扇区进行减值操作。
      参数:
        `mode` - 读取模式
        Idle+KeyA mode=00
        Idle+KeyB mode=02
        All+KeyA mode=01
        All+KeyB mode=03
        `SectNum` - 要写值的扇区号00-0F.
        `snr` - 6字节密钥.
        `value` - 要减的值，4个字节长度.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr[0..3] 4个字节的卡号.
        value[0..3] 4个字节操作后的数据串.
        操作失败:
        snr[0] 错误代码.

    - #### API_PCDInc

          public static int API_PCDInc(byte mode,
                       byte SectNum,
                       byte[] snr,
                       byte[] value)

      ISO14443A命令：对卡的指定扇区进行加值操作。
      参数:
        `mode` - 读取模式
        Idle+KeyA mode=00
        Idle+KeyB mode=02
        All+KeyA mode=01
        All+KeyB mode=03
        `SectNum` - 要加值的扇区号00-0F.
        `snr` - 6字节密钥.
        `value` - 要加的值，4个字节长度.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr[0..3] 4个字节的卡号.
        value[0..3] 4个字节操作后的数据串.
        操作失败:
        snr[0] 错误代码.

    - #### GET_SNR

          public static int GET_SNR(byte mode,
                    byte API_halt,
                    byte[] snr,
                    byte[] value)

      ISO14443A命令：返回1个字节的单卡或多卡标识，4个字节的卡号。
      参数:
        `mode` - 模式控制.
        0x26–Idle模式（一次只对一张卡操作）.
        0x52–All模式（一次可对多张卡操作).
        `API_halt` -
        `snr` -
        `value` -
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        snr[0] 1个字节的单卡或多卡标识.
        value[0..3] 返回的4个字节的卡号.
        操作失败:
        snr[0] 错误代码.

    - #### MF_Restore

          public static int MF_Restore(byte mode,
                       int cardlength,
                       byte[] carddata)

      ISO14443A命令：按照选择的模式，进行数据的发送.
      参数:
        `mode` - 模式控制.
        0x00—不需要进行CRC校验.
        0x01—需要进行CRC校验.
        `cardlength` -
        `carddata` -
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        carddata[0..N] 接收返回数据。
        操作失败：
        carddata[0] 错误代码.

    - #### RequestType_B

          public static int RequestType_B(byte[] buffer)

      ISO14443B命令：该命令执行ISO14443B中的REQB命令，获取卡片的PUPI代码。
      参数:
        `buffer` - 卡片复位后的数据串 （ATQB）。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        buffer 卡片复位后的数据串（ATQB）.
        buffer[0] 卡片复位数据的长度.
        buffer[1..N] 操作后的数据串（ATQB）.
        操作失败：
        buffer[0] 错误代码.

    - #### AntiType_B

          public static int AntiType_B(byte[] buffer)

      ISO14443B命令：该命令执行ISO14443B中的AnticollB命令.
      参数:
        `buffer` - 卡片返回的数据串（ATQB）.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        如果操作成功：
        buffer[0..N] 卡片返回的数据串（ATQB）.
        如果操作失败：
        buffer[0] 错误代码.

    - #### SelectType_B

          public static int SelectType_B(byte[] SerialNum)

      ISO14443B命令：该命令执行ISO14443B中的ATTRIB命令，给已知PUPI的卡片分配一个识别号CID.
      参数:
        `SerialNum` - 卡的序列号.
      返回:
        0x00 设置成功.
        0x01 设置失败.

    - #### Request_AB

          public static int Request_AB(byte[] buffer)

      ISO14443B命令：该命令执行几集成了ISO14443B中的，REQUEST和ATTRIB命令，通过一个命令使卡复位。
      参数:
        `buffer` - 返回操作后的卡的序列号4个字节.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        如果操作成功：
        buffer[0..3] 返回操作后的卡的序列号4个字节.
        如果操作失败：
        buffer[0] 错误代码.

    - #### API_ISO14443TypeBTransCOSCmd

          public static int API_ISO14443TypeBTransCOSCmd(byte[] cmd,
                                         int cmdSize,
                                         byte[] buffer)

      ISO14443B命令：ISO14443传送命令，可以通过此命令向卡发任意有效的命令，数据.
      参数:
        `cmd` - 待发送的数据.
        `cmdSize` - 数据长度.
        `buffer` - 回收的数据.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0..N] 为从卡返回的数据.
        操作失败，则buffer[0] 为错误代码.

    - #### API_ISO15693_Inventory

          public static int API_ISO15693_Inventory(byte flag,
                                   byte afi,
                                   byte[] pData,
                                   byte[] nrOfCard,
                                   byte[] pBuffer)

      ISO15693命令：此命令通过防冲突用于得到读卡区域内所有卡片的序列号（能得到的卡片数量与模块天线的输出功率有关，一般能对2~6卡进行防冲突）.
      参数:
        `flag` - 标识字节1个字节.
        `afi` - AFI就是数据长度.
        `pData` - 发送的数据.
        `nrOfCard` - 返回的卡的数量.
        `pBuffer` - 返回的数据（包括FLAG和DSFID和8[]n个字节的卡号）.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功:
        nrOfCard 返回的卡的数量（一个字节）.
        pBuffer 返回的数据（包括FLAG和DSFID和8*n个字节的卡号）.
        操作失败:
        nrOfCard 错误代码.

    - #### API_ISO15693Read

          public static int API_ISO15693Read(byte flags,
                             byte blk_add,
                             byte num_blk,
                             byte[] uid,
                             byte[] buffer)

      ISO15693命令：用来读取1个或多个扇区的值，如果要读每个块的安全位，将FLAGS中Option_flag置为1，即FLAG = 0X42，每个扇区将返回5个字节，包括1个表示安全状态字节和4个字节的块内容，这时候每次最多能读12个块。如果FLAG = 02，将只返回4字节的块内容，这时候每次最多能读63个块。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `blk_add` - 要读的起始块号。
        `num_blk` - 块的数量。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        buffer[0] 返回的flag。
        buffer[1..N] Data。
        操作失败：
        buffer[0]为错误代码。

    - #### API_ISO15693Write

          public static int API_ISO15693Write(byte flags,
                              byte blk_add,
                              byte num_blk,
                              byte[] uid,
                              byte[] data)

      ISO15693命令：对一个块进行写操作（每次只能写一个块）。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `blk_add` - 要写的起始块号。
        `num_blk` - 写的块的数量。
        `uid` - UID信息。
        `data` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作失败，则data[0]为错误代码

    - #### API_ISO15693Lock

          public static int API_ISO15693Lock(byte flags,
                             byte num_blk,
                             byte[] uid,
                             byte[] buffer)

      ISO15693命令：用于锁定块内容。注意：此过程不可逆（不能解锁）块锁定后内容不能在修改。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `num_blk` - 要锁的块号。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码。

    - #### API_ISO15693StayQuiet

          public static int API_ISO15693StayQuiet(byte flags,
                                  byte[] uid,
                                  byte[] buffer)

      ISO15693命令：此命令用于将卡置于静止的状态, 必须用地址模式，如果发送的数据与被操作的卡的序列号相同，操作成功后，卡将进入静止状态，否则状态不变。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码。

    - #### API_ISO15693Select

          public static int API_ISO15693Select(byte flags,
                               byte[] uid,
                               byte[] buffer)

      ISO15693命令：此命令必须用地址模式，如果发送的数据与被操作的卡的序列号相同，操作成功后，卡将进入被选择状态，否则状态不变。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码。

    - #### API_ResetToReady

          public static int API_ResetToReady(byte flags,
                             byte[] uid,
                             byte[] buffer)

      ISO15693命令：操作成功后，卡回到Ready状态。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码

    - #### API_WriteAFI

          public static int API_WriteAFI(byte flags,
                         byte afi,
                         byte[] uid,
                         byte[] buffer)

      ISO15693命令：对卡进行写AFI操作。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `afi` - 待写的AFI.
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码

    - #### API_LockAFI

          public static int API_LockAFI(byte flags,
                        byte[] uid,
                        byte[] buffer)

      ISO15693命令：用于锁定卡的AFI，锁定后AFI不可以更改。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码

    - #### API_WriteDSFID

          public static int API_WriteDSFID(byte flags,
                           byte DSFID,
                           byte[] uid,
                           byte[] buffer)

      ISO15693命令：对卡的进行写DSFID操作.
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `DSFID` - 要写的DSFID字节，长度为1个字节.
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码

    - #### API_LockDSFID

          public static int API_LockDSFID(byte flags,
                          byte[] uid,
                          byte[] buffer)

      ISO15693命令：用于锁定卡的DSFID，锁定后DSFID不可以更改.
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功，则buffer[0]值为0x80。
        操作失败，则buffer[0]为错误代码

    - #### API_ISO15693_GetSysInfo

          public static int API_ISO15693_GetSysInfo(byte flags,
                                    byte[] uid,
                                    byte[] buffer)

      ISO15693命令：用于得到卡的详细信息，具体内容请参考，ISO15693协议资料。
      参数:
        `flags` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `uid` - UID信息。
        `buffer` - 返回值.
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        Buffer [0]: Flags
        Buffer [1]: INFO Flags
        Buffer [2..9]: UID
        Buffer [10]: DSFID
        Buffer [11]: AFI
        Buffer [12..N]: Other fields
        操作失败，则Buffer[0] 返回 为错误代码。

    - #### API_ISO15693_GetMulSecurity

          public static int API_ISO15693_GetMulSecurity(byte flags,
                                        byte blkAddr,
                                        byte blkNum,
                                        byte[] uid,
                                        byte[] pBuffer)

      ISO15693命令：用于获取卡的各个块的安全状态位的数据
      参数:
        `flag` - 标志位。
        0x02 不带uid。
        0x22 带uid。
        0x42 不带uid但是要读安全位。
        `blkAddr` - 要读的起始块号。
        `blkNum` - 读的块的数量。
        `uid` - UID信息。
        `pBuffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        pBuffer 返回的数据。
        pBuffer[0] 返回的flags。
        pBuffer [1..N] Block security status (块的安全状态)。
        操作失败，则pBuffer[0]为错误代码。

    - #### API_ISO15693TransCOSCmd

          public static int API_ISO15693TransCOSCmd(byte[] cmd,
                                    int cmdSize,
                                    byte[] buffer)

      ISO15693命令：一个通用命令，用户可以通过此命令，对卡进行各种操作。
      参数:
        `cmd` - 需要发送的数据。
        `cmdSize` - 数据长度。
        `buffer` - 返回值。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功：
        buffer 返回的数据。
        buffer[0..N] 从卡返回的数据。
        操作失败，则buffer[0]为错误代码。

    - #### UL_HLRead

          public static int UL_HLRead(byte mode,
                      byte blk_add,
                      byte[] snr,
                      byte[] buffer)

      Ultralight命令：发送Ultralight读卡命令。
      参数:
        `mode` - 寻卡模式 。
        0x00–Idle模式。
        0x01–All模式。
        `blk_add` - 写卡扇区号。
        `snr` - 返回7个字节的卡号。
        `buffer` - 返回16个字节的卡数据。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        如果操作成功：
        snr 7个字节的卡号.
        buffer 16个字节的卡数据.
        如果操作失败：
        buffer[0] 错误代码。

    - #### UL_HLWrite

          public static int UL_HLWrite(byte mode,
                       byte blk_add,
                       byte[] snr,
                       byte[] buffer)

      Ultralight命令：发送Ultralight写卡命令。
      参数:
        `mode` - 寻卡模式 。
        0x00–Idle模式。
        0x01–All模式。
        `blk_add` - 写卡扇区号。
        `snr` - 返回7个字节的卡号。
        `buffer` - 四个字节的写入卡扇区的数据。
      返回:
        0x00 设置成功.
        0x01 设置失败.
        如果操作成功：
        snr 7个字节的卡号.
        buffer 16个字节的卡数据.
        如果操作失败：
        buffer[0] 错误代码。

    - #### UL_Request

          public static int UL_Request(byte mode,
                       byte[] snr)

      Ultralight命令：发送Ultralight寻卡指令。
      参数:
        `mode` - 寻卡模式 。
        0x00–Idle模式。
        0x01–All模式。
        `snr` - 待返回的参数
      返回:
        0x00 设置成功.
        0x01 设置失败.
        操作成功， 则snr [0..6]，返回7个字节的数据串。
        操作失败， 则snr [0] 为 错误代码。