UniPRT SDK  v2.0.0.1
com.UniPRT.Sdk.Comm.UsbConnection 類別 參考文件

實作 USB 通訊的類別,並繼承自 AComm 類別。 更多...

類別com.UniPRT.Sdk.Comm.UsbConnection的繼承圖:
com.UniPRT.Sdk.Comm.AComm com.UniPRT.Sdk.Comm.IComm

複合項目

class  DescriptorValidateResult
 

公開方法(Public Methods)

short V_ID ()
 Vendor ID. 更多...
 
short P_ID ()
 
int BytesAvailable ()
 
boolean Connected ()
 
String Descriptor ()
 傳回 USB 連線的描述字串。 更多...
 
 UsbConnection (Context context, String descriptorHint)
 根據 descriptor hint 初始化此類別的新實例。 更多...
 
 UsbConnection (Context context)
 使用預設的廠商 ID 初始化類別實例,目標為第一台符合其中一個已知廠商 ID 的印表機。 更多...
 
 UsbConnection (Context context, short vendorId)
 使用指定的廠商 ID 初始化類別實例,目標為第一台符合該廠商 ID 的印表機。 更多...
 
 UsbConnection (Context context, short vendorId, short productId)
 使用指定的廠商 ID 和產品 ID 初始化類別實例,目標為第一台符合兩者的印表機。 更多...
 
void RequestUSBPermission (String ACTION_USB_PERMISSION)
 
void Open ()
 
void Close ()
 
byte[] Read ()
 
void Write (byte[] dataOut)
 
void startReceivingTask ()
 
- 公開方法(Public Methods) 繼承自 com.UniPRT.Sdk.Comm.AComm
void Read (OutputStream binDataIn) throws IOException
 
void WaitForData (int msTimeOut)
 等待當前執行緒有可用的資料 BytesAvailable。當前執行緒會休眠直到收到資料或超時為止。此為阻塞呼叫。 更多...
 
void Write (InputStream binReader) throws IOException
 從輸入流寫入輸出流。 更多...
 
void WriteAndWaitForResponse (OutputStream binDataIn, InputStream binDataOut, int responseStartTimeOut, int responseEndTimeOut, String completetionToken) throws IOException
 將 binDataOut 流資料寫入輸出流,並將接收到的資料返回到 binDataIn 流中。返回的資料是收到的資料或收到的完成標記。等待回應超時後返回。 更多...
 
byte[] WriteAndWaitForResponse (byte[] dataOut, int responseStartTimeOut, int responseEndTimeOut, String completetionToken) throws IOException
 將位元組資料寫入輸出流並返回接收到的資料。返回的資料是接收到的任何資料或收到的完成標記。等待回應超時後返回。 更多...
 

靜態公開方法(Static Public Methods)

static DescriptorValidateResult DescriptorValidate (String descriptorHint)
 驗證 descriptorHint 提供的描述字串。 更多...
 
static boolean contains (short[] array, short target)
 

公開屬性

UsbManager mUsbManager
 
UsbDevice mUsbDevice
 

靜態公開屬性

static final short TSC_USB_VID = 0x1203
 
static final short PTX_USB_VID = 0x14AE
 

私有方法(Private Methods)

 UsbConnection (Context context, short[] vendorIds, short productId)
 

私有屬性

short _v_id = 0x0000
 
short _p_id = 0x0000
 
boolean _is_connected = false
 
UsbInterface mUsbIntf
 
UsbDeviceConnection mUsbConnection
 
UsbEndpoint mUsbEndpointIn
 
UsbEndpoint mUsbEndpointOut
 
BroadcastReceiver usbPermissionReceiver
 
Context context
 
PendingIntent permissionIntent
 
final Semaphore semaphore = new Semaphore(1)
 
final ExecutorService executor = Executors.newSingleThreadExecutor()
 
Future<?> cancelFuture
 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()
 
final Object lock = new Object()
 

靜態私有屬性

static final int BLOCK_SIZE = 512
 

詳細描述

實作 USB 通訊的類別,並繼承自 AComm 類別。

範例

