UniPRT SDK  v1.0.0.0
TcpConnection Class Reference

Class that implements the TCP specific communication and extends the AComm class. More...

Inheritance diagram for TcpConnection:
AComm IComm

Classes

enum  DescriptorPortType
 Types for requesting descriptors with default port values. More...
 

Public Member Functions

 TcpConnection (String descriptor) throws IllegalArgumentException
 Initialize new class instance based on descriptor string. More...
 
 TcpConnection (String ipAddress, int port)
 Initialize new class instance.
 
int BytesAvailable ()
 Number of bytes available to read. This is estimate and number can change as data is received.
 
void Close ()
 Closes a connection.
 
boolean Connected ()
 true if connection is established
 
String Descriptor ()
 Returns a string description of the connection. Format: "TCP:ip:port" e.g. "TCP:127.0.0.1:9100". More...
 
String IpAddress ()
 IP address of connection.
 
void Open ()
 Opens a connection.
 
int Port ()
 Port Number of connection.
 
byte[] Read ()
 Read all bytes available.
 
void Read (OutputStream binDataIn) throws IOException
 Reads all bytes available into the stream passed in.
 
void WaitForData (int msTimeOut)
 Waits until data available BytesAvailable in current thread. Current thread sleeps until data received or timeout reached. Blocking call.
More...
 
void Write (byte[] dataOut)
 Writes all bytes from the array passed in.
 
void Write (InputStream binReader) throws IOException
 Write from input stream to output stream
More...
 
byte[] WriteAndWaitForResponse (byte[] dataOut, int responseStartTimeOut, int responseEndTimeOut, String completetionToken) throws IOException
 Write byte data to output stream and return data received. Data returned is any data received or up to completion token if received. Wait for response timeout before returning. More...
 
void WriteAndWaitForResponse (OutputStream binDataIn, InputStream binDataOut, int responseStartTimeOut, int responseEndTimeOut, String completetionToken) throws IOException
 Write binDataOut stream data to output stream and return data received in binDataIn stream. Data returned is any data received or up to completion token if received. Wait for response timeout before returning. More...
 

Static Public Member Functions

static String DescriptorValidate (String descriptorHint, DescriptorPortType portTypeHint)
 Validate/build descriptor string from descriptorHint that may or may not have a port. Returns valid descriptor or empty "" string. More...
 

Static Public Attributes

static final int DEFAULT_DATA_PORT = 9100
 Port for sending print data.
 
static final int DEFAULT_MGMT_PORT = 3007
 Port used to control and manage printers.
 
static final int DEFAULT_STATUS_PORT = 3002
 Port for listening to status messages from printer. More...
 

Detailed Description

Class that implements the TCP specific communication and extends the AComm class.

Examples

package com.test.UniPRTSdk;
import com.UniPRT.Sdk.Comm.TcpConnection;
import java.io.*;
public class commTcpSnippet {
public static void main(String[] args) {
String prtIp = "127.0.0.1";
sendPrintFile(prtIp); // send file over default printer data port
sendPrintString(prtIp); // send print data over default printer data port
}
public static void sendPrintFile(String ipAddress) {
String fileName = "C:\\testFiles\\Hello.pgl";
int defaultDataPort = TcpConnection.DEFAULT_DATA_PORT;
TcpConnection ptrTcpComm = new TcpConnection(ipAddress, defaultDataPort); // sending through default data port
try {
ptrTcpComm.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) {
ptrTcpComm.Write(buffer);
}
}
} else {
System.out.println("File \"" + fileName + "\" not found");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
ptrTcpComm.Close();
}
}
public static void sendPrintString(String ipAddress) {
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";
int defaultDataPort = TcpConnection.DEFAULT_DATA_PORT;
TcpConnection ptrTcpComm = new TcpConnection(ipAddress, defaultDataPort); // sending through default data port
try {
ptrTcpComm.Open();
if (ptrTcpComm.Connected()) {
byte[] outBytes = dataToPrint.getBytes("US-ASCII");
ptrTcpComm.Write(outBytes);
} else {
System.out.println("Not connected to printer");
}
} catch (Exception e) {
System.out.println("Exception Msg: " + e.getMessage());
} finally {
ptrTcpComm.Close();
}
}
}

Constructor & Destructor Documentation

◆ TcpConnection()

TcpConnection ( String  descriptor) throws IllegalArgumentException

Initialize new class instance based on descriptor string.

