RFIDWithUHFBluetooth

com.rscja.deviceapi

## Class RFIDWithUHFBluetooth

- java.lang.Object
- - com.rscja.deviceapi.RFIDWithUHFBluetooth

-     public class RFIDWithUHFBluetooth
      extends java.lang.Object

  Author:
    Administrator

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RFIDWithUHFBluetooth.BankEnum` 存储区 Storage
    `static interface` | `RFIDWithUHFBluetooth.BTStatusCallback` 连接蓝牙的状态值回调
    `static interface` | `RFIDWithUHFBluetooth.KeyEventCallback` 接收扫描按键的回调
    `static interface` | `RFIDWithUHFBluetooth.ScanBTCallback` 扫描蓝牙设备的回调接口
    `static class` | `RFIDWithUHFBluetooth.StatusEnum` 蓝牙状态枚举 CONNECTED:已经连接 DISCONNECTED:已经断开 CONNECTING:连接中

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `deviceAddress`
    `static boolean` | `isStop`
    `static int` | `rIndex`
    `static int` | `rIndexTAG`
    `static byte[]` | `tempData`
    `static byte[]` | `tempDataTAG`
    `static int` | `wIndex`
    `static int` | `wIndexTAG`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `connect(java.lang.String address, RFIDWithUHFBluetooth.BTStatusCallback btStatusCallback)` 连接蓝牙设备
    `void` | `disconnect()` 断开蓝牙连接
    `void` | `free()` 释放已经占用的蓝牙服务资源
    `int` | `getBattery()` 获取电池电量 单位：百分比
    `boolean` | `getBluetoothMode()` 获取uhf通信方式是否是蓝牙模式
    `RFIDWithUHFBluetooth.StatusEnum` | `getConnectStatus()` 获取蓝牙连接状态
    `int` | `getFrequencyMode()` 读取模块的工作模式
    `static RFIDWithUHFBluetooth` | `getInstance()`
    `int` | `getPower()` 读取模块的功率
    `java.lang.String` | `getR2000Version()` 获取UHF R2000版本号
    `java.lang.String` | `getSTM32Version()` 获取UHF STM32版本号
    `void` | `init(Context context)` 初始化蓝牙服务
    `boolean` | `kill(java.lang.String accessPwd)` 销毁标签
    `boolean` | `kill(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum filterBank, int filterPtr, int filterCnt, java.lang.String filterData)` 锁定标签的指定数据段 lock specified data of tags
    `boolean` | `lockMem(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum filterBank, int filterPtr, int filterCnt, java.lang.String filterData, java.lang.String lockCode)` 锁定标签
    `boolean` | `lockMem(java.lang.String accessPwd, java.lang.String lockCode)` 锁定标签
    `java.lang.String` | `readData(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum bank, int ptr, int cnt)` 读取标签数据
    `java.lang.String` | `readData(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum filterBank, int filterPtr, int filterCnt, java.lang.String filterData, RFIDWithUHFBluetooth.BankEnum bank, int ptr, int cnt)` 读取标签数据
    `java.util.ArrayList<UHFTAGInfo>` | `readTagFromBuffer()` 读取标签数据
    `byte[]` | `receiveData()` (备注:禁止使用)
    `void` | `receiveData(byte[] txValue, boolean flag)` (备注:禁止使用)
    `byte[]` | `receiveDataTAG()` (备注:禁止使用)
    `void` | `scanBTDevices(RFIDWithUHFBluetooth.ScanBTCallback scanBTCallback)` 扫描蓝牙设备
    `int` | `sendAndReceiveData(byte[] sendData, int sendDataLen, int timeOut, byte[] outData)` (备注:禁止使用)
    `boolean` | `sendData(byte[] data, int len)` (备注:禁止使用)
    `void` | `setBluetoothMode(boolean isBluetoothMode)` 设置uhf通信方式
    `boolean` | `setFreHop(float fre)` 设置模块频点
    `boolean` | `setFrequencyMode(byte freMode)` 设置模块的工作模式
    `void` | `setKeyEventCallback(RFIDWithUHFBluetooth.KeyEventCallback KeyEventCallback)` 设置接收扫描按键的回调
    `boolean` | `setPower(int power)` 设置模块的功率
    `boolean` | `startInventoryTag()` 开始循环识别
    `boolean` | `stopInventoryTag()` 停止循环识别
    `void` | `stopScanBTDevices()` 停止扫描蓝牙设备
    `boolean` | `uhfDecryptSM4(java.lang.String pszdata, java.lang.StringBuilder outdata)` 数据解密
    `boolean` | `uhfEncReadUser(int ptr, int len, java.lang.StringBuilder outdata)` user区数据解密
    `boolean` | `uhfEncryptSM4(java.lang.String pszdata, java.lang.StringBuilder outdata)` 数据加密
    `boolean` | `uhfEncWriteUser(int ptr, int len, java.lang.String pszdata)` user区加密
    `boolean` | `uhfEndUpdate()` uhf模块升级结束
    `boolean` | `uhfGetSMKey(byte[] mode, java.lang.StringBuilder keydata, java.lang.StringBuilder lvdata)` 获取密码
    `boolean` | `uhfReBoot(int flag)` uhf模块升级之前reboot
    `boolean` | `uhfSetSM4Key(int mode, java.lang.String pszkeydata, java.lang.String pszlvdata)` 设置密码
    `boolean` | `uhfStartUpdate()` uhf模块升级开始
    `boolean` | `uhfUpdateData(byte[] buff)` uhf模块升级中
    `boolean` | `writeData(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum bank, int ptr, int cnt, java.lang.String data)` 向标签写入数据
    `boolean` | `writeData(java.lang.String accessPwd, RFIDWithUHFBluetooth.BankEnum filterBank, int filterPtr, int filterCnt, java.lang.String filterData, RFIDWithUHFBluetooth.BankEnum bank, int ptr, int cnt, java.lang.String writeData)` 向标签写入数据

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### deviceAddress

          public static java.lang.String deviceAddress

    - #### tempData

          public static byte[] tempData

    - #### wIndex

          public static int wIndex

    - #### rIndex

          public static int rIndex

    - #### isStop

          public static boolean isStop

    - #### tempDataTAG

          public static byte[] tempDataTAG

    - #### wIndexTAG

          public static int wIndexTAG

    - #### rIndexTAG

          public static int rIndexTAG

  - ### Method Detail

    - #### getInstance

          public static RFIDWithUHFBluetooth getInstance()

    - #### init

          public void init(Context context)

      初始化蓝牙服务
      Parameters:
        `context` -

    - #### free

          public void free()

      释放已经占用的蓝牙服务资源

    - #### scanBTDevices

          public void scanBTDevices(RFIDWithUHFBluetooth.ScanBTCallback scanBTCallback)

      扫描蓝牙设备
      Parameters:
        `scanBTCallback` - 扫描蓝牙设备之后的回调

    - #### stopScanBTDevices

          public void stopScanBTDevices()

      停止扫描蓝牙设备

    - #### connect

          public void connect(java.lang.String address,
                              RFIDWithUHFBluetooth.BTStatusCallback btStatusCallback)

      连接蓝牙设备
      Parameters:
        `address` - 蓝牙地址
        `btStatusCallback` - 连接蓝牙设备结果的回调

    - #### setKeyEventCallback

          public void setKeyEventCallback(RFIDWithUHFBluetooth.KeyEventCallback KeyEventCallback)

      设置接收扫描按键的回调
      Parameters:
        `KeyEventCallback` - 接收扫描按键的回调接口

    - #### disconnect

          public void disconnect()

      断开蓝牙连接

    - #### getConnectStatus

          public RFIDWithUHFBluetooth.StatusEnum getConnectStatus()

      获取蓝牙连接状态
      Returns:
        返回蓝牙连接状态

    - #### getBattery

          public int getBattery()

      获取电池电量 单位：百分比
      Returns:
        返回电量的百分比

    - #### sendAndReceiveData

          public int sendAndReceiveData(byte[] sendData,
                                        int sendDataLen,
                                        int timeOut,
                                        byte[] outData)

      (备注:禁止使用)
      Parameters:
        `sendData` - 发送的数据
        `sendDataLen` - 发送的数据长度
        `timeOut` - 接收超时时间
        `outData` - 接受的数据
        `outDataLen` - 接受的数据长度
      Returns:
        -1表示发送失败直接返回不接收，0表示发送成功接收失败，大于0表示发送接收成功

    - #### sendData

          public boolean sendData(byte[] data,
                                  int len)

      (备注:禁止使用)
      Parameters:
        `data` -
        `len` -
      Returns:

    - #### receiveData

          public byte[] receiveData()

      (备注:禁止使用)
      Returns:

    - #### receiveDataTAG

          public byte[] receiveDataTAG()

      (备注:禁止使用)
      Returns:

    - #### receiveData

          public void receiveData(byte[] txValue,
                                  boolean flag)

      (备注:禁止使用)

    - #### uhfEncryptSM4

          public boolean uhfEncryptSM4(java.lang.String pszdata,
                                       java.lang.StringBuilder outdata)

      数据加密
      Parameters:
        `pszdata` - 加密的原始十六进制数据(必须是16个字节的整数倍)
        `outdata` - 加密后的数据(十六进制数据)
      Returns:
        true:成功 false:失败

    - #### uhfDecryptSM4

          public boolean uhfDecryptSM4(java.lang.String pszdata,
                                       java.lang.StringBuilder outdata)

      数据解密
      Parameters:
        `pszdata` - 解密的原始十六进制数据(必须是16个字节的整数倍)
        `outdata` - 解码后的数据(十六进制数据)
      Returns:
        true:成功 false:失败

    - #### uhfGetSMKey

          public boolean uhfGetSMKey(byte[] mode,
                                     java.lang.StringBuilder keydata,
                                     java.lang.StringBuilder lvdata)

      获取密码
      Parameters:
        `mode` - 0x00:ECB, 0x02:CBC, 0x04:OFB, 0x06:CFB
        `keydata` - SM4密钥，16字节十六进制数据
        `lvdata` - SM4初始值(非ECB模式) 16字节十六进制数据
      Returns:
        true:成功 false:失败

    - #### uhfSetSM4Key

          public boolean uhfSetSM4Key(int mode,
                                      java.lang.String pszkeydata,
                                      java.lang.String pszlvdata)

      设置密码
      Parameters:
        `mode` - 0x00:ECB, 0x02:CBC, 0x04:OFB, 0x06:CFB
        `pszkeydata` - SM4密钥，16字节十六进制数据
        `pszlvdata` - SM4初始值(非ECB模式) 16字节十六进制数据
      Returns:
        true:成功 false:失败

    - #### uhfEncWriteUser

          public boolean uhfEncWriteUser(int ptr,
                                         int len,
                                         java.lang.String pszdata)

      user区加密
      Parameters:
        `ptr` - 起始地址
        `len` - 长度
        `pszdata` - 加密的数据
      Returns:
        true:成功, false:失败

    - #### uhfEncReadUser

          public boolean uhfEncReadUser(int ptr,
                                        int len,
                                        java.lang.StringBuilder outdata)

      user区数据解密
      Parameters:
        `ptr` - 起始地址
        `len` - 长度
        `outdata` - 解密后的数据
      Returns:
        true:成功,false:失败

    - #### uhfReBoot

          public boolean uhfReBoot(int flag)

      uhf模块升级之前reboot
      Parameters:
        `flag` - 0:升级UHF,1: 升级STM32
      Returns:
        true:成功,false:失败

    - #### uhfStartUpdate

          public boolean uhfStartUpdate()

      uhf模块升级开始
      Returns:
        true:成功,false:失败

    - #### uhfUpdateData

          public boolean uhfUpdateData(byte[] buff)

      uhf模块升级中
      Parameters:
        `buff` - 发送升级的数据
      Returns:
        true:成功,false:失败

    - #### uhfEndUpdate

          public boolean uhfEndUpdate()

      uhf模块升级结束
      Returns:
        true:成功,false:失败

    - #### writeData

          public boolean writeData(java.lang.String accessPwd,
                                   RFIDWithUHFBluetooth.BankEnum bank,
                                   int ptr,
                                   int cnt,
                                   java.lang.String data)

      向标签写入数据
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        `bank` - 标签的存储区
        `ptr` - 起始地址的偏移量
        `cnt` - 数据的长度（Word为单位，不能为0）
        `data` - 要写入的数据,十六进制格式
      Returns:
        true:成功 false:失败

    - #### writeData

          public boolean writeData(java.lang.String accessPwd,
                                   RFIDWithUHFBluetooth.BankEnum filterBank,
                                   int filterPtr,
                                   int filterCnt,
                                   java.lang.String filterData,
                                   RFIDWithUHFBluetooth.BankEnum bank,
                                   int ptr,
                                   int cnt,
                                   java.lang.String writeData)

      向标签写入数据
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        `filterBank` - 过滤的数据块
        `filterPtr` - 过滤的起始地址(单位:bit)
        `filterCnt` - 过滤的数据长度(单位:bit)
        `filterData` - 过滤的数据
        `bank` - 写入的数据块
        `ptr` - 写入的起始地址(单位:字)
        `cnt` - 写入的数据长度(单位:字)
        `writeData` - 写入的数据
      Returns:
        true:表示写入成功,false:表示写入失败
        r>

    - #### readData

          public java.lang.String readData(java.lang.String accessPwd,
                                           RFIDWithUHFBluetooth.BankEnum bank,
                                           int ptr,
                                           int cnt)

      读取标签数据
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        `bank` - 标签的存储区
        `ptr` - 起始地址(单位:字)
        `cnt` - 数据的长度（Word为单位，不能为0）
      Returns:
        返回十六进制字符串数据，null为读取失败

    - #### readData

          public java.lang.String readData(java.lang.String accessPwd,
                                           RFIDWithUHFBluetooth.BankEnum filterBank,
                                           int filterPtr,
                                           int filterCnt,
                                           java.lang.String filterData,
                                           RFIDWithUHFBluetooth.BankEnum bank,
                                           int ptr,
                                           int cnt)

      读取标签数据
      Parameters:
        `accessPwd` - 访问密码
        `filterBank` - 过滤的数据块
        `filterPtr` - 过滤的起始地址(单位:bit)
        `filterCnt` - 过滤的数据长度(单位:bit)
        `filterData` - 过滤的数据
        `bank` - 读取的数据块
        `ptr` - 读取的起始地址(单位:字)
        `cnt` - 读取的数据长度(单位:字)
      Returns:
        返回获取的数据,null表示读取失败

    - #### lockMem

          public boolean lockMem(java.lang.String accessPwd,
                                 java.lang.String lockCode)

      锁定标签
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        `lockCode` - 锁定码
      Returns:
        true成功，false失败

    - #### lockMem

          public boolean lockMem(java.lang.String accessPwd,
                                 RFIDWithUHFBluetooth.BankEnum filterBank,
                                 int filterPtr,
                                 int filterCnt,
                                 java.lang.String filterData,
                                 java.lang.String lockCode)

      锁定标签
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        `filterBank` - 标签的存储区
        `filterPtr` - 过滤起始地址(单位:bit)
        `filterCnt` - 过滤数据长度(单位:bit)
        `filterData` - 过滤数据
        `lockCode` - 锁定码
      Returns:
        true成功，false失败

    - #### kill

          public boolean kill(java.lang.String accessPwd)

      销毁标签
      Parameters:
        `accessPwd` -
      Returns:
        true成功，false失败

    - #### kill

          public boolean kill(java.lang.String accessPwd,
                              RFIDWithUHFBluetooth.BankEnum filterBank,
                              int filterPtr,
                              int filterCnt,
                              java.lang.String filterData)

      锁定标签的指定数据段
      lock specified data of tags
      Parameters:
        `accessPwd` - 标签的ACCESS PASSWORD（4字 节）
        ACCESS PASSWORD (4 bytes) of tag
        `filterBank` - 标签的存储区
        Storage of tag
        `filterPtr` - 过滤起始地址(单位:bit)
        filter start address
        `filterCnt` - 过滤数据长度(单位:bit)
        filter data length
        `filterData` - 过滤数据
        filter data
      Returns:
        true成功，false失败

    - #### getFrequencyMode

          public int getFrequencyMode()

      读取模块的工作模式
      Returns:
        返回工作模式，返回-1为失败
        1:China Standard1(840~845MHz) 2:China Standard2(920~925MHz) 4:Europe Standard(865~868MHz) 8:USA(902-928MHz) 16:Korea(917~923MHz) 32:Japan(952~953MHz)

    - #### setFreHop

          public boolean setFreHop(float fre)

      设置模块频点
      Returns:
        true成功，false失败

    - #### setFrequencyMode

          public boolean setFrequencyMode(byte freMode)

      设置模块的工作模式
      Parameters:
        `freMode` - 1:China Standard1(840~845MHz) 2:China Standard2(920~925MHz) 4:Europe Standard(865~868MHz) 8:USA(902-928MHz) 16:Korea(917~923MHz) 32:Japan(952~953MHz)
      Returns:
        true设置成功，false设置失败
        true setup success, false setup failed

    - #### getPower

          public int getPower()

      读取模块的功率
      Returns:
        返回功率，返回-1为失败

    - #### setPower

          public boolean setPower(int power)

      设置模块的功率
      Parameters:
        `power` - 功率大小
      Returns:
        true设置成功，false设置失败

    - #### getR2000Version

          public java.lang.String getR2000Version()

      获取UHF R2000版本号
      Returns:
        uhf版本号

    - #### getSTM32Version

          public java.lang.String getSTM32Version()

      获取UHF STM32版本号
      Returns:
        STM32版本号

    - #### startInventoryTag

          public boolean startInventoryTag()

      开始循环识别
      Returns:
        true成功，false失败

    - #### stopInventoryTag

          public boolean stopInventoryTag()

      停止循环识别
      Returns:
        true成功，false失败

    - #### readTagFromBuffer

          public java.util.ArrayList<UHFTAGInfo> readTagFromBuffer()

      读取标签数据
      Returns:
        返回标签集合，无数据返回null

    - #### getBluetoothMode

          public boolean getBluetoothMode()

      获取uhf通信方式是否是蓝牙模式
      Returns:
        true:表示当前是蓝牙通信模式 false:表示当前是串口通信模式

    - #### setBluetoothMode

          public void setBluetoothMode(boolean isBluetoothMode)

      设置uhf通信方式
      Parameters:
        `isBluetoothMode` - true:设置蓝牙通信模式 false:串口通信模式