UniPRT SDK  v2.0.0.1
com.UniPRT.Sdk.Comm.BLEConnection类 参考

实现 BLE 特定通信并扩展 AComm 类的类。 更多...

类 com.UniPRT.Sdk.Comm.BLEConnection 继承关系图:
com.UniPRT.Sdk.Comm.AComm com.UniPRT.Sdk.Comm.IComm

Public 成员函数

 BLEConnection (Context context, String address)
 根据 descriptor 字符串初始化新实例。 更多...
 
int BytesAvailable ()
 
String Descriptor ()
 验证 descriptorHint 中的描述字符串,此字符串可能包含或不包含 v_id 和 p_id。返回 long。 更多...
 
boolean Connected ()
 
void Close ()
 
void CloseWithTimeout (int timeoutMs)
 
void Open ()
 
byte[] Read ()
 
void Write (byte[] dataOut)
 
- 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 CompletableFuture< List< BluetoothDevice > > scanDevicesForDuration (int seconds)
 

Private 成员函数

CompletableFuture< Void > waitForDisconnectedAsync (int timeoutMs)
 
CompletableFuture< Void > waitForConnectedAsync (int timeoutMs)
 
void waitAck () throws InterruptedException
 
void notifyAck ()
 

Private 属性

BluetoothDevice device
 
BluetoothGatt mBluetoothGatt
 
BluetoothGattCharacteristic rxCharacteristic
 
BluetoothGattCharacteristic txCharacteristic
 
String deviceAddress = ""
 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()
 
int ble_mtu = 512
 
boolean isConnected = false
 
final Object ackLock = new Object()
 
boolean ackReceived = false
 
final Context context
 
final Semaphore semaphore = new Semaphore(1)
 
final BluetoothGattCallback mGattCallback
 

静态 Private 属性

static final UUID SERVICE_UUID = UUID.fromString("0000fff0-0000-1000-8000-00805f9b34fb")
 
static final UUID TX_UUID = UUID.fromString("0000fff1-0000-1000-8000-00805f9b34fb")
 
static final UUID RX_UUID = UUID.fromString("0000fff2-0000-1000-8000-00805f9b34fb")
 
static BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
 

详细描述

实现 BLE 特定通信并扩展 AComm 类的类。

示例

package com.test.UniPRTSdk;
import java.io.*;
public class commBTClassicSnippet {
public static void test() {
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";
BLEConnection comm = BLEConnection(this, "DC:0D:30:23:3A:6C");
try {
comm.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) {
comm.Write(buffer);
}
}
} else {
System.out.println("File \"" + fileName + "\" not found");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
comm.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";
BLEConnection comm = BLEConnection(this, "DC:0D:30:23:3A:6C");
try {
comm.Open();
if (comm.Connected()) {
byte[] outBytes = dataToPrint.getBytes("US-ASCII");
comm.Write(outBytes);
} else {
System.out.println("Not connected to printer");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
comm.Close();
}
}
}

构造及析构函数说明

◆ BLEConnection()

com.UniPRT.Sdk.Comm.BLEConnection.BLEConnection ( Context  context,
String  address 
)

根据 descriptor 字符串初始化新实例。

参数
descriptor可接受格式:
  • "BT:MAC Address:<_bt_mac>"
    • _bt_mac 为十六进制字符串,例如:MAC Address:"00:80:A3:12:34:56"

引用了 com.UniPRT.Sdk.Comm.BLEConnection.context.

成员函数说明

◆ BytesAvailable()

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

Get the number of bytes available to read.

返回
Number of bytes available to read.

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

引用了 com.UniPRT.Sdk.Comm.BLEConnection.byteArrayOutputStream.

◆ Close()

void com.UniPRT.Sdk.Comm.BLEConnection.Close ( )

◆ CloseWithTimeout()

◆ Connected()

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

Check if connection is established.

返回
true if connection is established, otherwise false.

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

引用了 com.UniPRT.Sdk.Comm.BLEConnection.isConnected.

被这些函数引用 com.UniPRT.Sdk.Comm.BLEConnection.Open().

◆ Descriptor()

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

