What is a virtual com port or null modem emulator?
A communications (com) port or serial port is a physical interface, usually defined by the RS-232 standard for communicating digital data (bits) between a DTE (Data Terminal Equipment) and a DCE (Data Communication Equipment) one bit at a time or serially, hence the name "serial port". As this relates to ham radio a devices like a computer or older terminal are considered DTE devices whereas your TNC or radio are considered DCE devices. A standard RS-232 serial cable is used to connect a DCE device to a DTC device via their serial or com ports.
If you wanted to connect two DTE devices together, such as two computers, a special type of serial cable is required called a "null modem" cable. With a null modem connection the transmit and receive lines are cross-linked. Null modems cables are commonly used for data transfer between computers or two software packages running on the same computer.
With a traditional radio, where the computer running a ham radio software program that communicates with a radio, this is accomplished with a standard serial cable and the process is fairly straightforward.
With a software defined radio, the "radio" is not discrete hardware, but another software program. So if you want your software defined radio to communicate with a ham radio specific program such as a logger that is CAT enabled, you would need a serial cable that connects a computer to a computer. By definition this is a null modem cable. Now it doesn't matter that the computer-to-computer connection only involves one computer since the software programs themselves are the ones using the actual serial ports. It just so happens that they can be and usually are on the same computer when operating a software defined radio. This is a very important concept and is the crux of understanding why a null modem cable is needed when connecting a SDR (program running on a computer) to another program running on the same or different computer.
So, if I am using a single computer with two serial ports, I can assign the first serial or com port to the SDR software, like PowerSDR and the second serial port to the logger program and connect a physical null modem cable between the com ports and that would allow the two programs to communicate with each other. Since I need to use two com ports to facilitate the communication path described previously, I refer to this as a com port pair or a null modem connection. Although this works just fine, the null modem cable makes the computer more susceptible to RFI because of the physical cable looped between two com ports makes a nice antenna.
Since the two software program reside on the same computer, there must be a way to allow them to communicate using the computer's internal memory rather than a bulky cable and physical communications ports installed in the computer. And it just so happens there is! A special software package that emulates a physical com port in software is called a virtual serial port and allows you to add serial ports to your computer without adding additional physical hardware (such as expansion cards, etc.). Unlike a physical serial port the virtual serial or com port can be assigned any name (COM254). It is possible to create an almost unlimited number of virtual serial ports in your PC. The only limitation is the operating system running on the computer and the consumption of computer resources, as it may require a substantial amount of resources to emulate large numbers of serial ports which may adversely effect overall computer performance.
As noted above, we require two serial ports and a null modem cable in between them to allow our SDR to communicate with another software program. A special type of software that combines two virtual serial ports together and allows data to pass between them is known as a virtual com port pair or null modem emulator. See the diagram below.
Fortunately there are several open source and free virtual com port pair/ null modem emulator software packages along with several commercial software packages that can be used to create this virtual connection between software programs running on the same computer.
The original virtual com port pair software package used with PowerSDR is called vCom. Recently, a lot of people have started using a package called Com0Com because it is currently being supported and updated by the software developer and is more compatible with Windows Vista. It has become the de facto virtual com port software used with FlexRadio Systems software products.