COMM-DRV/Lib Serial Communication Library (Free Version)


The FREE version of COMM-DRV/LIB is simply the best, fastest, and most comprehensive serial communication library and DLLs on the market. The serial communication libraries support Windows. It was designed by real engineers & developers for real engineers, developers, and programmers.

Our serial communication library supports XMODEM, YMODEM,  ZMODEM, & ASCII file transfer protocols. It supports modem communications and virtually all serial communication functions one would need.

Free Serial Communication Library

Check out the user/developer manual here.


COMM-DRV/Lib Serial Communication Library For Windows

COMM-DRV/Lib (Free Version)

The FREE version of COMM-DRV/LIB is simply the best, fastest, and most comprehensive serial communication library and DLLs on the market. The serial communication libraries support Windows. It was designed by real engineers & developers for real engineers, developers, and programmers.

Our serial communication library supports XMODEM, YMODEM,  ZMODEM, & ASCII file transfer protocols. It supports modem communications and virtually all serial communication functions one would need.

We know your time is valuable and have made every effort to make the product easy to use. You will be able to get started with your project immediately upon installation. We include a Visual C/C++ example projects that compile and link by just clicking on the project. Use these as your starting point and in no time you can have your app performing RS232, RS422, and/or RS485 serial communication.

Check out the user/developer manual here.


Major Features

  • Support ALL compilers and tools that can link 32 bit DLLs.
  • Support for ALL Hayes compatible modems (AT command set).
  • Supports ALL single or multiport cards that include a Windows driver.
  • Any number of ports may be active at the same time.
  • Built-in hardware and software handshaking for flow control (DTR/DSR, RTS/CTS, XON/XOFF).
  • Adjustable communication buffers of any size.
  • Only library that really allows you to combine different multiport cards in one PC.
  • Supports USB to RS232 converters and USB modems with their respective COM drivers.
  • Extensive statistics on every port(bytes lost, sent, received, errors, etc.).
  • Asynchronously call user functions on any serial communication or timed event (receive, transmit, modem, or status change interrupt event, buffer count events, specific character reception, error events, and much more).
  • Support baud rates in excess of 460K baud, with the ability to use today’s high-powered communications devices.
  • State-driven file transfer libraries allow Xmodem, Ymodem,  Zmodem, & ASCII file transfers on multiple ports at the same time.
  • Completely port re-entrant, allowing it to be time-sliced.
  • On line help.




It is not enough to have a great serial communication product. Good documentation is very important. COMM-DRV/Lib includes very easy to navigate electronic documentation. Functions are easy to find and are hyperlinked to related functions.


 For those who must have a hardcopy, we also have the manual in printed form.




  • Ample examples that illustrates COMM-DRV/Lib’s ease of use.
  • Complete online documentation.
  • ZModem, XModem, YModem, ASCII file transfer DLLs.



What The Experts Say

I just want to take a minute to thank you for the software.  I’m the one that wanted it for a senior design class at Iowa State University.  It worked great.  We gave our final presentation last Friday and the professors were impressed with our project.  As a testimonial of how easy and well your software works, I’m an Electrical Engineering student with very little C/C++ programming experience.  In fact I was in the computer science beginning level class when I began to use the software.  Once I got started I had no real issues with making things work. Again thanks for the opportunity.  Besides going to school I’m working for an equipment manufacturer that does control systems.  I’ll encourage the use of this software whenever possible.  I hope to find other uses for it in the future.

Brett Stephenson

”Serial communication is at the core of what we do, and COMM-DRV has helped us rapidly develop new applications, and easily add multiple-port features. We’ve been very impressed with the flexibility of COMM-DRV, and the technical support has been outstanding.”

Lee Perryman,Deputy Director and head of technology development, Associated Press Broadcast Services, Washington, DC

“COMM-DRV from WCSC is a source/object serial communications library for DOS and Windows that lives up to its hype… its feature set puts it right at the top… In terms of sheer versatility, COMM-DRV is nonparalleled.”

Tom Campbell, PC Techniques Review

<Click herefor what others are saying about both the quality of our products and the competence of our technical support.



Companies Using COMM-DRV/LIB

COMM-DRV/LIB is used in telecommunications, banking, scientific, data acquisition, transaction processing, several major bulletin board systems, SCADA, satellite communications, and other simple and complex applications by many companies large and small.

A few companies using COMM-DRV/LIB include Ford Motor Company, General Motors, IBM, NASA, Jet Propulsion Laboratory, Lockheed, MCI, AT&T, Rockwell, ALCOA, AMOCO, Associated Press, Chevron, Boeing Aerospace, Central Point Software, Alcatel, Cellular One, Affymetrix, Inc, Citicorp, DEC, Duns & Bradstreet, Federal Express, General Electric, Howard Johnson, Intel, L.A. Cellular, MetroMedia Paging, Massachusetts Institute of Technology(MIT), Northrop Grumman, UCLA, UCSD, MetroCellular, Dartmouth College, National Radio and Astronomy, NEC, Nissan, Federal Reserve Bank of Boston, Panasonic, RJ Reynolds, Southwestern Bell, L3 Communications, Texas Instrument, Goodyear, NOAA, Nokia, Naval Air Warfare Center, Lawrence Berkeley Laboratory, Microsoft, Seagate Technologies, and the US Postal Service.





