
Who is a candidate for COMM-DRV/NT?
COMM-DRV/NT is perfect for applications where any of the
following applies:
- Need for high speed and/or reliable serial communication on one or
more ports concurrently.
- Need for multidrop protocol support.
- Need for nine-bit protocol support.
- Support for built in serial ports on motherboard(COM1, COM2, etc.).
- Support for non-intelligent PCI & ISA multiport cards
w/16x50 UARTs.
- Need for support for the larger FIFOs of the 16650 family
of UARTs.
- Need for crisp support of hardware flow control built directly
into UART.
- Need for time stamping bytes with microsecond resolution.
- Need callbacks on events including state of modem signals,
line errors, break detection, and other events.
COMM-DRV/NT uses the Win32 standard DLL calling conventions. As such,
it may be integrated with any Windows tool, application, or language that can call
DLLs. COMM-DRV/NT may be used with Visual C/C++, Borland C/C++, Watcom C/C++,
Visual Basic, Access, Excel, Paradox, and a myriad of other tools
and applications.
COMM-DRV/NT supports the multidrop protocol
directly from within its interrupt handlers. In this mode it drops the RTS immediately after the last byte leaves the
UART. It is the fastest response currently available under
Windows NT or Windows 2000.
COMM-DRV/NT does not use any of the Windows
2000 or Windows NT serial communication services or device drivers.
It talks directly to the serial port. As
such, there is no unnecessary layering of services that are
time consuming.
COMM-DRV/NT supports the nine-bit protocol. It transmits
the first byte with the ninth bit set. It transmit all remaining bytes in the packet with the ninth bit
cleared. It can read and write bytes using the nine-bit
protocol with the standard 16x50 family of UARTs.
COMM-DRV/NT supports the time stamping of each byte that enters the UART.
It provides microsecond resolution. It buffers the time stamp
with the data.
COMM-DRV/NT was designed with interoperability in mind.
Its API is completely downwardly compatible to our was designed with
interoperability in mind. Its API is completely downwardly compatible to our COMM-DRV/VxD product.
In fact, the new DLL provided with COMM-DRV/NT will work
under Windows NT & Windows 2000 as well as under Windows 95 and Windows 98.
Under Windows 2000 or Windows NT the kernel driver shipped with COMM-DRV/NT
is installed. Under Windows 95 or Windows 98, the VxD that ships with COMM-DRV/VxD
would be installed. The software engineer/programmer need not worry about
Windows platform since the interface is abstracted by the above
mentioned DLL.
COMM-DRV/NT is extremely easy to use. The API is simple,
concise, and intuitive. Ample examples are provided. Additionally COMM-DRV/NT may be integrated with all
other WCSC communication products to increase their performance.
COMM-DRV/NT -- Application Programming Interface (API):
- WCSCVxDBreakOff --
Resets the port from the break state
- WCSCVxDBreakOn --
Puts the port in the break state
- WCSCVxDBytesInRcvBuf --
Returns number of bytes in receive buffer
- WCSCVxDBytesInXmtBuf --
Returns number of bytes in transmit buffer
- WCSCVxDCleanup --
Closes an opened port
- WCSCVxDDtrOff --
Turn DTR off
- WCSCVxDDtrOn --
Turn DTR on
- WCSCVxDFlush --
Purges communication buffers
- WCSCVxDGetMetrics --
Return port statistics on specific items
- WCSCVxDGetPacket --
Get a packet of data
- WCSCVxDGetPort --
Get port metrics
- WCSCVxDGetRegister --
Read an 8250/16450/16550 register value
- WCSCVxDInit --
Map dynamically to the VxD
- WCSCVxDInitializePort --
Open a port
- WCSCVxDIsAllDataOut --
Returns true if transmit buffer is empty as well
as the UART is empty
- WCSCVxDOpenPort --
Opens the serial port (preferred)
- WCSCVxDPutPacket --
Output a packet of data
- WCSCVxDPutRegister --
Write to an 8250/16450/16550 register
- WCSCVxDRtsOff --
Turn RTS off
- WCSCVxDRtsOn --
Turn RTS on
- WCSCVxDSetBaudDiv --
Set new baud rate divisor (for non standard baud
rates)
- WCSCVxDSetPortCharacteristics --
Set new port characteristics (baud rates etc.)
- WCSCVxDSetup --
Extended port open
- WCSCVxDSizeOfRcvBuf --
Get size of receive buffer
- WCSCVxdSizeOfXmtBuf --
Get size of transmit buffer
- WCSCVxDSpaceInRcvBuf --
Get available space in receive buffer
- WCSCVxdSpaceInXmtBuf --
Get available space in transmit buffer
- WCSCVxDViewPacket --
Non-destructively reads a packet of data
Technical
Specifications:
- Provides support for RS485/RS422 devices. It can automatically drop the RTS signal
when all data has been transmitted for optimum control of the RS485
buses or other devices requiring said protocol
- Provides built in support for the nine bit protocol. With one call the first byte is sent
with 9 bits while the others are transmitted normally
- Supports any number of serial ports active concurrently with receive and transmit buffers
of any size
- Supports baud rates in excess of 400K
- Provides automatic hardware flow control(RTS/CTS, DTR/DSR), as well as software flow
control(XON/XOFF)
- Provides seamless integration with COMM-DRV/Lib
- Supports the built in PC COM ports and ALL non-intelligent multiport cards based on the
8250, 16450, 16550, 16650, 16750, 16850 family of UARTs
- Peek ahead virtually any number of bytes
- Interrupts, buffering, and flow control handled in 32 bit
mode of the CPU in Ring 0
- Autodetects 16550 and uses it in high speed mode
- Allows sharing IRQs on supporting hardware
- Ability to provide time stamps on all input data
- Ability to save line status and modem status information
with each byte that is buffered
New Features:
- Three new API functions were added as follows:
- WCSCVxDWaitForEvent() will put a Windows NT or Windows 2000 thread to sleep until the requested event
occur.
- WCSCVxDCallbackOnEvent() will callback a user defined
function whenever the requested event occurs.
- WCSCVxDDeleteEvent() will delete an outstanding event.
- Events supported are as follows:
- Modem Interrupt
- Line Status Interrupt
- Receive Interrupt
- Transmit Interrupt
- Receive specific byte Interrupt
- Clear To Send ON Interrupt
- Clear To Send OFF Interrupt
- Data Set Ready ON Interrupt
- Data Set Ready OFF Interrupt
- Ring Indicator ON Interrupt
- Ring Indicator OFF Interrupt
- Break Detected Interrupt