Com0com Serial Port Emulators

Posted on by  admin


Comprehensive list of free as well as open source PC or Intel/AMD x86 virtual machines and emulators. The Null-modem emulator (com0com) is a kernel-mode virtual serial port driver for Windows. Freeware virtual com port driver and Rs232/Rs485/Rs422 serial ports null-modem cable emulator. Com0com - serial port emulator - windows driver manual installation guide zip com0com - serial port emulator - windows driver driver-category list Its necessary to be aware that out-of-date drivers effect not just the devices they are accountable for, but in addition additional devices plus the functioning of your networks or os.

COM ports have been introduced a long time ago and have been an integral part of computers. These days however they become almost obsolete as more and more machines use USB ports or no ports at all. This doesn't eliminate the need for serial connections though, especially if we are talking about industrial equipment, lab devices, etc. Developers creating software to work with industrial devices need to test and debug applications before releasing them. That's where virtual serial port emulation comes into spotlight. If you are looking for a software to create a virtual COM port on Windows 10 or a virtual COM port on Windows 7 read about the virtual serial port emulator software that we consider to be the top solutions currently offered:

Contents

  1. VSPD by Eltima Software

1. Virtual Serial Port Driver developed by Eltima Software allows users to create virtual serial ports that can be connected in pairs via virtual null modem (com0com) cable. Applications communicating with created virtual ports treat those ports the same way they would communicate with real ports. This software solution works on 32- and 64-bit Windows OS and supports operating systems up to the latest Windows 10. Virtual Serial Port Driver is officially signed by Microsoft.


The advantages of Virtual Serial Port by Eltima:

  • Using Virtual Serial Port Driver, you can create as many pairs of virtual COM ports as you want. The pairs are linked by a virtual null modem cable. A nice feature of the software is the ability to delete all of your created pairs with a single click.

  • When creating virtual serial ports with this application you have the ability to name them in any way that you like. You can even use the same names as the system’s physical COM interfaces. A simple search in Device Manager’s “Ports” group will display all of your virtual ports.

  • The virtual serial port emulator enables the virtual COM ports to be re-created when your system is restarted Your configured virtual serial ports are re-established before user login. You can also delete a virtual pair or modify their settings without closing the ports down.

  • All standard hardware signal lines are supported by Virtual Serial Port Driver. This include DTR/DSR/CTS/RTS/DCD/RI, etc. as well as software flow control (Xon/Xoff).

  • Virtual Serial Port Driver also can serve as a null modem emulator. Multiple null modem schemes are available with the tool, and they can be saved as templates for later use. The application lets you emulate a virtual serial line connection and its break.

  • With Dynamic Link Library supplied with VSPD (an OEM License) you can control virtual serial ports directly from your own app. Emulating the ports also gives you an advantage of a faster serial communication, than with a real null-modem cable, solely depending on your processor speed (average is about 5.5 Mbytes/sec)

  • You will not be surprised by any warning messages when performing serial port emulation on Windows 10, Windows Server 16, Windows XP or other Windows variations. This is due to the fact that the drivers are digitally signed by Microsoft and have all passed the Microsoft Windows Hardware Quality Labs (WHQL) tests.

  • Virtual Serial Port Driver is pretty flexible letting you create ports for the current user session only; allowing RDP users to create port with the same name (e.g. COM1) in each user session; letting you delete ports even if they were opened by other apps.

  • VSPD is hyper-threading and VMware friendly.


  • Splitting and Joining Serial Ports - VSPD PRO enables you to split a physical serial port into multiple virtual copies that fully emulate the original interface. This allows you to share a single physical COM port and its attached devices with several applications simultaneously. You can also combine the transmissions from several physical serial ports into a single virtual port allowing the redirection of data from multiple devices to a single application.
  • Creating Serial Port Bundles By creating bundles of physical and virtual serial ports, serial communication between an unlimited number of COM interfaces is made possible
  • Automatic Port Switching - Combine several physical ports into one virtual interface and create a software switcher to offer your application an open serial port on demand.
  • Merging COM Ports - Using this feature of Virtual COM Port Driver PRO you can enable communication between multiple devices and applications simultaneously.