Parameters
[in]descriptorColon (:) separated string description of connection. Acceptable Formats:
  • <ip>
    • IP address in #.#.#.# format. e.g. 127.0.0.1
    • Uses default data port (DEFAULT_DATA_PORT)
  • <ip>:<port>
    • IP address and specific port number in #.#.#.#:# format. e.g. 127.0.0.1:9100
  • <type>:<ip>:<port>
    • IP address and specific port number in "TCP":#.#.#.#:# format. e.g. TCP:127.0.0.1:9100
    • Note that the type of connection will always be of "TCP" independent of what is passed in.

Member Function Documentation

◆ Descriptor()

String Descriptor ( )

Returns a string description of the connection. Format: "TCP:ip:port" e.g. "TCP:127.0.0.1:9100".

Format returned:

  • <type>:<ip>:<port>
    • IP address and specific port number in "TCP":#.#.#.#:# format. e.g. TCP:127.0.0.1:9100
    • IP and port are integer numbers
    • Note that the type of connection is "TCP".

Note that "TCP" prefix on returned string to denote the type of connection.

Implements IComm.

◆ DescriptorValidate()

static String DescriptorValidate ( String  descriptorHint,
DescriptorPortType  portTypeHint 
)
static

Validate/build descriptor string from descriptorHint that may or may not have a port. Returns valid descriptor or empty "" string.

descriptorHint accepted values:

  • Ip only: #.#.#.#
    • Uses default ports based on portTypeHint
  • Ip + Port: #.#.#.#:p where p = port number
  • TCP: Ip
    • Uses default ports based on portTypeHint
  • "TCP:" + Ip + Port: "TCP:#.#.#.#:p" where p = port number

◆ WaitForData()

void WaitForData ( int  msTimeOut)
inherited

Waits until data available BytesAvailable in current thread. Current thread sleeps until data received or timeout reached. Blocking call.

Parameters
[in]msTimeOutMillisecond timeout before return if no data received.

Implements IComm.

◆ Write()

void Write ( InputStream  binReader) throws IOException
inherited

Write from input stream to output stream

Parameters
[in]binReaderSource data to send

Implements IComm.

◆ WriteAndWaitForResponse() [1/2]

byte [] WriteAndWaitForResponse ( byte[]  dataOut,
int  responseStartTimeOut,
int  responseEndTimeOut,
String  completionToken 
) throws IOException
inherited

Write byte data to output stream and return data received. Data returned is any data received or up to completion token if received. Wait for response timeout before returning.

Return values
byte[]Array of bytes received from connection.
Data returned is any data received or up to completetionToken if token received
Parameters
[in]dataOutSource byte array to write to connection.
[in]responseStartTimeOutTimeout to wait for first data to be received. Time to first byte.
[in]responseEndTimeOutTimeout of no new data received. Time after last byte.
[in]completetionTokenString token denoting the end of the response expected. This can be empty string if simply want to wait for response after writing data to connection.

Implements IComm.

◆ WriteAndWaitForResponse() [2/2]

void WriteAndWaitForResponse ( OutputStream  binDataIn,
InputStream  binDataOut,
int  responseStartTimeOut,
int  responseEndTimeOut,
String  completionToken 
) throws IOException
inherited

Write binDataOut stream data to output stream and return data received in binDataIn stream. Data returned is any data received or up to completion token if received. Wait for response timeout before returning.

Parameters
[out]binDataInDestination stream to store response received from connection.
[in]binDataOutSource stream data to write to connection.
[in]responseStartTimeOutTimeout to wait for first data to be received. Time to first byte.
[in]responseEndTimeOutTimeout of no new data received. Time after last byte.
[in]completetionTokenString token denoting the end of the response expected. This can be empty string if simply want to wait for response after writing data to connection.

Implements IComm.

Member Data Documentation

◆ DEFAULT_STATUS_PORT

final int DEFAULT_STATUS_PORT = 3002
static

Port for listening to status messages from printer.

Printer may be configured to send status messages to different ports based on the "Ret. Status Port" setting on the printer. If the "Ret. Status Port" is set to "E-NET Stat Port", the printer may send status messages to the "Status Port Number" setting which has a default of 3002.

e.g. Emulation (printer language such as PGL) diagnostic messages from printer.

e.g. Capturing ODV barcode data and grade with the following printer menu settings:

  • "System/Printer Mgmt/Ret. Status Port" set to "E-NET Stat Port"
  • "System/Printer Mgmt/Status Port Number" set to 3002
  • "ODV2D/Control/Telemetry Data" set to "Full Report"
  • "ODV2D/Control/Return Data" set to "Data+Grade" for listening to "barcode data + grade"
com.UniPRT.Sdk.Comm.TcpConnection.TcpConnection
TcpConnection(String descriptor)
Initialize new class instance based on descriptor string.
Definition: TcpConnection.java:285