package com.test.UniPRTSdk;
import android.content.Context;
import java.io.*;
import java.util.List;
public class commUsbSnippet {
private static String ACTION_USB_PERMISSION = "com.example.UniPRTsdk_test.USB_PERMISSION";
static Context ctx;
public static void test(Context _ctx) {
ctx = _ctx;
sendPrintFile(); // send file over default printer data port
sendPrintString(); // send print data over default printer data port
}
public static void sendPrintFile() {
String fileName = "C:\\testFiles\\Hello.pgl";
UsbConnection ptrUsbComm = new UsbConnection(ctx); // sending through default data port
ptrUsbComm.RequestUSBPermission(ACTION_USB_PERMISSION);
try {
ptrUsbComm.Open();
if (new File(fileName).exists()) {
try (InputStream binReader = new BufferedInputStream(new FileInputStream(fileName))) {
System.out.println("Sending \"" + fileName + "\" to printer");
byte[] buffer = new byte[1024];
while ((binReader.read(buffer)) != -1) {
ptrUsbComm.Write(buffer);
}
}
} else {
System.out.println("File \"" + fileName + "\" not found");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
ptrUsbComm.Close();
}
}
public static void sendPrintString() {
String dataToPrint =
"~CREATE;C39;72\n" +
"SCALE;DOT\n" +
"PAGE;30;40\n" +
"ALPHA\n" +
"C10;1;33;0;0;@HELLO@\n" +
"C16;54;37;0;0;@*World*@\n" +
"STOP\n" +
"BARCODE\n" +
"C128C;XRD3:3:6:6:9:9:12:12;H6;10;32\n" +
"@World@\n" +
"STOP\n" +
"END\n" +
"~EXECUTE;C39\n" +
"~NORMAL\n";
UsbConnection ptrUsbComm = new UsbConnection(ctx); // sending through default data port
ptrUsbComm.RequestUSBPermission(ACTION_USB_PERMISSION);
try {
ptrUsbComm.Open();
if (ptrUsbComm.Connected()) {
byte[] outBytes = dataToPrint.getBytes("US-ASCII");
ptrUsbComm.Write(outBytes);
} else {
System.out.println("Not connected to printer");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
ptrUsbComm.Close();
}
}
}

建構子與解構子說明文件

◆ UsbConnection() [1/5]

com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( Context  context,
String  descriptorHint 
)

根據 descriptor hint 初始化此類別的新實例。

參數
context應用程式的 Context。
descriptorHint描述提示字串。

參考 com.UniPRT.Sdk.Comm.UsbConnection.context, 及 com.UniPRT.Sdk.Comm.UsbConnection.DescriptorValidate().

◆ UsbConnection() [2/5]

com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( Context  context)

使用預設的廠商 ID 初始化類別實例,目標為第一台符合其中一個已知廠商 ID 的印表機。

參數
context軟體上下文。

參考 com.UniPRT.Sdk.Comm.UsbConnection.context, com.UniPRT.Sdk.Comm.UsbConnection.PTX_USB_VID, 及 com.UniPRT.Sdk.Comm.UsbConnection.TSC_USB_VID.

◆ UsbConnection() [3/5]

com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( Context  context,
short  vendorId 
)

使用指定的廠商 ID 初始化類別實例,目標為第一台符合該廠商 ID 的印表機。

參數
context軟體上下文。
vendorId指定目標印表機的廠商 ID(例如 TSC 或 PRINTRONIX)。

參考 com.UniPRT.Sdk.Comm.UsbConnection.context.

◆ UsbConnection() [4/5]

com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( Context  context,
short  vendorId,
short  productId 
)

使用指定的廠商 ID 和產品 ID 初始化類別實例,目標為第一台符合兩者的印表機。

參數
context軟體上下文。
vendorId指定目標印表機的廠商 ID(例如 TSC 或 PRINTRONIX)。
productId指定目標印表機的產品 ID。

參考 com.UniPRT.Sdk.Comm.UsbConnection.context.

◆ UsbConnection() [5/5]

函式成員說明文件

◆ BytesAvailable()

int com.UniPRT.Sdk.Comm.UsbConnection.BytesAvailable ( )

Get the number of bytes available to read.

傳回值
Number of bytes available to read.

實作 com.UniPRT.Sdk.Comm.IComm.

參考 com.UniPRT.Sdk.Comm.UsbConnection.byteArrayOutputStream.

◆ Close()

◆ Connected()

boolean com.UniPRT.Sdk.Comm.UsbConnection.Connected ( )

Check if connection is established.

傳回值
true if connection is established, otherwise false.

實作 com.UniPRT.Sdk.Comm.IComm.

參考 com.UniPRT.Sdk.Comm.UsbConnection._is_connected.

◆ contains()

static boolean com.UniPRT.Sdk.Comm.UsbConnection.contains ( short[]  array,
short  target 
)
static

◆ Descriptor()

String com.UniPRT.Sdk.Comm.UsbConnection.Descriptor ( )

傳回 USB 連線的描述字串。

傳回格式:

  • USB:V_ID:<v_id>; P_ID:<p_id>
  • p_id 和 v_id 是 short 整數,例如:V_ID:4611; P_ID:1234

實作 com.UniPRT.Sdk.Comm.IComm.

參考 com.UniPRT.Sdk.Comm.UsbConnection._p_id, 及 com.UniPRT.Sdk.Comm.UsbConnection._v_id.

◆ DescriptorValidate()

static DescriptorValidateResult com.UniPRT.Sdk.Comm.UsbConnection.DescriptorValidate ( String  descriptorHint)
static

驗證 descriptorHint 提供的描述字串。

descriptorHint 可接受的格式:

  • "USB"
  • "USB:V_ID:4611"
  • "USB:V_ID:4611; P_ID:1234"
  • V_ID 與 P_ID 可為十進位或十六進位(例如 0x1203)

被參考於 com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection().

◆ Open()

◆ P_ID()

short com.UniPRT.Sdk.Comm.UsbConnection.P_ID ( )

◆ Read()

byte [] com.UniPRT.Sdk.Comm.UsbConnection.Read ( )

◆ RequestUSBPermission()

◆ startReceivingTask()

◆ V_ID()

short com.UniPRT.Sdk.Comm.UsbConnection.V_ID ( )

◆ Write()

void com.UniPRT.Sdk.Comm.UsbConnection.Write ( byte[]  dataOut)

資料成員說明文件

◆ _is_connected

boolean com.UniPRT.Sdk.Comm.UsbConnection._is_connected = false
private

◆ _p_id

◆ _v_id

◆ BLOCK_SIZE

final int com.UniPRT.Sdk.Comm.UsbConnection.BLOCK_SIZE = 512
staticprivate

◆ byteArrayOutputStream

ByteArrayOutputStream com.UniPRT.Sdk.Comm.UsbConnection.byteArrayOutputStream = new ByteArrayOutputStream()
private

◆ cancelFuture

Future<?> com.UniPRT.Sdk.Comm.UsbConnection.cancelFuture
private

◆ context

Context com.UniPRT.Sdk.Comm.UsbConnection.context
private

◆ executor

final ExecutorService com.UniPRT.Sdk.Comm.UsbConnection.executor = Executors.newSingleThreadExecutor()
private

◆ lock

final Object com.UniPRT.Sdk.Comm.UsbConnection.lock = new Object()
private

◆ mUsbConnection

◆ mUsbDevice

◆ mUsbEndpointIn

UsbEndpoint com.UniPRT.Sdk.Comm.UsbConnection.mUsbEndpointIn
private

◆ mUsbEndpointOut

UsbEndpoint com.UniPRT.Sdk.Comm.UsbConnection.mUsbEndpointOut
private

◆ mUsbIntf

UsbInterface com.UniPRT.Sdk.Comm.UsbConnection.mUsbIntf
private

◆ mUsbManager

◆ permissionIntent

PendingIntent com.UniPRT.Sdk.Comm.UsbConnection.permissionIntent
private

◆ PTX_USB_VID

final short com.UniPRT.Sdk.Comm.UsbConnection.PTX_USB_VID = 0x14AE
static

◆ semaphore

final Semaphore com.UniPRT.Sdk.Comm.UsbConnection.semaphore = new Semaphore(1)
private

◆ TSC_USB_VID

final short com.UniPRT.Sdk.Comm.UsbConnection.TSC_USB_VID = 0x1203
static

◆ usbPermissionReceiver

BroadcastReceiver com.UniPRT.Sdk.Comm.UsbConnection.usbPermissionReceiver
private

此類別(class) 文件是由下列檔案中產生:
com.UniPRT.Sdk.Comm
Definition: AComm.java:1
com.UniPRT.Sdk.Utilities.Tuple
Definition: Tuple.java:3
com.UniPRT
com.UniPRT.Sdk.Comm.UsbConnection
實作 USB 通訊的類別,並繼承自 AComm 類別。
Definition: UsbConnection.java:46
com.UniPRT.Sdk.Utilities
Definition: Tuple.java:1
com.UniPRT.Sdk.Comm.UsbConnection.UsbConnection
UsbConnection(Context context, String descriptorHint)
根據 descriptor hint 初始化此類別的新實例。
Definition: UsbConnection.java:216
com.UniPRT.Sdk
com