UniPRT SDK  v2.0.0.3
UniPRT.Sdk.Comm.UsbConnection类 参考

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

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

Public 成员函数

 UsbConnection ()
 根据 vendorIdproductId 初始化新类实例。此实例的目标是与 vendorId 和 productId 匹配的第一个印表机。 更多...
 
 UsbConnection (short vendorId)
 
 UsbConnection (short vendorId, short productId)
 
 UsbConnection (string descriptor)
 根据 descriptor 字符串初始化新类实例。 更多...
 
override void Close ()
 Closes a connection.
 
override void Open ()
 Opens a connection.
 
override byte[] Read ()
 Read all bytes available.
 
virtual void Read (BinaryWriter binDataIn)
 Reads all bytes available into the stream passed in.
 
virtual void WaitForData (int msTimeOut)
 等待数据可用 BytesAvailable 在当前线程。当前线程休眠直到接收到数据或超时。阻塞调用。 更多...
 
virtual void Write (BinaryReader binReader)
 从输入流写入输出流 更多...
 
override void Write (byte[] dataOut)
 Writes all bytes from the array passed in.
 
virtual void WriteAndWaitForResponse (BinaryWriter binDataIn, BinaryReader binDataOut, int responseStartTimeOut, int responseEndTimeOut, string completetionToken)
 将 binDataOut 流数据写入输出流,并将接收到的数据返回到 binDataIn 流中。返回的数据是接收到的任何数据或达到接收的完成标记。如果没有响应则在返回前等待超时。 更多...
 
virtual byte[] WriteAndWaitForResponse (byte[] dataOut, int responseStartTimeOut, int responseEndTimeOut, string completetionToken)
 将字节数据写入输出流并返回接收到的数据。返回的数据是接收到的任何数据或达到接收的完成标记。在返回前等待响应超时。 更多...
 

静态 Public 成员函数

static List<(short vendorID, short productID)> AvaliableDevices ()
 以 List<(short v_id, short p_id)> 格式返回有效设备的 v_id 和 p_id。 更多...
 
static List< short > DescriptorValidate (string descriptorHint)
 验证从 descriptorHint 传入的描述符字符串,该字符串可能包含或不包含 v_id 和 p_id。返回元组。 更多...
 

Public 属性

override string Descriptor => $"USB:V_ID:{_v_id}; P_ID:{_p_id}"
 返回连接的字符串描述。格式:"USB:V_ID:_v_id; P_ID:_p_id" 例如 "USB:V_ID:4611; P_ID:1234" 更多...
 

静态 Public 属性

static readonly short PTX_USB_VID = 0x14ae
 USB v_id of PRINTRONIX printer (0x14ae)
 
static readonly short TSC_USB_VID = 0x1203
 USB v_id of TSC printer (0x1203)
 

属性

override int BytesAvailable [get]
 
override bool Connected [get]
 
short P_ID [get]
 Product ID
 
short V_ID [get]
 Vendor ID
 

详细描述

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

示例

using System;
using System.IO;
using System.Text;
using UniPRT.Sdk.Comm; // imports SDK namespace
namespace Snippets
{
class MyComm
{
public static void MainComm(string[] args)
{
SendPrintFile(); // send file over usb
SendPrintString(); // send print data over usb
}
public static void SendPrintFile() // send file over usb
{
var devices = UsbConnection.AvaliableDevices();
if (devices.Count > 0)
{
string fileName = @"C:\testFiles\Hello.pgl";
UsbConnection PtrUsbComm = new UsbConnection(devices[0].vendorID, devices[0].productID);
try
{
PtrUsbComm.Open();
if (File.Exists(fileName))
{
using (BinaryReader binReader = new BinaryReader(File.Open(fileName, FileMode.Open)))
{
Console.WriteLine($"Sending \"{fileName}\" to printer");
PtrUsbComm.Write(binReader);
}
}
else
{
Console.WriteLine($"File \"{fileName}\" not found");
}
}
catch (Exception e)
{
Console.WriteLine($"Exception Msg: {e.Message}");
}
finally
{
PtrUsbComm.Close();
}
}
}
public static void SendPrintString() // send print data over usb
{
string dataToPrint =
@"~CREATE;C39;72
SCALE;DOT
PAGE;30;40
ALPHA
C10;1;33;0;0;@HELLO@
C16;54;37;0;0;@*World*@
STOP
BARCODE
C128C;XRD3:3:6:6:9:9:12:12;H6;10;32
@World@
STOP
END
~EXECUTE;C39
~NORMAL
";
var devices = UsbConnection.AvaliableDevices();
if (devices.Count > 0)
{
UsbConnection PtrUsbComm = new UsbConnection(devices[0].vendorID, devices[0].productID);
try
{
PtrUsbComm.Open();
if (PtrUsbComm.Connected)
{
//byte[] outBytes = Encoding.UTF8.GetBytes(dataToPrint);
byte[] outBytes = Encoding.ASCII.GetBytes(dataToPrint);
PtrUsbComm.Write(outBytes);
}
else
{
Console.WriteLine($"Not connected to printer");
}
}
catch (Exception e)
{
Console.WriteLine($"Exception Msg: {e.Message}");
}
finally
{
PtrUsbComm.Close();
}
}
}
}
}

构造及析构函数说明

◆ UsbConnection() [1/2]

UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( string  descriptor)

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

