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 成员函数

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 初始化类实例,目标为第一台符合两个 ID 的打印机。 更多...
 
void RequestUSBPermission (String ACTION_USB_PERMISSION)
 
void Open ()
 
void Close ()
 
byte[] Read ()
 
void Write (byte[] dataOut)
 
void startReceivingTask ()
 
- Public 成员函数 继承自 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
 将字节数据写入输出流并返回接收到的数据。返回的数据是接收到的任何数据或收到的完成标记。等待响应超时后返回。 更多...
 

静态 Public 成员函数

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

Public 属性

UsbManager mUsbManager
 
UsbDevice mUsbDevice
 

静态 Public 属性

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

Private 成员函数

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

Private 属性

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()
 

静态 Private 属性

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 初始化类实例,目标为第一台符合两个 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 ( )

Read all available bytes.

返回
Array of bytes read.

实现了 com.UniPRT.Sdk.Comm.IComm.

引用了 com.UniPRT.Sdk.Comm.UsbConnection.byteArrayOutputStream , 以及 com.UniPRT.Sdk.Comm.UsbConnection.semaphore.

◆ RequestUSBPermission()

void com.UniPRT.Sdk.Comm.UsbConnection.RequestUSBPermission ( String  ACTION_USB_PERMISSION)

◆ startReceivingTask()

◆ V_ID()

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

◆ Write()

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

Write all bytes from the array passed in.

参数
dataOutByte array to write.

实现了 com.UniPRT.Sdk.Comm.IComm.

引用了 com.UniPRT.Sdk.Comm.UsbConnection.lock, com.UniPRT.Sdk.Comm.UsbConnection.mUsbConnection , 以及 com.UniPRT.Sdk.Comm.UsbConnection.mUsbEndpointOut.

类成员变量说明

◆ _is_connected

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

◆ _p_id

short com.UniPRT.Sdk.Comm.UsbConnection._p_id = 0x0000
private

◆ _v_id

short com.UniPRT.Sdk.Comm.UsbConnection._v_id = 0x0000
private

◆ 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

该类的文档由以下文件生成:
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