In case you are willing to split a real or virtual COM port data between several applications, check out our tutorial about serial port sharing with VSPD PRO version.

2. Null-modem emulator (com0com) is an open source kernel-mode virtual serial port emulator for Windows, distributed under GPL license. One can create an unlimited number of virtual serial port pairs and connect one serial application to another with any created pair. This app can provide serial interface for device emulators and serial port redirectors.

See comparison chart of Virtual Serial Port Driver and Null-Modem Emulator

3. Free Virtual Serial Ports by HDD Software is a Windows user-mode software that offers creation of virtual COM ports and emulation of physical serial ports. This app operates in user-mode exclusively and acts as a hardware COM port with full functionality, baud-rate emulation, configuration of data bits, parity, stop bits, XON/XOFF flow control, etc.

This serial port emulation software works on Windows desktop and server versions up to Windows 8/8.1 32- and 64-bit.

4. Virtual Serial Ports Emulator developed by Eterlogic is the next VSPE solution on our list. It is developed for software developers to create/debug/test applications that use serial ports. Virtualization of ports offers great possibilities: same device can be opened by different apps, physical serial port data can be shared among several applications, a serial port can be shared to local network (via TCP), one can create virtual serial port pairs, etc. This program supports Windows 2000, XP, Vista (32/64), Windows 7. Licenses for 32-bit platforms are offered for free, while 64-bit solution is paid.

5. Virtual Serial Port Kit is developed by FabulaTech and offers virtual serial ports creation with the possibility to connect them via virtual null-modem cables. All information written to one virtual port is immediately available on the other one of the pair. Virtual serial ports function the exact same way as hardware serial ports. This app also runs as system service meaning all virtual ports are available prior to user logon.

Prices and more details are available on developers' websites. Some solutions are free, but will require you to expose your source code when developing an app with them, also not offering support for the latest Windows OS. Some solutions require a payment but in return you receive an up-to-date software with regular updates and dedicated support service. Hopefully this brief overview will help you get the best virtual COM port solution for your project.

COM Port Data Emulator


This software tool allows the user to emulate the data stream generated by a serial interface or device. You can use the application to create data packets and send them to network-connected serial ports. The data packets can be randomly generated or read from a file to enable complete control of their contents.

The program offers flexible configuration options and can serve as a server or client on a TCP/IP network. Full duplex mode and flow control are supported on COM and RS232 ports. Log files of sent data can be saved for future analysis and data is visually displayed as it is sent and received. Developers and network professionals can benefit from the features of this serial communication application.

Ps/2 Port

Virtual Serial Port Driver

Requires: Available on Windows , 5.5MB size
Version 9.0.575 (23rd May, 2019) Release notes
Category: CommunicationApplication
Please enable JavaScript to view the comments powered by Disqus.comments powered by Disqus
Permalink

Join GitHub today

GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.