参数
[in]descriptor可接受的格式:
  • USB
  • USB:V_ID:<v_id>
  • USB:V_ID:<v_id>; P_ID:<p_id>
    • <v_id> 和 <p_id> 允许十进制或十六进制

◆ UsbConnection() [2/2]

UniPRT.Sdk.Comm.UsbConnection.UsbConnection ( )

根据 vendorIdproductId 初始化新类实例。此实例的目标是与 vendorId 和 productId 匹配的第一个印表机。

参数
[in]vendorId指定要连接的 TSC 印表机或 PRINTRONIX 印表机。 当此参数省略时,TSC 印表机或 PRINTRONIX 印表机皆为目标
[in]productId指定印表机的 productId。 当此参数省略时,第一个与 vendorId 匹配的印表机为目标

成员函数说明

◆ AvaliableDevices()

static List<(short vendorID, short productID)> UniPRT.Sdk.Comm.UsbConnection.AvaliableDevices ( )
static

以 List<(short v_id, short p_id)> 格式返回有效设备的 v_id 和 p_id。

"v_id" 指的是厂商 ID,而 "p_id" 指的是产品 ID。

◆ DescriptorValidate()

static List<short> UniPRT.Sdk.Comm.UsbConnection.DescriptorValidate ( string  descriptorHint)
static

验证从 descriptorHint 传入的描述符字符串,该字符串可能包含或不包含 v_id 和 p_id。返回元组。

descriptorHint 接受的值:

  • 未指定: "USB"
  • 指定 V_ID: "USB:V_ID:4611" 或 "USB:V_ID:0x1203"
  • 指定 V_ID 和 P_ID: "USB:V_ID:4611; P_ID:1234" 或 "USB:V_ID:0x1203; P_ID:0x04D2"

◆ WaitForData()

virtual void UniPRT.Sdk.Comm.AComm.WaitForData ( int  msTimeOut)
virtualinherited

等待数据可用 BytesAvailable 在当前线程。当前线程休眠直到接收到数据或超时。阻塞调用。

参数
[in]msTimeOut如果未接收到数据则在返回前的毫秒超时时间。

实现了 UniPRT.Sdk.Comm.IComm.

◆ Write()

virtual void UniPRT.Sdk.Comm.AComm.Write ( BinaryReader  binReader)
virtualinherited

从输入流写入输出流

参数
[in]binReader要发送的源数据

实现了 UniPRT.Sdk.Comm.IComm.

◆ WriteAndWaitForResponse() [1/2]

virtual void UniPRT.Sdk.Comm.AComm.WriteAndWaitForResponse ( BinaryWriter  binDataIn,
BinaryReader  binDataOut,
int  responseStartTimeOut,
int  responseEndTimeOut,
string  completetionToken 
)
virtualinherited

将 binDataOut 流数据写入输出流,并将接收到的数据返回到 binDataIn 流中。返回的数据是接收到的任何数据或达到接收的完成标记。如果没有响应则在返回前等待超时。

参数
[out]binDataIn目标流以存储从连接接收到的响应。
[in]binDataOut
要写入连接的源流数据。
[in]responseStartTimeOut等待接收到第一个数据的超时时间(毫秒)。第一个字节的时间。
[in]responseEndTimeOut没有接收到新数据的超时时间(毫秒)。最后一个字节后的时间。
[in]completetionToken指示预期响应结束的字符串标记。如果只是想等待写入数据后的响应,可以是空字符串。

实现了 UniPRT.Sdk.Comm.IComm.

◆ WriteAndWaitForResponse() [2/2]

virtual byte [] UniPRT.Sdk.Comm.AComm.WriteAndWaitForResponse ( byte[]  dataOut,
int  responseStartTimeOut,
int  responseEndTimeOut,
string  completetionToken 
)
virtualinherited

将字节数据写入输出流并返回接收到的数据。返回的数据是接收到的任何数据或达到接收的完成标记。在返回前等待响应超时。

返回值
byte[]从连接接收到的字节数组。 返回的数据是接收到的任何数据或达到完成标记时的数据。
参数
[in]dataOut
要写入连接的源字节数组。
[in]responseStartTimeOut等待接收到第一个数据的超时时间(毫秒)。第一个字节的时间。
[in]responseEndTimeOut没有接收到新数据的超时时间(毫秒)。最后一个字节后的时间。
[in]completetionToken指示预期响应结束的字符串标记。如果只是想等待写入数据后的响应,可以是空字符串。

实现了 UniPRT.Sdk.Comm.IComm.

类成员变量说明

◆ Descriptor

override string UniPRT.Sdk.Comm.UsbConnection.Descriptor => $"USB:V_ID:{_v_id}; P_ID:{_p_id}"

返回连接的字符串描述。格式:"USB:V_ID:_v_id; P_ID:_p_id" 例如 "USB:V_ID:4611; P_ID:1234"

返回格式:

  • USB:V_ID:<v_id>; P_ID:<p_id>
    • p_id 和 v_id 是 short 数字。例:V_ID:4611; P_ID:1234
UniPRT
提供对不同通信接口/端口的支持
Definition: Communication.cs:9
UniPRT.Sdk.Comm
Definition: Communication.cs:9
UniPRT.Sdk
Definition: Communication.cs:9
UniPRT.Sdk.Comm.UsbConnection.UsbConnection
UsbConnection()
根据 vendorId 和 productId 初始化新类实例。此实例的目标是与 vendorId 和 productId 匹配的第一个印表机。
Definition: UsbComm.cs:406