The Null-modem emulator (com0com) is a kernel-mode virtual serial port driver for Windows. You can create an unlimited number of virtual COM port pairs and use any pair to connect one COM port based application to another. The HUB for communications (hub4com) allows to receive data and signals from one COM or TCP port, modify and send it to a number of other COM or TCP ports and vice versa.
Features
- com0com: baud rate emulation
- com0com: pinouts customization
- com0com: noised line emulation
- com0com: paired port settings monitoring (baud rate, data bits, stop bits, parity)
- com0com: hiding ‘unavailable’ ports from user
- hup4com: spliting data from one serial device into several virtual serial ports
- hup4com: redirecting serial to TCP/IP and TCP/IP to serial
- hup4com: RFC2217 — Telnet Com Port Control Option (client and server)
Project Samples
License
GNU General Public License version 2.0 (GPLv2)
Melissa Data Quality Suite
Our Data Quality Suite offers global address, name, phone, and email verification all in one easy-to-use solution.
What is Melissa Data Quality Suite? Since 1985, Melissa has combined address management and contact data quality expertise with the latest innovations to help businesses do better business through clean customer contact data.
User Ratings
4.4
out of 5 stars
★★★★★
★★★★
★★★
★★
★
ease
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5
3 / 5
features
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5
4 / 5
design
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5
3 / 5
support
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5
3 / 5
User Reviews
- All
- ★★★★★
- ★★★★
- ★★★
- ★★
- ★
-
Serial connection between virtual machines without the need for hardware. One of the most effective programs I have
-
This is simple, solid and did EXACTLY what I needed. This is one of the little tools that I keep around forever to pull out when I need just that.
-
Sorry my poor English, this project is very useful for me to debug because I work with ancient devices that require COM port interface only.
Read more reviews >
Additional Project Details
Operating Systems
Windows Server, Windows
Languages
English
Intended Audience
Advanced End Users, Developers, Testers
User Interface
Win32 (MS Windows), Command-line
Programming Language
C++, C
Related Categories
C++ Serial Software,
C++ Telnet Software,
C++ Emulators ,
C Serial Software,
C Telnet Software,
C Emulators
Поставить оценку
Средний рейтинг 3.0, всего оценок — 1
- Скачать программу
- Описание и функции
- Скриншоты интерфейса
- Комментарии пользователей
Название→ | Null-modem Emulator (com0com) |
---|---|
Версия→ | 3.0 |
Лицензия→ | Бесплатно |
Поддержка→ | Windows 11, 10, 8, 7, Vista, XP |
Размер файла→ | 0.5 Мб |
Разработчик→ | com0com |
Обновлено→ | 12 августа 2019 |
Эмулятор нуль-модема (com0com) — это драйвер виртуального последовательного порта в режиме ядра для Windows.
Скачать для Windows
Скачайте последнюю версию Null-modem Emulator (com0com) 3.0 по прямой ссылке. Программа совместима с операционными системами Windows 11, 10, 8, 7, Vista, XP разрядностью 32/64-bit, размер установочного файла — 0.5 Мб. Данный программный продукт разработан com0com и распространяется бесплатно. Также вы можете скачать программу с официального сайта.
Описание программы
Вы можете создать неограниченное количество пар виртуальных COM-портов и использовать любую пару для подключения одного приложения на основе COM-порта к другому.
Функции включают эмуляцию скорости передачи данных, настройку распиновки, эмуляцию зашумленной линии и мониторинг настроек парного порта.
Скриншоты интерфейса
Комментарии пользователей
Com0Com is a software application that allows users to create virtual serial ports on a computer. Com0Com is a tool that allows users to emulate hardware devices over virtual COM ports. With Com0Com, users can easily make connections between two applications that are not compatible with each other, even if those applications are running on the same computer.
Using com0com allows for two virtual serial ports to be created and connected together, providing an easy way to test software that requires serial communication.
Features:
• Create virtual serial ports: Com0Com allows users to create virtual serial ports on their computer. These ports can be used to emulate hardware devices or to connect two applications that are not compatible with each other.
• Easy to use: Com0Com is easy to use. It requires minimal setup and can be used with any Windows computer.
• Reliable: Com0Com is a reliable tool for creating virtual serial ports. It is also reliable for connecting two applications that are not compatible with each other.
• Secure: Com0Com is a secure tool. It uses encryption to protect all data transferred over its virtual serial ports.
• Compatible: Com0Com is compatible with Windows XP, Vista, 7, 8, and 10.
• Free: Com0Com is a free application. It can be downloaded and used without any cost.
• Open Source: Com0Com is an open source project. This means that it is developed and maintained by a community of volunteers who are dedicated to providing a reliable and secure tool for creating virtual serial ports.
• Configurable: Com0Com is configurable. Users can configure the settings for each virtual serial port to meet their specific needs.
• Compatible with Many Applications: Com0Com is compatible with many applications, including but not limited to, industrial control systems, medical devices, robotics, and embedded systems.
• Support: Com0Com provides extensive documentation and support for users.
• Scalable: Com0Com is scalable. This means that users can create as many virtual serial ports as needed, depending on their needs.
Com0Com is a powerful and reliable tool for creating virtual serial ports and connecting two applications that are not compatible with each other. It is easy to use, secure, compatible with many applications, and free. With its configurable settings, scalability, and support, Com0Com is an ideal solution for creating virtual serial ports.
1. Operating System: Microsoft Windows 7 or later, MacOS 10.10 or later, or any Linux variant
2. Processor: Intel Core i5 or equivalent
3. Memory: 4GB RAM
4. Hard Drive: 100GB of available disk space
5. Internet Connection: Broadband connection
6. Software: .NET Framework 4.0 or higher, Visual Studio 2015 or higher
USER REVIEWS AND COMMENTS
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Leo Dicristofaro
I have used com0com software for several years now and found it to be a great solution for creating virtual serial port connections. It is easy to install and configure for use. The user interface is intuitive and the performance is reliable. It is also highly customizable and supports a wide range of emulations. The only downside I have experienced is that the software can be a bit slow at times. Other than that, it has been an excellent solution for my needs.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Luke A*******k
I have used com0com software for a few months and I have found it to be quite reliable. It’s been easy to set up, and I’ve found the virtual ports to be stable and responsive. I have experienced minimal latency when transferring data between the ports, and I haven’t experienced any crashes or errors. The support documentation is user-friendly and easy to understand.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Luke O*****r
The com0com software is a great tool for testing serial ports, but I found that the setup process was a bit confusin and time consuming.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Arran Fontecchio
This software is a virtual serial port emulator that allows users to create pairs of virtual COM ports and connect them with a virtual null modem cable. It supports various types of connections, including loopback, TCP/IP, and UDP. It is compatible with Windows operating systems and can be used for various applications such as debugging, testing, and data transfer between serial devices. It also includes a GUI interface for easy configuration and management of the virtual COM ports.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
John X*******k
Com0com is a free and open-source virtual serial port emulator that allows communication between two applications or devices.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Scott
Com0com is an open-source software that provides a system for emulating serial port device pairs, which are indispensable in creating virtual null-modem cables. This feature allows developers to perform testing of various software and hardware solutions without the need for physical devices. It further enhances the debugging process by enabling data routing and monitoring.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Blake
A handy tool for virtual serial port emulation, making data transfer and debugging much easier.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Caleb
Efficient for serial port emulation, slightly complex interface.
image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner
Kai
Reliable for serial communication simulation.
Com0com: reliable for creating virtual serial ports.
5.1 Com0com Installation and Configuration(Windows)
Download the signed version of com0com.
Unzip the downloaded .zip file and run the specific installer of your operating system, x86
for windows 32-bit or x64 for windows 64-bit.
Configure the “choose components” window as the figure below:
In the last configuration window, check the “Launch setup” option:
In the setup window, change the port names to COM1, COM2, COM3 …. Just check the
“enable buffer overrun” and “use Port class” options on the port used to CuteCom, click in
the “Apply” button and close the setup. In the configuration shown in the figure below, the
port COM1 (with buffer overrun disabled) must be used by the PICSimLab and
COM2 (with buffer overrun enabled) by the application with serial communication.
============================= 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%\com0com\uninstall.exe" /S You can specify the installation directory with /D option, for example: setup.exe /S /D=C:\Program Files\com0com 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 Files\com0com" 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 HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 1 /f setupc install - - setupc update reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /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.