Sign upWindows serial port emulator
Find file Copy path
Cannot retrieve contributors at this time
Null-modem emulator (com0com)
INTRODUCTION
The Null-modem emulator is an open source kernel-mode virtual serial
port driver for Windows, available freely under GPL license.
You can create an unlimited number of virtual COM port
pairs and use any pair to connect one application to another.
Each COM port pair provides two COM ports with default names starting
at CNCA0 and CNCB0. The output to one port is the input from other
port and vice versa.
Usually one port of the pair is used by Windows application that
requires a COM port to communicate with a device and other port is
used by device emulation program.
For example, to send/receive faxes over IP you can connect Windows Fax
application to CNCA0 port and t38modem (http://t38modem.sourceforge.net/)
to CNCB0 port. In this case the t38modem is a fax modem emulation program.
In conjunction with the hub4com the com0com allows you to
- handle data and signals from a single real serial device by a number of
different applications. For example, several applications can share data
from one GPS device;
- use real serial ports of remote computer like if they exist on the local
computer (supports RFC 2217).
The homepage for com0com project is http://com0com.sourceforge.net/.
INSTALLING
NOTE (x64-based Windows Vista/Windows Server 2008/Windows 7/8):
The com0com.sys is a test-signed kernel-mode driver that will not load by
default. To enable test signing, enter command:
bcdedit.exe -set TESTSIGNING ON
and reboot the computer.
NOTE:
Enabling test signing will impair computer security.
Simply run the installer (setup.exe). An installation wizard will guide
you through the required steps.
If the Found New Hardware Wizard will pop up then
- select 'No, not this time' and click Next;
- select 'Install the software automatically (Recommended)' and click Next.
The one COM port pair with names CNCA0 and CNCB0 will be available on your
system after the installation.
You can add more pairs with the Setup Command Prompt:
1. Launch the Setup Command Prompt shortcut.
2. Enter the install command, for example:
command> install - -
The system will create 3 new virtual devices. One of the devices has
name 'com0com - bus for serial port pair emulator' and other two of
them have name 'com0com - serial port emulator' and located on CNCAn
and CNCBn ports.
To get more info enter the help command, for example:
command> help
Alternatively to setup ports you can invoke GUI-based setup utility by
launching Setup shortcut (Microsoft .NET Framework 2.0 is required).
TESTING
1. Start the HyperTerminal on CNCA0 port.
2. Start the HyperTerminal on CNCB0 port.
3. The output to CNCA0 port should be the input from CNCB0 port and
vice versa.
UNINSTALLING
Simply launch the com0com's Uninstall shortcut in the Start Menu or remove
the 'Null-modem emulator (com0com)' entry from the 'Add/Remove Programs'
section in the Control Panel. An uninstallation wizard will guide
you through the required steps.
HINT: To uninstall the old version of com0com (distributed w/o installer)
install the new one and then uninstall it.
FAQs & HOWTOs
Q. Is it possible to run com0com on Windows 9x platform?
A. No, it is not possible. You need Windows 2000 platform or newer.
Q. Is it possible to install or uninstall com0com silently (with no user
intervention and no user interface)?
A. Yes, it's possible with /S option, for example:
setup.exe /S
'%ProgramFiles%com0comuninstall.exe' /S
You can specify the installation directory with /D option, for example:
setup.exe /S /D=C:Program Filescom0com
NOTE: Silent installation of com0com will not install any port pairs by
default {it can be overriden by setting CNC_INSTALL_CNCA0_CNCB0_PORTS
and/or CNC_INSTALL_COMX_COMX_PORTS environment variables).
Q. What are the other setup.exe command line options?
A. The command line options of setup.exe and uninstall.exe listed in
NSIS Users Manual, section 3.2 Installer Usage:
http://nsis.sourceforge.net/Docs/Chapter3.html#3.2
Additionally the following environment variables can be used.
To change behaviour of setup.exe:
CNC_INSTALL_START_MENU_SHORTCUTS={YES NO} - select/unselect 'Start Menu Shortcuts'
CNC_INSTALL_CNCA0_CNCB0_PORTS={YES NO} - select/unselect 'CNCA0 <-> CNCB0'
CNC_INSTALL_COMX_COMX_PORTS={YES NO} - select/unselect 'COM# <-> COM#'
CNC_INSTALL_SKIP_SETUP_PREINSTALL={YES NO} - skip preinstalling/updating driver
To change behaviour of uninstall.exe:
CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={YES NO} - skip uninstalling devices and driver
Q. Is it possible to change the names CNCA0 and CNCB0 to COM8 and COM9?
A. Yes, it's possible. To change the names:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change commands, for example:
command> change CNCA0 PortName=COM8
command> change CNCB0 PortName=COM9
Alternatively you can set names to 'COM#', for example:
command> change CNCA0 PortName=COM#
command> change CNCB0 PortName=COM#
If parameter 'PortName=COM#' is used then the Ports class installer will be
invoked to set the real port name. The Ports class installer selects the COM
port number and sets the real port name to COM<n>, where <n> is the selected
port number. After installing the Ports class port you can use the list
command to get the real port name and the parameter RealPortName=COM<n> to
change the real port name, for example:
command> list
CNCA0 PortName=COM#,RealPortName=COM3
CNCB0 PortName=COM#,RealPortName=COM4
command> change CNCA0 RealPortName=COM8
command> change CNCB0 RealPortName=COM9
command> list
CNCA0 PortName=COM#,RealPortName=COM8
CNCB0 PortName=COM#,RealPortName=COM9
Q. The baud rate setting does not seem to make a difference: data is always
transferred at the same speed. How to enable the baud rate emulation?
A. To enable baud rate emulation for transferring data from CNCA0 to CNCB0:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change command, for example:
command> change CNCA0 EmuBR=yes
Q. The HyperTerminal test succeeds, but I get a failure when trying to open the
port with CreateFile('CNCA0', ...). GetLastError() returns ERROR_FILE_NOT_FOUND.
A. You must prefix the port name with the special characters '.'. Try to open
the port with CreateFile('.CNCA0', ...).
Q. My application hangs during its startup when it sends anything to one paired
COM port. The only way to unhang it is to start HyperTerminal, which is connected
to the other paired COM port. I didn't have this problem with physical serial
ports.
A. Your application can hang because receive buffer overrun is disabled by
default. You can fix the problem by enabling receive buffer overrun for the
receiving port. Also, to prevent some flow control issues you need to enable
baud rate emulation for the sending port. So, if your application use port CNCA0
and other paired port is CNCB0, then:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change commands, for example:
command> change CNCB0 EmuOverrun=yes
command> change CNCA0 EmuBR=yes
Q. When the corresponding port of a pair is not open, some characters will remain
in the ouput buffer of the sending port and be output upon the next connection.
Any clue on a possible workaround?
A. It's a correct behavior if receive buffer overrun is disabled (by default). If
you need behavior where those characters should be lost (like real null modem do)
then enable receive buffer overrun for the receiving port. Also, to prevent some
flow control issues enable baud rate emulation for the sending port. So, if
sending port is CNCA0 and receiving port is CNCB0, then:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change commands, for example:
command> change CNCB0 EmuOverrun=yes
command> change CNCA0 EmuBR=yes
Q. I have to write an application connected to one side of the com0com port pair,
and I don't want users to 'see' all the virtual ports created by com0com, but
only the really available ones.
A. if your application use port CNCB0 and other (used by users) paired port is CNCA0,
then CNCB0 can be 'hidden' and CNCA0 can be 'shown' on opening CNCB0 by your
application. To enable it:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change commands:
command> change CNCB0 ExclusiveMode=yes
command> change CNCA0 PlugInMode=yes
Q. When I add a port pair, why does Windows XP always pops up a Found New Hardware
Wizard? The drivers are already there and it can install them silently in the
background and report when the device is ready.
A. It's because there is not signed com0com.cat catalog file. It can be created on
your test computer by this way:
1. Create a catalog file, for example:
cd 'C:Program Filescom0com'
inf2cat /driver:. /os:XP_X86
2. Create a test certificate, for example:
makecert -r -n 'CN=com0com (test)' -sv com0com.pvk com0com.cer
pvk2pfx -pvk com0com.pvk -spc com0com.cer -pfx com0com.pfx
3. Sign the catalog file by test certificate, for example:
signtool sign /v /f com0com.pfx com0com.cat
4. Install a test certificate to the Trusted Root Certification Authorities
certificate store and the Trusted Publishers certificate store, for example:
certmgr -add com0com.cer -s -r localMachine root
certmgr -add com0com.cer -s -r localMachine trustedpublisher
The inf2cat, makecert, pvk2pfx, signtool and certmgr tools are included in the
Windows Driver Kit (WDK).
Alternatively you can cancel Found New Hardware Wizard and install driver by
update command, for example:
setupc install - -
setupc update
Additionally you can temporary suppress Plug and Play-related UI messages, for
example:
reg add HKLMSoftwarePoliciesMicrosoftWindowsDeviceInstallSettings /v SuppressNewHWUI /t REG_DWORD /d 1 /f
setupc install - -
setupc update
reg add HKLMSoftwarePoliciesMicrosoftWindowsDeviceInstallSettings /v SuppressNewHWUI /t REG_DWORD /d 0 /f
See http://support.microsoft.com/kb/938596 for more info.
Q. How to monitor and get the paired port settings (baud rate, byte size, parity
and stop bits)?
A. It can be done with extended IOCTL_SERIAL_LSRMST_INSERT. See example in
http://com0com.sourceforge.net/examples/LSRMST_INSERT/tstser.cpp
Q. To transfer state to CTS and DSR they wired to RTS and DTR. How to transfer
state to DCD and RING?
A. The OUT1 can be wired to DCD and OUT2 to RING. Use extended
IOCTL_SERIAL_SET_MODEM_CONTROL and IOCTL_SERIAL_GET_MODEM_CONTROL to change
state of OUT1 and OUT2. See example in
http://com0com.sourceforge.net/examples/MODEM_CONTROL/tstser.cpp
Q. What version am I running?
A. In the device manager, the driver properties page shows the version and date
of the INF files, while the driver details page shows a version of
com0com.sys file. The version of com0com.sys file is the version that you
are running.
Q. I'm able to use some application to talk to some hardware using com2tcp when
both the com2tcp 'server' and 'client' are running on the same computer.
When I try to move the client to a remote computer the application gives me
a timeout message and has no settings to increase the timeout. How to fix
the problem?
A. Try to ajust AddRTTO and AddRITO params for application's COM port:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change command, for example:
command> change CNCA0 AddRTTO=100,AddRITO=100
Q. I would like to be able to add, remove and rename virtual comm ports from my
own custom application. Is there an API that I can use or some command line
utility that will do the job?
A. The setupc.exe is a command line utility that will do the job. To get more
info enter:
setupc help
BTW: The setupg.exe is a GUI wrapper for setupc.exe.
Q. I need to use com0com ports with an application that doesn't recognize
com0com ports as 'real' com ports. It does not see a com0com port even
though I have changed it's name to COMx. Is there a com0com settings that
will make the port appear to be a 'real' com port?
A. Yes, it is. You should put the port to the Ports class, for example:
1. Launch the Setup Command Prompt shortcut.
2. Install the pair of ports, were one of them has name COM#, for example:
command> install PortName=COM# -
Q. I have to somehow add a 'fake' PNP device in device manager and have it
connected under COM3. I use PNPComSimulator (http://www.bds.dogma.net/pnp_part2.htm),
which can fake a PNP Serial device's response when polled by DevManager.
Is it possible to have the device manager look for PNP equipement via com0com?
A. Yes, it is. The simplest way is to put the port to the Ports class, for example:
1. Launch the Setup Command Prompt shortcut.
2. Install the pair of ports, were one of them has name COM#, for example:
command> install 0 PortName=COM# -
After installing the Ports class port you can use the list command to get
the real port name, for example:
command> list
CNCA0 PortName=COM#,RealPortName=COM3
CNCB0 PortName=-
Q. Is it possible to configure the com0com to randomly corrupt the data? It
would be nice to have this feature so that we can test our application
robustness.
A. Yes, it's possible by setting EmuNoise parameter:
1. Launch the Setup Command Prompt shortcut.
2. Enter the change command, for example:
command> change CNCA0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes
command> change CNCB0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes
Now each character frame (including idle frames) will be corrupted with
probability 0.00001.
Q. What is the maximum number of port pairs that can be defined?
A. It depends from your system. The com0com itself has internal limit
1000000 port pairs.
Q. In my application, users could be installing up to 250 com port pairs.
Initially, the installation is fairly quick, but each additional com port
generally takes longer to install than the previous one. It quickly
becomes unacceptable for a user to be expected to wait for the installation.
A. It's because the installing of each next port pair requires to update driver
for all installed pairs. You can speed up installing of multiple com port
pairs by using install commands with --no-update option and then use
install command w/o --no-update option, for example:
command> --no-update install - -
command> --no-update install - -
...
command> --no-update install - -
command> install
The example of the batch program:
cd /D '%ProgramFiles%com0com'
FOR /L %%i IN (0,1,249) DO setupc --no-update install - -
setupc install
Q. I am using the 64-bit version of com0com and I am having trouble. I'd like
to debug this, but I can not find any free serial port monitor software,
like portmon that works with a 64-bit OS. Does anyone know of any?
A. You can try to use internal com0com's tracing for debuging:
- get trace.reg file from com0com's source;
- import trace.reg to the Registry;
- reload driver (or reboot system);
- do your tests and watch results in C:com0com.log file.
To disable tracing reinstall com0com or import trace_disable.reg to the
Registry and reload driver.
Emulators
  • Copy lines
  • Copy permalink

Comments are closed.