tw.com.prolific.pl2303ghidsdk

## Class HidToI2c

- java.lang.Object
- - tw.com.prolific.pl2303ghidsdk.HidToGpio
  - - tw.com.prolific.pl2303ghidsdk.HidToI2c

-     public class HidToI2c
      extends HidToGpio

  PL23C3 HID to I2C Driver 類別. Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0

  * thanks to ....

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `HidToI2c()` 新增一個HidToI2C物件
    `HidToI2c(android.content.Context context, java.lang.String strAppName)` 新增一個HidToI2C物件

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `askPermissionByDeviceIndex(int nDeviceIndex)` 取得裝置權限
    `int` | `askPermissionByUsbDevice(android.hardware.usb.UsbDevice usbDevice)` 取得裝置權限
    `int` | `closeDevice()` 關閉裝置
    `int` | `closeDeviceByDeviceIndex(int nDeviceIndex)`
    關閉裝置
    `void` | `dumpMsg(java.lang.Object objMsg)` 設定紀錄訊息
    `int` | `enumDevices(int nDeviceVid)` 列舉PL23C3 裝置
    `int` | `enumDevices(int nDeviceVid, int nDevicePid)` 根據傳入之Vid及Pid列舉PL23C3 裝置
    `java.lang.String` | `getDeviceName(int nDeviceIndex)` 取得裝置名稱
    `java.lang.String` | `getSdkVersion()` 取得SDK版本號
    `java.lang.String` | `getSerialNumber(int nDeviceIndex)` 取得裝置之序號
    `android.hardware.usb.UsbDevice` | `getUsbDevice(int nDeviceIndex)` 取得裝置之物件，可根據該物件取得usb相關之訊息
    `boolean` | `hasPermissionByDeviceIndex(int nDeviceIndex)` 確認裝置是否擁有權限
    `boolean` | `hasPermissionByUsbDevice(android.hardware.usb.UsbDevice usbDevice)` 確認裝置是否擁有權限
    `int` | `i2cRead(int nDeviceIndex, byte[] byBuffer, int nNumberOfBytesToRead, int nTimeOutms)` >讀取I2C 資料
    `int` | `i2cReset(int nDeviceIndex)` 重置I2C Master 介面
    `int` | `i2cWrite(int nDeviceIndex, byte[] byBuffer, int nNumberOfBytesToWrite, int nTimeOutms)` 寫入I2C 資料
    `int` | `i2cWriteRead(int nDeviceIndex, byte[] byWriteBuffer, int nNumberOfBytesToWrite, byte[] byReadBuffer, int nNumberOfBytesToRead, int nTimeOutms)` 寫讀I2C 資料.
    `int` | `openDeviceByIndex(int nDeviceIndex)` 根據傳入之索引值開啟裝置
    `int` | `openDeviceBySerialNumber(java.lang.String strSerialNumber)` 根據傳入之序號開啟裝置
    `void` | `setCommandTimeOut(int nMillSecond)` 設定comman逾時之數值
    `int` | `setI2cDeviceAddress(int nDeviceIndex, byte byDeviceAddress)` 設定I2C 裝置位址
    `int` | `setI2cFrequency(int nDeviceIndex, byte byFreqDiv)` 設定I2C 頻率

    - ### Methods inherited from class tw.com.prolific.pl2303ghidsdk.HidToGpio

      `getGpio, setGpio, setGpioDir`

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

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