验证 descriptorHint 中的描述字符串,此字符串可能包含或不包含 v_id 和 p_id。返回 long。

descriptorHint 可接受的格式:

  • "BLE:MAC Address:<_bt_mac>"
    • _bt_mac 是十六进制的 字符串,例如:MAC Address:0080A3123456

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

引用了 com.UniPRT.Sdk.Comm.BLEConnection.deviceAddress.

◆ notifyAck()

void com.UniPRT.Sdk.Comm.BLEConnection.notifyAck ( )
private

◆ Open()

◆ Read()

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

Read all available bytes.

返回
Array of bytes read.

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

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

◆ scanDevicesForDuration()

static CompletableFuture<List<BluetoothDevice> > com.UniPRT.Sdk.Comm.BLEConnection.scanDevicesForDuration ( int  seconds)
static

◆ waitAck()

void com.UniPRT.Sdk.Comm.BLEConnection.waitAck ( ) throws InterruptedException
private

◆ waitForConnectedAsync()

CompletableFuture<Void> com.UniPRT.Sdk.Comm.BLEConnection.waitForConnectedAsync ( int  timeoutMs)
private

◆ waitForDisconnectedAsync()

CompletableFuture<Void> com.UniPRT.Sdk.Comm.BLEConnection.waitForDisconnectedAsync ( int  timeoutMs)
private

◆ Write()

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

类成员变量说明

◆ ackLock

final Object com.UniPRT.Sdk.Comm.BLEConnection.ackLock = new Object()
private

◆ ackReceived

boolean com.UniPRT.Sdk.Comm.BLEConnection.ackReceived = false
private

◆ ble_mtu

int com.UniPRT.Sdk.Comm.BLEConnection.ble_mtu = 512
private

◆ byteArrayOutputStream

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

◆ context

final Context com.UniPRT.Sdk.Comm.BLEConnection.context
private

◆ device

BluetoothDevice com.UniPRT.Sdk.Comm.BLEConnection.device
private

◆ deviceAddress

String com.UniPRT.Sdk.Comm.BLEConnection.deviceAddress = ""
private

◆ isConnected

◆ mBluetoothAdapter

BluetoothAdapter com.UniPRT.Sdk.Comm.BLEConnection.mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
staticprivate

◆ mBluetoothGatt

BluetoothGatt com.UniPRT.Sdk.Comm.BLEConnection.mBluetoothGatt
private

◆ mGattCallback

final BluetoothGattCallback com.UniPRT.Sdk.Comm.BLEConnection.mGattCallback
private

◆ RX_UUID

final UUID com.UniPRT.Sdk.Comm.BLEConnection.RX_UUID = UUID.fromString("0000fff2-0000-1000-8000-00805f9b34fb")
staticprivate

◆ rxCharacteristic

BluetoothGattCharacteristic com.UniPRT.Sdk.Comm.BLEConnection.rxCharacteristic
private

◆ semaphore

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

◆ SERVICE_UUID

final UUID com.UniPRT.Sdk.Comm.BLEConnection.SERVICE_UUID = UUID.fromString("0000fff0-0000-1000-8000-00805f9b34fb")
staticprivate

◆ TX_UUID

final UUID com.UniPRT.Sdk.Comm.BLEConnection.TX_UUID = UUID.fromString("0000fff1-0000-1000-8000-00805f9b34fb")
staticprivate

◆ txCharacteristic

BluetoothGattCharacteristic com.UniPRT.Sdk.Comm.BLEConnection.txCharacteristic
private

该类的文档由以下文件生成:
com.UniPRT.Sdk.Comm
Definition: AComm.java:1
com.UniPRT
com.UniPRT.Sdk.Comm.BTClassicConnection
实现蓝牙经典(Bluetooth Classic)通信的类,并继承自 AComm 类。
Definition: BTClassicConnection.java:36
com.UniPRT.Sdk.Comm.BLEConnection.BLEConnection
BLEConnection(Context context, String address)
根据 descriptor 字符串初始化新实例。
Definition: BLEConnection.java:105
com.UniPRT.Sdk
com