Click or drag to resize

MultichannelTcpConnection Class

Establishes a Multichannel TCP connection to a device.
Inheritance Hierarchy

Namespace:  Zebra.Sdk.Comm
Assembly:  SdkApi.Core (in SdkApi.Core.dll) Version: 2.15.2634
Syntax
public class MultichannelTcpConnection : MultichannelConnection

The MultichannelTcpConnection type exposes the following members.

Constructors
  NameDescription
Public methodMultichannelTcpConnection(DiscoveredPrinter)
Initializes a new instance of the MultichannelTcpConnection class.
Public methodMultichannelTcpConnection(String, Int32, Int32)
Initializes a new instance of the MultichannelTcpConnection class.
Public methodMultichannelTcpConnection(DiscoveredPrinter, Int32, Int32)
Initializes a new instance of the MultichannelTcpConnection class.
Public methodMultichannelTcpConnection(String, Int32, Int32, Int32, Int32)
Initializes a new instance of the MultichannelTcpConnection class.
Public methodMultichannelTcpConnection(DiscoveredPrinter, Int32, Int32, Int32, Int32)
Initializes a new instance of the MultichannelTcpConnection class.
Public methodMultichannelTcpConnection(String, Int32, Int32, Int32, Int32, Int32, Int32)
Initializes a new instance of the MultichannelTcpConnection class.
Top
Properties
  NameDescription
Public propertyConnected
Returns true if the connection is open.
(Inherited from MultichannelConnection.)
Public propertyMaxTimeoutForRead
Gets or sets the maximum time, in milliseconds, to wait for any data to be received.
(Inherited from MultichannelConnection.)
Public propertyPrintingChannel
Gets the underlying printing Connection of this MultichannelConnection.
(Inherited from MultichannelConnection.)
Public propertySimpleConnectionName
Return the IP address as the description.
(Overrides MultichannelConnectionSimpleConnectionName.)
Public propertyStatusChannel
Gets the underlying status StatusConnection of this MultichannelConnection.
(Inherited from MultichannelConnection.)
Public propertyTimeToWaitForMoreData
Gets or sets the maximum time, in milliseconds, to wait in-between reads after the initial read.
(Inherited from MultichannelConnection.)
Top
Methods
  NameDescription