- - ### Constructor Detail

    - #### HidToI2c

          public HidToI2c()

      新增一個HidToI2C物件

    - #### HidToI2c

          public HidToI2c(android.content.Context context,
                          java.lang.String strAppName)

      新增一個HidToI2C物件
      Parameters:
        `context` - the context
        `strAppName` - ACTION_USB_PERMISSION 字串, 例如: "tw.com.prolific.HidToUartTest.USB_PERMISSION"

  - ### Method Detail

    - #### setI2cDeviceAddress

          public int setI2cDeviceAddress(int nDeviceIndex,
                                         byte byDeviceAddress)

      設定I2C 裝置位址, 此功能僅支援7 bits 裝置位址
      Parameters:
        `nDeviceIndex` - 裝置之索引值
        `byDeviceAddress` - I2C裝置位址
      Returns:
        0表成功, 非0表失敗。

    - #### setI2cFrequency

          public int setI2cFrequency(int nDeviceIndex,
                                     byte byFreqDiv)

      設定I2C 頻率
      Parameters:
        `nDeviceIndex` - 裝置之索引值
        `byFreqDiv` - I2C頻率除數，範圍界於4~0xFF
      Returns:
        0表成功, 非0表失敗。

    - #### i2cRead

          public int i2cRead(int nDeviceIndex,
                             byte[] byBuffer,
                             int nNumberOfBytesToRead,
                             int nTimeOutms)

      >讀取I2C 資料
      Parameters:
      Parameters:
        `nDeviceIndex` - 裝置之索引值
        `byBuffer` - 讀取資料緩衝區
        `nNumberOfBytesToRead` - 讀取資料的位元數
        `nTimeOutms` - 逾時數值, 單位為毫秒(milliseconds)
      Returns:
        正值表實際讀取資料的位元數，負值表失敗

    - #### i2cWriteRead

          public int i2cWriteRead(int nDeviceIndex,
                                  byte[] byWriteBuffer,
                                  int nNumberOfBytesToWrite,
                                  byte[] byReadBuffer,
                                  int nNumberOfBytesToRead,
                                  int nTimeOutms)

      寫讀I2C 資料.
      Parameters:
        `nDeviceIndex` - 裝置之索引值
        `byWriteBuffer` - 寫入的資料
        `nNumberOfBytesToWrite` - 寫入資料的位元數
        `byReadBuffer` - 讀取資料緩衝區
        `nNumberOfBytesToRead` - 讀取資料的位元數
        `nTimeOutms` - 逾時數值, 單位為毫秒(milliseconds)
      Returns:
        正值表實際讀取資料的位元數，負值表失敗

    - #### i2cWrite

          public int i2cWrite(int nDeviceIndex,
                              byte[] byBuffer,
                              int nNumberOfBytesToWrite,
                              int nTimeOutms)

      寫入I2C 資料
      Parameters:
        `nDeviceIndex` - 裝置之索引值
        `byBuffer` - 寫入的資料
        `nNumberOfBytesToWrite` - 寫入資料的位元數
        `nTimeOutms` - 逾時數值, 單位為毫秒(milliseconds).
      Returns:
        正值表實際寫入資料的位元數，負值表失敗

    - #### i2cReset

          public int i2cReset(int nDeviceIndex)

      重置I2C Master 介面
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        正值表成功，負值表失敗

    - #### enumDevices

          public int enumDevices(int nDeviceVid)

      列舉PL23C3 裝置
      Parameters:
        `nDeviceVid` - 裝置之VID
      Returns:
        列舉裝置之數量

    - #### enumDevices

          public int enumDevices(int nDeviceVid,
                                 int nDevicePid)

      列舉PL23C3 裝置
      Parameters:
        `nDeviceVid` - 裝置之VID
        `nDevicePid` - 裝置之PID
      Returns:
        列舉裝置之數量

    - #### getDeviceName

          public java.lang.String getDeviceName(int nDeviceIndex)

      取得裝置名稱
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        裝置名稱, 空字串表找不到裝置

    - #### getSerialNumber

          public java.lang.String getSerialNumber(int nDeviceIndex)

      取得裝置之序號, 此功能支援Android版本5.0(含)以上
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        裝置序號, 空字串表找不到裝置

    - #### openDeviceByIndex

          public int openDeviceByIndex(int nDeviceIndex)

      開啟裝置
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        0表成功, 非0表失敗。

    - #### openDeviceBySerialNumber

          public int openDeviceBySerialNumber(java.lang.String strSerialNumber)

      開啟裝置
      Parameters:
        `strSerialNumber` - 列舉裝置之數量
      Returns:
        0表成功, 非0表失敗。

    - #### hasPermissionByDeviceIndex

          public boolean hasPermissionByDeviceIndex(int nDeviceIndex)

      確認裝置是否擁有權限
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        true 表擁有權限存取裝置, 否則為失敗.

    - #### askPermissionByDeviceIndex

          public int askPermissionByDeviceIndex(int nDeviceIndex)

      取得裝置權限
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        0表成功, 非0表失敗。

    - #### hasPermissionByUsbDevice

          public boolean hasPermissionByUsbDevice(android.hardware.usb.UsbDevice usbDevice)

      確認裝置是否擁有權限
      Parameters:
        `usbDevice` - usbDevice 物件
      Returns:
        true 表擁有權限存取裝置, 否則為失敗.

    - #### askPermissionByUsbDevice

          public int askPermissionByUsbDevice(android.hardware.usb.UsbDevice usbDevice)

      取得裝置權限
      Parameters:
        `usbDevice` - usbDevice 物件
      Returns:
        0表成功, 非0表失敗。

    - #### closeDevice

          public int closeDevice()

      關閉裝置
      Returns:
        0表成功, 非0表失敗。

    - #### closeDeviceByDeviceIndex

          public int closeDeviceByDeviceIndex(int nDeviceIndex)

      關閉裝置
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        0表成功, 非0表失敗。

    - #### getSdkVersion

          public java.lang.String getSdkVersion()

      取得SDK版本號
      Returns:
        目前SDK版本號

    - #### setCommandTimeOut

          public void setCommandTimeOut(int nMillSecond)

      設定comman逾時之數值
      Parameters:
        `nMillSecond` - 逾時之數值, 單位為毫秒(millisecond)

    - #### dumpMsg

          public void dumpMsg(java.lang.Object objMsg)

      設定紀錄訊息
      Parameters:
        `objMsg` - 訊息內容.

    - #### getUsbDevice

          public android.hardware.usb.UsbDevice getUsbDevice(int nDeviceIndex)

      取得裝置之物件，可根據該物件取得usb相關之訊息
      Parameters:
        `nDeviceIndex` - 裝置之索引值
      Returns:
        裝置之物件, null表找不到裝置