C/C++ Examples

The following example is a complete C/C++ application that opens a port, set baud rates etc, dials a phone number, uploads a file, hangup the phone/modem, and close the port. We did not put any error checks in the example in order to focus on the application itself.
SetPortCharacteristics(PortHandle,BAUD9600,PAR_NONE,LENGTH_8,STOPBIT_1, PROT_RTSRTS);
The following example simply outputs a string.
SetPortCharacteristics(PortHandle,BAUD9600,PAR_NONE,LENGTH_8,STOPBIT_1, PROT_RTSRTS);
PutString(PortHandle,”Output String”);


COMM-DRV/LIB API(Partial List)

High Level Functions

  • BytesInReceiveBuffer() Returns the number of bytes in the receive buffer.
  • BytesInTransmitBuffer() Returns the number of bytes in the transmit buffer.
  • CdrvCheckTime() Determine if time expired form a previous call to CdrvSetTime().
  • CdrvClearAbort() Returns COMM-DRV/Lib to non-abort state.
  • CdrvDelay() Delay specified time.
  • CdrvSetTime() Sets a timer to a specified delay. Expiration is tested by CdrvCheckTime().
  • CdrvSetTimeoutFunction() Sets the address of a function that gets called when Delay() or CdrvCheckTime() is called.
  • CdrvSetTimerResolution() Sets the timer resolution used by CdrvSetTime() and Delay().
  • CloseComPort() Close the communication port.
  • DtrOff() Turns DTR off.
  • DtrOn() Turns DTR on.
  • FlushReceiveBuffer() Discards the contents of the receive buffer.
  • FlushTransmitBuffer() Discards the contents of the transmit buffer.
  • GetByte() Gets a byte from the receive buffer.
  • GetPaceTime() Get the current inter-character pace time.
  • GetPacket() Gets a packet from receive buffer.
  • GetString() Gets a carriage return, line feed, or null terminated string from receive buffer.
  • GetTimeout() Get the current timeout value.
  • IsBreak() Returns true if a break signal was detected.
  • IsCarrierDetect() Returns true if carrier detected.
  • IsCts() Returns true if CTS signal high.
  • IsDsr() Returns true if DSR signal high.
  • IsFramingError() Returns true if a framing error occurred.
  • IsInputOverrun() Returns true if the COMM-DRV receive buffer was overrun.
  • IsOverrunError() Returns true if the UART receive register was overrun.
  • IsParityError() Returns true if a parity error occurred.
  • IsPortAvailable() Determine if a particular port is in use.
  • IsReceiveBufferEmpty() Returns true if receive buffer is empty.
  • IsRing() Returns true if ring detected.
  • IsTransmitBufferEmpty() Returns true if transmit buffer is empty.
  • OpenComPort() Open standard COM ports under Windows. Physical port information etc. are not required.
  • PeekChar() Returns the next character from receive buffer non-destructively.
  • PutByte() Queues a byte for transmission.
  • PutPacket() Queues a packet for transmission.
  • PutString() Outputs a null terminated string.
  • ReceiveBufferSize() Returns the receive buffer size.
  • RtsOff() Turns RTS off.
  • RtsOn() Turns RTS on.
  • SendBreak() Sends a break signal.
  • SetBaud() Sets new baud rate.
  • SetFlowControlCharacters() Sets characters used for flow control.
  • SetFlowControlThreshold() Sets high and low receive buffer thresholds.
  • SetPaceTime() Sets the current inter-character pace time.
  • SetPortCharacteristics() Set line control parameters(baudrate, length, parity,etc.).
  • SetTimeout() Sets the current transmit/receive timeouts.
  • SpaceInReceiveBuffer() Returns space unused in receive buffer.
  • SpaceInTransmitBuffer() Returns space unused in transmit buffer.
  • TransmitBufferSize() Returns transmit buffer size.

Modem Functions

  • Dial() Dials using the modem with the Hayes command set.
  • ModemAnswerMode() Puts modem in answer mode.
  • ModemAttention() Puts modem in command state.
  • ModemConnect() Returns true if modem connection attained.
  • ModemGetCarrierSpeed() Returns carrier speed.
  • ModemGetConnectSpeed() Returns connect speed.
  • ModemHangup() Hangup modem connection.
  • ModemInit() Set modem initialization string.
  • ModemModifyString() Modify modem string.
  • ModemWaitforConnect() Effects a modem connection that is abortable.

File Transfer Functions

  • cdrvxfer_files() Transmit or receive file(s) with specified protocol to completion.
  • FileTransferDialog() Enables an automatic dialog to be displayed on some of the file transfer functions.
  • SetXferParameters() Set file transfer parameters.
  • XferFiles() Iterative simplified transfer function.

GUI Functions

  • CdrvLInitDialog() Displays dialog box for port characteristics input.
  • CdrvLInitDialog2() Displays extended dialog box for port characteristics input.



You may also like…