Public methodAddWriteLogStream
Sets the stream to log the write data to.
(Inherited from MultichannelConnection.)
Public methodBytesAvailable
Returns an estimate of the number of bytes that can be read from this connection without blocking.
(Inherited from MultichannelConnection.)
Public methodClose
Closes both the printing and status channels of this MultichannelConnection.
(Inherited from MultichannelConnection.)
Public methodClosePrintingChannel
Closes the printing channel of this MultichannelConnection.
(Inherited from MultichannelConnection.)
Public methodCloseStatusChannel
Closes the status channel of this MultichannelConnection.
(Inherited from MultichannelConnection.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodGetConnectionReestablisher
Returns a ConnectionReestablisher which allows for easy recreation of a connection which may have been closed.
(Overrides MultichannelConnectionGetConnectionReestablisher(Int64).)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodOpen
Opens both the printing and status channel of this Multichannel connection.
(Inherited from MultichannelConnection.)
Public methodOpenPrintingChannel
Opens the printing channel of this Multichannel connection.
(Inherited from MultichannelConnection.)
Public methodOpenStatusChannel
Opens the status channel of this Multichannel connection.
(Inherited from MultichannelConnection.)
Public methodRead
Reads all the available data from the connection. This call is non-blocking.
(Inherited from MultichannelConnection.)
Public methodRead(BinaryWriter)
Reads all the available data from the connection.
(Inherited from MultichannelConnection.)
Public methodReadChar
Reads the next byte of data from the connection.
(Inherited from MultichannelConnection.)
Public methodSendAndWaitForResponse(Byte, Int32, Int32, String)
Sends dataToSend and returns the response data.
(Inherited from MultichannelConnection.)
Public methodSendAndWaitForResponse(BinaryWriter, BinaryReader, Int32, Int32, String)
Sends data from sourceStream and writes the response data to destinationStream.
(Inherited from MultichannelConnection.)
Public methodSendAndWaitForValidResponse(Byte, Int32, Int32, ResponseValidator)
Sends dataToSend and returns the response data.
(Inherited from MultichannelConnection.)
Public methodSendAndWaitForValidResponse(BinaryWriter, BinaryReader, Int32, Int32, ResponseValidator)
Sends data from sourceStream and writes the response data to destinationStream.
(Inherited from MultichannelConnection.)
Public methodToString
The Address, PrintingPort, and StatusPort are the parameters which were passed into the constructor.
(Overrides ObjectToString.)
Public methodWaitForData
Causes the currently executing thread to sleep until BytesAvailable > 0, or for a maximum of maxTimeout milliseconds.
(Inherited from MultichannelConnection.)
Public methodWrite(Byte)
Writes data.Length bytes from the specified byte array to this output stream.
(Inherited from MultichannelConnection.)
Public methodWrite(BinaryReader)
Writes all available bytes from the data source to this output stream.
(Inherited from MultichannelConnection.)
Public methodWrite(Byte, Int32, Int32)
Writes length bytes from data starting at offset.
(Inherited from MultichannelConnection.)
Top
Fields
  NameDescription
Public fieldStatic memberDEFAULT_MULTICHANNEL_PRINTING_PORT
The default Multichannel printing port for Link-OS devices.
Public fieldStatic memberDEFAULT_MULTICHANNEL_STATUS_PORT
The default Multichannel status port for Link-OS devices.
Top
Examples
using System;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Printer;

public class MultichannelTcpConnectionExample {

    public static void Main(string[] args) {
        new MultichannelTcpConnectionExample().SimpleExample("1.2.3.4");
        new MultichannelTcpConnectionExample().NonBlockingStatusReporting("1.2.3.4");
    }

    private void SimpleExample(string theIpAddress) {
        // Instantiate Multichannel connection for simultaneous printing and status reporting at given address
        Connection thePrinterConn = new MultichannelTcpConnection(theIpAddress, MultichannelTcpConnection.DEFAULT_MULTICHANNEL_PRINTING_PORT, MultichannelTcpConnection.DEFAULT_MULTICHANNEL_STATUS_PORT);

        try {
            // Opens the connection - physical connection is established here.
            thePrinterConn.Open();

            // Creates a Link-OS printing with the given connection
            ZebraPrinterLinkOs linkOsPrinter = ZebraPrinterFactory.GetLinkOsPrinter(thePrinterConn);

            // This is sent over the printing channel (9100 by default)
            linkOsPrinter.PrintConfigurationLabel();

            // This is sent over the status channel (9200 by default)
            PrinterStatus status = linkOsPrinter.GetCurrentStatus();

            Console.WriteLine("The printer PAUSED state is : " + status.isPaused);
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void NonBlockingStatusReporting(string theIpAddress) {
        // Instantiate Multichannel connection for simultaneous printing and status reporting at given address
        Connection thePrinterConn = new MultichannelTcpConnection(theIpAddress, MultichannelTcpConnection.DEFAULT_MULTICHANNEL_PRINTING_PORT, MultichannelTcpConnection.DEFAULT_MULTICHANNEL_STATUS_PORT);

        try {
            // Opens the connection - physical connection is established here.
            thePrinterConn.Open();

            // Creates a Link-OS printing with the given connection
            ZebraPrinterLinkOs linkOsPrinter = ZebraPrinterFactory.GetLinkOsPrinter(thePrinterConn);

            // This is sent over the printing channel (9100 by default) and will block the printing channel until the
            // label format is completely sent.
            string labelFormatStartCommand = "^XA";
            linkOsPrinter.SendCommand(labelFormatStartCommand);

            string labelBody = "^FO20,20^A0N,25,25^FDThis is a ZPL test.^FS";
            linkOsPrinter.SendCommand(labelBody);

            // This is sent over the status channel (9200 by default) and will return immediately even though the
            // printing channel is in use.
            // If a TcpConnection were used instead of a MultichannelTcpConnection, this would not be possible.
            PrinterStatus status = linkOsPrinter.GetCurrentStatus();

            Console.WriteLine("The printer PAUSED state is : " + status.isPaused);

            // Send the end of label command to finish and print the label.
            string labelFormatEndCommand = "^XZ";
            linkOsPrinter.SendCommand(labelFormatEndCommand);
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }
}
See Also