...
title | Overview |
---|
This manual describes the various I/O drivers available for the Tsentry system. Both W32 and RTSS versions of most of the drivers are available.
Supported drivers include the following:
Allen Bradley PLC 2, PLC 3, and PLC 5
Nattional Instruments Process I/O controllers
GE 9030 / 9070 PLC
TCP/IP Generic Driver
Lantronix Terminal Server
Generalized Remote Device Connection Driver
Allen-Bradley Control Logic PLC
...
Allen-Bradley Process I/O Server
...
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The core of the driver is provided as a C++ class that implements the initialization and communications functions. A sample process is provided which calls the appropriate class members. The IP address, configuration information, and data areas to be read and written are passed as calling parameters to the class functions. The following is a list of the provided driver files. After review of the example driver, the user is required to modify the files as indicated:
|
...
TpriABPlc Class Descriptions
Expand | |||||
---|---|---|---|---|---|
| |||||
Info |
| ||||
The Tsentry tpriABPlc class encapsulates the functionality required to communicate with the Allen Bradley PLC 2, PLC3, and PLC5 PLCs over a TCP/IP network. |
Expand | ||
---|---|---|
| ||
The following public member functions are provided as part of the tpriABPlc class:
where: char *pHostName= host name or IP address int timeout = time value for read and write operation in milliseconds This function stores new configuration information for use by class functions
where: return status = connection status 0 = unconnected 1 = connected This function returns the status of the connection between the Compute system and the PLC
This function stores the PLC read control information for use by the ScanIO class member
This function stores the PLC read control information for use by the ScanIO class member
This function establishes a connection between the computer system and the PLC
This function breaks a connection between the computer system and the PLC
where: int *ogram = user memory address where PLC write will be obtained int *ipsta = addr of an integer variable where I/O status will be returned This function first reads a single data block of 16 bit integers values from the PLC user register memory and then writes a block of 16 bit integers to the PLC memory. The plc locations for the read and write are obtained from prior calls to the SetReadFile90 and SetWriteFile() functions. |
Expand | ||
---|---|---|
| ||
Some comments on the driver program below:
|
National Instruments Process I/O Driver
Expand | ||
---|---|---|
| ||
|
...
Expand | ||||
---|---|---|---|---|
| ||||
The RTP 6700 controller requires a set of configuration parameters for proper operation. To configure the 6700, connect the console port of the 6700 to a terminal or a PC running a terminal emulator (such as HyperTerminal). Terminal characteristics are 9600, 8, None, 1. Switch on the power to the 6700 and enter a “3” to the first prompt after power up. The following is an example of reasonable configuration process and parameters for the RTP 6700 controller:
Enter Y to Accept Configuration, N to Modify it Y EIOBC Ethernet Address: 00-80-F9-03-04-EC After the configuration is accepted, it will be stored on the controller. Cycling the power on the card will initialize the card to use these parameters. |
Expand | ||
---|---|---|
| ||
The following is an example of a operational RTP initialization file. It describes a system with 16 Analog inputs input (1 A/D card and 2 mux cards), 4 Digital input cards (64 bits), 32 Analog output channels (8 cards),and 4 digital dgital output cards (64 bits) in two (2) RTP chassises. The RTP 6700 is set up for IP address 10.0.10.11
|
...
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The core of the driver is provided as a C++ class which implements the initialization and communications functions. A sample process is provided which calls the appropriate class members. The IP address, configuration, and data areas to be read and written are passed as calling parameters to the class functions. The following is a list of the provided driver files. After review of the example driver, the user is required to modify the files as indicated:
|
GELPC Class Descriptions
Expand | ||
---|---|---|
The following public member functions are provided as part of the tpriGePlc class:
long cTimeOut, long sTimeOut, long rTimeOut); where: char *piffile = initialization file name (currently not supported) = NULL char *tplcIpAddr = IP address of the PLC in xxx.xxx.xxx.xxx format unsigned short tPortNo = port (service) number of the TCP support in the GE PLC. This value is normally fised at 18245 by GE. long cTimeOut = Connection timeout value in milliseconds long sTimeOut = Send message timeout value in milliseconds long rTimeOut = receive message timeout value in milliseconds This function stores parameter values for use by the member functions of the class
where char *seg = segment (plc memory area) type “R” = register variable "L" = Local Data Table (%L) "P" = Program Data Table (%P) "R" = Register Table (%R) "AI" = Analog Input Table (%AI) "AQ" = Analog Output Table (%AQ) "I" = Discrete Input Table, byte mode (%I) "Q" = Discrete Output Table, byte mode (%Q) "T" = Discrete Temporary Table, byte mode (%T) "M" = Discrete Internal Table, byte mode (%M) "SA" = Discrete System A Table, byte mode (%SA) "SB" = Discrete System B Table, byte mode (%SB) "SC" = Discrete System C Table, byte mode (%SC) "S" = Discrete System D Table, byte mode (%S) "G" = Genius Global Data Table, byte mode (%G) "GA" = Genius Global Data Table, byte mode (%GA) int ref = 1st variable within segment to transfer (beginning of table = 1) int size = size of transfer in number of words, bytes or bits (see bmode) int bmode = units size; 0 = words or bytes, 1 = bits unsigned char *buffer = pointer to application program data buffer This function writes an application buffer to the PLC
where char *seg = segment (plc memory area) type See definitions in the Write function int ref = 1st variable within segment to transfer (beginning of table = 1) int size = size of transfer in native units (words, bytes or bits) see bmode int bmode = transfer unit size; 0 = words or bytes, 1 = bits unsigned char *buffer = pointer to application program data buffer This function reads an application buffer from the PLC
Return an integer equal to the last SRTP (GE PLC protocol) error code
Return an integer that indicates whether the application has an open connection with the GE PLC |
...
Expand | ||
---|---|---|
| ||
Code Block | | |
|
Lantronix Terminal Server Driver - tpriRdcLts
Expand | ||
---|---|---|
| ||
The I/O driver library includes the tpriRdcLts class for communications through a Lantronix terminal server to a remote device. This class provides functions to open a connection to a specified port on the desired terminal server, to read and write data to and from the device attached to the terminal server, and to close the connection when finished. Blocking and non-blocking modes are both supported individually for connections and reads. The library is composed of several static class functions that can be explicitly called without having to manage the underlying class itself. |
Expand | ||
---|---|---|
| ||
|
Expand | |||||
---|---|---|---|---|---|
| |||||
Following is an example class definition and source code for a Lantronix driver using the static function calls above to loop a message through a port on a terminal server back into itself. It requires that a loopback cable be plugged into the specified port on the Lantronix terminal server.
|
Lantronix Cobox Terminal Server Driver - tpriRdcCbx
Expand | ||
---|---|---|
| ||
The I/O driver library includes the tpriRdcCbx class for communications through a Lantronix CoBox terminal server to a remote device. This class provides functions to open a connection to a specified port on the desired CoBox terminal server, to read and write data to and from the device attached to the terminal server, and to close the connection when finished. Blocking and non-blocking modes are both supported individually for connections and reads. The library is composed of several static class functions that can be explicitly called without having to manage the underlying class itself. |
Expand | ||
---|---|---|
| ||
|
Generalized Remote Device Connection Driver
Expand | ||
---|---|---|
| ||
In addition to the static library functions described above, the tpriRdc-derived classes can be used to as a framework to manage all of the low-level I/O, timing, and error recovery associated with a connection to a remote device. In effect, the tpriRdc classes act as a fully customizable state machine to communicate with a remote device through a variety of interfaces without having to worry about the specifics of the intermediate hardware or basic communications protocols. Currently, the following interfaces are supported:
|
Expand |
---|
The interface-specific tpriRdc classes are:
The custom device driver should be derived from one of these classes in order to build upon and use the functionality encapsulated within these classes. |
Expand | ||
---|---|---|
| ||
Following is flow path for the state machine: switch (current state) case UNINIT
case IDLE
case CONNECT
case WAITMSG
case BUILDMSG
case XMITMSG
case WAITRSP
case PROCRSP
The state machine for the remote device connection can be executed by calling the following function defined in the tpriRdc base class: int tpriRdc:: stateDrv(int oneshot = 0) Close a connection associated with a device handle. Inputs: int oneshot If non-zero, the state machine will execute only once and return. If zero, the state machine will repeatedly execute until the current state does not change from pass to pass. Return value: Zero if no error and state machine can be called again to continue processing or non-zero if an error has occurred or the state machine has finished. The state machine for the remote device connection can be executed by calling the following function defined in the tpriRdc base class: |
Expand | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
The following variables are internal data members of the tpriRdc class and the custom driver class should set their values as desired:
The following variables are internal data members of the tpriRdcTcp class the custom driver class should set their values as desired:
The following variables are internal data members of the tpriRdc class that the custom device class will require for normal processing:
|
Expand | ||
---|---|---|
| ||
The custom device driver class then overrides a set of virtual functions that will be called by the base classes at the appropriate times. These virtual functions are:
|
Expand | ||
---|---|---|
| ||
The following functions are internal data methods of the tpriRdc class for use within the custom user driver:
Resize of the internal receive buffer. Any data existing in the existing buffer will be transferred to the new buffer provided that it does not exceed the new size. The default size of the receive buffer is 1024 bytes.
Resize of the internal transmit buffer. Any data existing in the existing buffer will be transferred to the new buffer provided that it does not exceed the new size. The default size of the transmit buffer is 1024 bytes.
Pops the first nRsp bytes from the receive buffer rxBuf[], dynamically allocates the response buffer *rspBuf, and stores the response there for later processing. This function should be called from within the testRsp() virtual function once a full response starting at the beginning of the rxBuf buffer has been detected. Each call to ripRsp(..) destroys the response buffer created by the previous call and shifts the receive buffer so that the remaining data is stored at the beginning of the buffer.
Pops the first nRsp bytes from the receive buffer rxBuf[] and throws them away. The receive buffer is then shifted so that the remaining data is stored at the beginning of the buffer. This function should be called from within the testRsp() virtual function to throw away bytes at the beginning of the receive buffer that are not part of a valid response.
|
Expand | ||
---|---|---|
| ||
The Tsentry source distribution area contains an example class definition and source code for a tpriRdc-derived class used to loop a message through a port on a Lantronix multi-port terminal server back into itself. It requires that a loopback cable be plugged into the specified port on the Lantronix terminal server. |
Allen Bradley Control Logix PLC Driver
Expand | ||
---|---|---|
| ||
This driver:
Capable of running 500ms Input and Output scan rep rates, depending on data buffer size. |
Expand | ||
---|---|---|
| ||
The Allen Bradley PLC must be set up with the proper IP address. This configuration is completed with the A-B software. The IP must be chosen such that it lies within the subnet selected for the specific Ethernet controller used for communications. If the Ethernet controller is one that is controlled by the Windows 2000 system, the subnet is specified in the network setup utility of the control panel. If the Ethernet controller is one that is controlled by the RTX Real-Time TCP/IP controller, the IP address is specified in the file d:\LocNtRt\sys\pif\RtxTcp.ini. |
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The core of the driver is provided as a C++ class that implements the initialization and communications functions. A sample process is provided which calls the appropriate class members. The IP address, configuration information, and data areas to be read and written are passed as calling parameters to the class functions. The following is a list of the provided driver files. After review of the example driver, the user is required to modify the files as indicated:
|
Expand | ||
---|---|---|
| ||
The Tsentry CLeip class encapsulates the functionality required to communicate with the Allen Bradley 5500 and 5555 PLCs over a TCP/IP network. The following public member functions are provided as part of the tpriCLeip class:
where: int TraceLevel = debug trace level for class operations default value = 30 valid values range between 0 and 100, inclusive lower values produce less debug information higher values produce more debug information debug information written using LogMsg function This function stores a new value for the TraceLevel parameter
where: int port = Ethernet Port number Default value = 1 This function stores a new value for the Ethernet Port parameter. This communications parameter defines the port number for the Ethernet controller in the PLC chassis
where: int slot = Control Logix process slot number Default value = 0 This function stores a new value for the Ethernet Port parameter. This communications parameter defines the slot in which the Control Logix processor resides.
unsigned char timeoutticks, unsigned char timeoutmultiplier, unsigned long otrpi, unsigned long torpi ); where: int sTimeOut = TCP Send message timeout value in milliseconds Default value = 2000 int rTimeOut = TCP Receive message timeout value in milliseconds Default value = 2000 unsigned char ticktime = (optional) Protocol Tick time (see below) Default value = 10 unsigned char timeoutticks = (optional) TickTimes multiplier (see below) Default value = 14 Minimum value = 1 Maximum value = 255 unsigned char timeoutmultiplier = (optional) Inactivity timeout (see below) Default value = 1 Minimum value = 1 Maximum value = 255 unsigned long otrpi = (optional) Originator->Term Reqested packet interval (u-sec) Default value = 2064960 unsigned long torpi = (optional) Terminator->Orig Reqested packet interval (u-sec) Default value = 2064960
This function stores timeout parameter values for use by the member functions of the class. The values sTimeOut and rTimeOut are used to determine the maximum time that will elapse for a single user level call (read or write, respectively) to transfer data to or from the PLC. If this timeout is exceeded, the I/O request will return to the caller indicating a timeout has occurred. The remaining values are used to define the PLC’s connection session timeout information. The values ticktime and timeoutticks are used to calculate the maximum time allowed for a connection request to be serviced by the PLC. If the PLC cannot establish a connection session within this amount of time, the Connect method will return to the caller an error indicating that a timeout has occurred. This timeout value is calculated by the following formula: Connection_Timeout (ms) = 2^(ticktime) * timeoutticks
The values timeoutmultiplier otrpi (which stands for Originator->Terminator Requested Packet Interval) and torpi (Terminator->Originator Requested Packet Interval) determine the inactivity timeout of the PLC session. If this timeout is exceeded BETWEEN calls to the driver (more precisely, between protocol messages sent between the control system and the PLC), the PLC connection session will time out, and the connections to the PLC must be rebuilt. Subsequent user calls to the driver to transfer data between the control system and the PLC will find the connection destroyed and will return an error. This timeout value is calculated by the following formula:
where: unsigned int connid = Logical Connection ID Default value = 0x0b000100 This function stores a new value for the Logical Connection ID parameter
where: unsigned short connsn = Logical Connection Serial Number
This function stores a new value for the Logical Connection Serial Number
where: unsigned short vendorid = Originator (local system) vendor ID default value = 1 unsigned int sn = Originator Sequence Number default value = 0xBC1C0042 This function stores new values for the Originator (local system) information
where: char *hostname = host name, or IP addresses expressed as a character string short int port = TCP/IP port number name, or
This function establishes a connection between the computer system and the Allen-Bradley Control Logix PLC. Note that if a connection has already been established with a given connection serial number, no other connection may be made to that PLC with the same connection serial number until that connection is either gracefully disconnected or has timed out due to inactivity.
This function breaks a connection between the computer system and the Allen-Bradley Control Logix PLC
int dataType, void *buf); where: int adrType = address type void *FileName = file name within PLC from which to read data int offset = offset (in data variables) from which to start data read int noElements = number of data elements to read int dataType = type of data to be read void *buf = address of user supplied data buffer This function reads a single data block from the PLC and stores the results in a user defined buffer. Offsets may work in one of two ways. If the PLC contains a variable array called by a file name of “PLCVars”, function calls to retrieve data starting at the 61st element of this array could contain 2nd and 3rd arguments of: “PLCVars”, 60 or, “PLCVars[60]”, 0 Legal values for the dataType argument are: CL_SINT – 1-byte integers CL_INT – 2-byte integers CL_DINT – 4-byte integers CL_REAL – IEEE 4-byte floating point numbers
int dataType, void *buf); where: int adrType = address type void *FileName = file name within PLC to write user data int offset = offset (in data variables) from which to start data write int noElements = number of data elements to write int dataType = type of data to be written void *buf = address of user supplied data buffer containing write data This function writes a single data block to the PLC from the user defined buffer. Offsets may work in one of two ways. If the PLC contains a variable array called by a file name of “PLCVars”, function calls to write data starting at the 61st element of this array could contain 2nd and 3rd arguments of: “PLCVars”, 60 or, “PLCVars[60]”, 0 Legal values for the dataType argument are: CL_SINT – 1-byte integers CL_INT – 2-byte integers CL_DINT – 4-byte integers CL_REAL – IEEE 4-byte floating point numbers
where: void *FileName = file name within PLC from which to read data int offset = offset (in data variables) from which to start data read int noElements = number of data elements to read int *dataType = pointer to an integer variable where the type of the data read shall be returned void *buf = address of user supplied data buffer This function reads a single data block from the PLC and stores the results in a user defined buffer. Legal values returned in the dataType variable are: CL_SINT – 1-byte integers CL_INT – 2-byte integers CL_DINT – 4-byte integers CL_REAL – IEEE 4-byte floating point numbers
where: void *FileName = file name within PLC to write user data int offset = offset (in data variables) from which to start data write int noElements = number of data elements to write int dataType = type of data to be written void *buf = address of user supplied data buffer containing write data This function writes a single data block to the PLC from the user defined buffer. Legal values for the dataType argument are: CL_SINT – 1-byte integers CL_INT – 2-byte integers CL_DINT – 4-byte integers CL_REAL – IEEE 4-byte floating point numbers |
Expand | ||
---|---|---|
| ||
Some comments on the driver program are below: This test program, on each expiration of the process timer, writes a single block of data to the PLC and then reads a single block of data. This sequence, the number of reads and writes, their addresses, and the sizes of the blocks can be modified to fit the requirements of the application. PlcUsr and the ‘datagram’ structures they reference should be modified as required to reference appropriate variables in application variables for transfer between the PLC and the control system. A sample driver is provided in the examples subdirectories of the standard Tsentry distribution |
Modicon PLC Driver
Expand | ||
---|---|---|
| ||
This driver:
Capable of running 500ms Input and Output scan rep rates, depending on data buffer size. |
Expand | ||
---|---|---|
| ||
The Modicon PLC must be set up with the proper IP address. This configuration is completed with the Schneider Automation software. The IP must be chosen such that it lies within the subnet selected for the specific Ethernet controller used for communications. If the Ethernet controller is one that is controlled by the Windows 2000 system, the subnet is specified in the network setup utility of the control panel. If the Ethernet controller is one that is controlled by the RTX Real-Time TCP/IP controller, the IP address is specified in the file d:\LocNtRt\sys\pif\RtxTcp.ini. Enough memory must be installed in the PLC to support the data buffer size that will be requested by the software reads and writes. |
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The core of the driver is provided as a C++ class that implements the initialization and communications functions. A sample process is provided which calls the appropriate class members. The IP address, configuration information, and data areas to be read and written are passed as calling parameters to the class functions. The following is a list of the provided driver files. After review of the example driver, the user is required to modify the files as indicated:
|
TpriModPlc Class Descriptions
Expand | ||
---|---|---|
| ||
The Tsentry tpriModPlc class encapsulates the functionality required to communicate with the Modicon Quantum PLCs over a TCP/IP network. |
Expand | ||
---|---|---|
| ||
The following public member functions are provided as part of the tpriModPlc class:
Allocate a new tpriModPlc object
Destroy the tpriModPlc class object.
where: int TraceLevel = debug trace level for class operations default value = 30 valid values range between 0 and 100, inclusive lower values produce less debug information higher values produce more debug information debug information written using LogMsg function This function stores a new value for the TraceLevel parameter
unsigned char timeoutticks, unsigned char timeoutmultiplier, unsigned long otrpi, unsigned long torpi ); where: int sTimeOut = Send message timeout value in milliseconds Default value = 2000 int rTimeOut = receive message timeout value in milliseconds Default value = 2000 This function stores timeout parameter values for use by the member functions of the class
where: unsigned short vendorid = Destination ID default value = 1 This function stores new values for the Destination ID
where: int noBytes = the maximum number of data bytes that will be placed in a single PDU default value = 125 a PDU is a protocol Data Unit and is equivalent to a single Ethernet frame valid values range between 2 and 125, inclusive lower values may produce more frames to transfer the same user data higher values may produce fewer frames to transfer the same user data This function sets a new value for the maximum number of user data bytes to be included in a single Ethernet frame (PDU) that is transmitted to the PLC. A value too low will increase the number of Ethernet frames that will be required to send a given number of user data bytes and reduce throughput. A number too high will not be understood or acknowledged by the PLC.
where: char *hostname = host name, or IP addresses expressed as a character string short int port = TCP/IP port number This function establishes a connection between the computer system and the Modicon PLC
This function breaks a connection between the computer system and the Modicon PLC
where: int offset = PLC memory offset in 16 bit words from which to read data int noElements = number of 16 bit integer data elements to read void *buf = address of user supplied data buffer This function reads a single data block of 16 bit integers values from the PLC user register memory starting at ‘offset’ words from 40000 and stores the results in a user defined buffer
where: int offset = PLC memory offset in 16 bit words from which to write data int noElements = number of 16 bit integer data elements to write void *buf = address of user supplied data buffer This function writes a single block of user supplied 16 bit data words to the PLC user register memory starting at ‘offset’ words after 40000 |
Expand | ||
---|---|---|
| ||
Some comments on the driver program follow: This test program, on each expiration of the process timer, writes a single block of data to the PLC and then reads a single block of data. This sequence, the number of reads and writes, their addresses, and the sizes of the blocks can be modified to fit the requirements of the application. PlcUsr and the ‘datagram’ structures they reference should be modified as required to reference appropriate variables in application variables for transfer between the PLC and the control system. A sample driver is provided in the examples subdirectories of the standard Tsentry distribution. |
VMIC Reflective Memory Driver
Expand | ||
---|---|---|
| ||
This driver provides an interface to an internal VMIC reflective memory card. It manages both reading and writing variables to the card’s onboard memory, which the card automatically synchronizes with all other cards on the optical network. The driver supports the following:
|
Expand | ||
---|---|---|
| ||
There is no specific card configuration required for the VMIC reflective memory driver. Simply put the card into an empty full-length PCI slot, and the software driver manages the rest. |
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The VMIC driver is configured by a flat ASCII file divided into [Sections]. The following sections are required in this file: [General] This section defines general parameters for the VMIC device. The parameters are specified in the standard Key=Value pair format.
Defines the device index of the card you wish to use. By default this value is 1, and unless you have more than one VMIC card, this parameter is not needed.
Defines the card type that you wish to use. Supported values are ‘PCI-5576’ and ‘PCI-5579’ (no quotes). If this parameter is not specified, the driver will search for the first supported device that it can find.
This optional flag sets whether or not the driver will check your variable list to make sure that no two variables overlap one another in the VMIC memory buffer. For instance, two variables may mistakenly both be configured to write to the same bytes on the card. If this flag is set the driver will detect this overlap and fail to initialize. A message will be logged to the console to indicate the offending variables, and the ini file will need to be corrected before the driver will work. By default this option is enabled; set the flag to 0 to turn it off.
This optional parameter specifies an output text file to which the VMIC driver will write a complete description of all variables and their associated offsets into the VMIC reflective memory buffer. This is particularly useful when transferring entire structures and you want to know the offsets for each of the constituent variables contained in those structures. [VarDef] This section defines all variables that are to be read from or written to the reflective memory segment. Each line in this section defines a single variable in a set of whitespace-delimited fields:
Empty lines or lines beginning with the ‘#’ symbol are ignored.
The fields for each variable are:
The variable name within the TSENTRY data dictionary (identical to that used by Probe, etc.). Besides individual variables, entire arrays or structures may also be specified.
Flag specifying whether the variable is to be read from the card (R) or written to the card (W).
Offset into the VMIC onboard memory where this variable is to be read from or written to. This value can be specified in hex with the ‘0x’ prefix or in decimal. The data will be reflected in the memory of all other VMIC cards in the ring at this same offset. Note that offsets 0x00-0x3F are reserved for use by the VMIC card and cannot be used for reflected data.
Optional parameter used if the data on the card should be interpreted in a format different from that inside the PC’s internal memory. Typically this is used if the internal variable is a 4-byte integer but should be read/written as a 2-byte integer. This parameter applies only if an individual variable is specified; it will not automatically convert arrays or elements inside of structures. The following remote types are supported: VT_I1 1-byte integer (C/C++ character) VT_I2 2-byte integer (C/C++ short) VT_I4 4-byte integer (C/C++ long) VT_I8 8-byte integer (C/C++ __int64) VT_R4 1-byte integer (C/C++ float) VT_R8 1-byte integer (C/C++ double) |
Expand | ||
---|---|---|
| ||
The following public member functions are provided as part of the tpriVmic class:
|
Expand | ||
---|---|---|
| ||
A sample driver is provided in the examples subdirectories of the standard TSENTRY distribution. |