com0com: Virtuelle COM-Ports erstellen (Anleitung 2026)

com0com ist ein Open-Source-Tool, mit dem Du virtuelle COM-Ports unter Windows erstellen und emulieren kannst. In diesem Beitrag zeige ich Dir Schritt für Schritt, wie Du com0com installierst, virtuelle serielle Schnittstellen einrichtest und die Konfiguration über die Kommandozeile automatisierst.

Serielle Kommunikation im Projekt?

Ich entwickle Software für serielle Schnittstellen

COM-Port-Kommunikation, Hardware-Anbindung, CNC-Steuerung: Wenn Dein Projekt serielle Schnittstellen braucht, unterstütze ich Dich bei Architektur und Umsetzung.

Virtuelle COM Ports emulieren statt Kabelsalat

Hast auch Du Dich schonmal gefragt, wie Du virtuelle COM Ports erstellen, bzw. emulieren kannst? Wenn ja, dann bist Du in diesem Beitrag goldrichtig! Serielle Kommunikation wird auch heute noch häufig in den verschiedensten Bereichen verwendet – einen habe ich in einem YouTube-Video gezeigt.

Genauer ging es um die Kommunikation über eine serielle Schnittstelle/einen COM-Port mithilfe der SerialPort-Klasse aus dem .NET Framework. Dort habe ich gezeigt, wie man mit Hilfe eines Arduinos und ein wenig VB.NET Code, einen RFID Chip auslesen konnte. Natürlich kannst Du aber auch allerhand Anderes mit dem Wissen und dem Tool aus diesem Beitrag anfangen – Du musst also kein Entwickler sein.

💡 Achtung: Installiere wenn Du es eilig hast einfach das passende Paket aus dem Download und springe zu Punkt 3.2. Übrigens: Ich behandle hier vorerst nur die Verwendung unter dem Windows Betriebssystem, Linux und Co. gehen meinerseits heute leider leer aus.

Falls Du Entwickler bist: Ich habe bereits ein NuGet-Paket veröffentlicht, mit dem Du COM-Port-Änderungen direkt aus C# oder VB.NET heraus erkennen kannst – hier geht’s zum Beitrag (EN).

So, nun aber genug geplappert, tauchen wir tiefer in die Welt der „Null-Modems“, oder deren Simulation ein.

Warum virtuelle COM-Ports? Ein Praxisbeispiel

Den guten alten Spruch „Not macht erfinderisch“ kennen wir wohl alle, entweder vom Hörensagen, oder wenn wir es selbst erleben. Erst vor einigen Tagen traf es auch (wieder einmal) auf mich zu. Happy über ein neues Kundenprojekt machte ich mich wie immer motiviert an die Arbeit.

Das heißt bei mir allerdings erstmal: Anforderungen spezifizieren, planen, aufteilen – damit nachher auch das Passende herauskommt. Einerseits qualitativ hochwertig, also effizient/performant und sauber geschrieben, andererseits im Budget des Kunden. Natürlich werde ich hier aus Gründen der Geheimhaltungsvereinbarung nicht zu tief in die Projektdetails tauchen, jedoch grob anreißen.

Im bezeichneten Kundenprojekt ging es konkret um die Ansteuerung einer vom Kunden selbst entwickelte CNC-Maschine. Falls diese Art von Maschine kein Begriff für Dich ist, kein Problem! Stelle Sie Dir einfach als hochpräzise, elektrische Schneidemaschine vor, Welche eben genau das tut: Material präzise zu schneiden. Damit das Ganze natürlich in irgendeiner Weise funktioniert, muss der PC, bzw. die Software natürlich mit der Maschine kommunizieren können. Rate einmal, wer nun ins Spiel kam?

Der Kunde hatte jedoch einige Anforderungen, wie z. B. die Datenübertragung via USB-Kabel und die softwareseitige Übertragung via COM-Ports. Mit der oben bereits erwähnten SerialPort-Klasse des NET Frameworks und meiner bisherigen Arbeiten in diesem Bereich, sollte es von vornherein kein großes Problem darstellen.

Die CNC-Maschine konnte seitens der darauf liegenden Mikrocontroller-Software auf verschiedenen Kanälen kommunizieren. Ohne zu viel ins Detail zu gehen war es so, dass die Maschine dann eben mehrere COM-Ports, statt nur einem verwendete. Auch das wäre auf meiner Seite der Software nicht das Problem, jedoch…

Spoiler: Wenn Du also mehrere Kabel am PC raus und wieder reinstecken muss (und das in der Entwicklungsphase häufiger), dann freuen sich höchstens Deine USB-Ports am PC *Ironie aus*. Nicht nur Dein PC wird unnötig verschlissen, sondern auch automatisierte Tests werden schwer umsetzbar.

Wer also vernünftigen, test- und wartbaren Code schreiben möchte, kommt um eine Art softwareseitige Emulation/Simulation von COM-Ports nicht drum rum.

com0com zu Hilfe – virtuelle COM Ports

Nachdem wir einmal die eventuelle Notwendigkeit von virtuellen COM-Ports besprochen haben, schauen wir uns nun an, wie wir Diese tatsächlich erstellen können. Dazu gibt es im Netz unter anderem die „com0com“-Software. Den Download dazu, findest Du wie in jedem meiner Beiträge weiter unten, das erspart unnötige Sucherei.

Lade Dir am besten nun die verpackte Zip-Datei von meiner Homepage runter, oder besuche Google und finde einen ähnlichen Download. Entpacke die beiden Installer nun in ein Verzeichnis Deiner Wahl und wir sind startklar. Beachte, dass es eine x86 (32 bit) und eine x64 (64 bit) Variante gibt – in meinem Fall habe ich die 64 bit Variante verwendet.

Installation von com0com

Damit Du eine passende Variante für Deinen Computer ausmachen kannst, müssen wir zuerst die Architektur Deines Prozessors herausfinden. Dabei kann es sich entweder um eine 32-, oder um eine 64 bit Variante handeln. Diese werden auch häufig als x86 und x64 bezeichnet.

Hinweis: Unsignierter Treiber

Hinweis: com0com (auch bekannt als „Null Modem Emulator“) verwendet einen unsignierten Treiber. Unter Windows 10 und Windows 11 muss daher ggf. die Treibersignaturerzwingung vorübergehend deaktiviert werden, damit die Installation funktioniert.

Architektur des PCs herausfinden

Der einfachste Weg ist wohl, die Windows-Taste auf Deiner Tastatur gedrückt zu halten und dann die „Pause/Unterbrechen“-Taste in Kombination zu drücken. Alternativ kannst Du auch einfach die Windows-Taste einmal drücken und im erscheinenden Suchfeld „computer“ eingeben. Dann kannst Du auf „Dieser PC“ einen Rechtsklick machen und „Eigenschaften“ auswählen.

In beiden Fällen sollte dann ein kleiner Bericht, bzw. ein Eigenschaftsfenster bezüglich Deines PCs erscheinen:

Prozessor- & Betriebssystem-Architektur herausfinden – virtuelle COM Ports
Prozessor- & Betriebssystem-Architektur herausfinden – virtuelle COM Ports

Das passende Setup ausführen

Den relevanten Teil habe ich im Screenshot schon markiert, dort siehst Du, dass es sich bei meinem Gerät (Prozessor + Betriebssystem) um eine 64-bit-Variante handelt. Daher starte ich nun in meinem Fall die passende Installationsdatei:

com0com Setup-Installation durchführen
com0com Setup-Installation durchführen

Verwendung von com0com

Nach Ausführung der passenden com0com Setup-Datei, haben wir nun 2 neue Tools auf unserem PC. Einerseits das „Setup Command Prompt“ und andererseits eine Anwendung namens „Setup“. Man darf hier allerdings nicht denken, dass dies weitere Installationsdateien sind. Namen wie „Virtual COM-Port Configuration“ o. Ä. hätten es hier wohl eher getroffen – naja…

com0com - Installierte Anwendungen
com0com – Installierte Anwendungen

Das Setup-Tool

Das erste kleine Tool ist das „Setup“-Tool, es ermöglicht uns die visuelle Konfiguration von virtuellen COM-Ports mit einer kleinen Oberfläche:

com0com Setup Tool - virtuelle COM-Ports aufsetzen
com0com Setup Tool – virtuelle COM-Ports aufsetzen

Einen virtuelle COM Ports einrichten (Paar)

Um einen virtuellen COM-Port einzurichten, kannst Du im hier drüber dargestellten Tool ganz einfach auf „Add Pair“ klicken. Standardmäßig erzeugt das Tool dann 2 virtuelle Ports, für gewöhnlich nach folgendem Muster: „CNCA<Nummer>“ & „CNCB<Nummer>“. „Zwei Ports?“ fragst Du Dich nun eventuell – jap, ist schon richtig!

Allgemein kann man natürlich sagen, dass eine „Verbindung“ nun einmal immer zwei Punkte miteinander verbindet. Daher erzeugt com0com immer ein Paar von Ports. Das sind dann im einfachen Beispiel erstmal so aus:

COM-Port Paar
COM-Port Paar

Leider tauchen die erstellten COM-Ports, bzw. das Paar nicht in der Übersicht auf, wo wir es erwartet hätten. Ebenso könnten einen die Bezeichnungen stören, man würde ggf. schon die normalen „COMX“-Namen haben wollen. Kein Problem, dazu kommen wir jetzt!

Gängige Bezeichnungen

Um für unser erstelltes COM-Paar nun die gängigen Bezeichnungen a la „COM“ + Nummer zu bekommen, müssen wir nur einen Haken setzen. Okay, genau genommen sogar zwei…

Wähle das zu ändernde Port-Paar aus, also im Screenshot zum Beispiel „Virtual Port Pair 2“ und markiere auf der rechten Seite beide „use Ports class“ Checkboxen. Klicke im Anschluss auf „Apply“ und schon ändern sich die beiden Bezeichnungen in das von uns bekannte/gängige Muster. Zusätzlich erscheinen die Ports nun auch in der gängigen Geräte-Manager-Kategorie „Anschlüsse“.

COM-Port Paar - richtig benannt
COM-Port Paar – richtig benannt

Automation über die Commandline (Cmd)

Im obigen Beispiel haben wir nun die „Ottonormalverbraucher“-Variante geführt durch die grafische Oberfläche gesehen. Schauen wir uns doch einmal im nächsten Schritt die etwas automatisierbarere Variante mithilfe der Kommandozeile (Cmd) an. Dort können wir einfache Befehle an die mitgelieferte Software schicken und so ohne manuellen Aufwand Re- und Deregistrierungen von virtuellen COM-Ports durchführen.

Arbeiten wir uns hier einmal durch die Arbeitsschritte von oben durch und schauen, wie Diese sich in der Kommandozeile umsetzen lassen. Nachdem wir jetzt nun wissen, dass durch com0com immer Port-Paare erzeugt werden, wird es auch – Überraschung – auf der Kommandozeile nicht großartig anders laufen.

Verfügbare Befehle auflisten – Hilfe?

Im ersten Schritt empfiehlt es sich, einmal den für viele Konsolenanwendungen gängigen Hilfe-Befehl aufzurufen. Damit können wir uns einen Überblick der Funktionalität(en) verschaffen und so einfacher an unser Ziel kommen. Öffne im nächsten Schritt also die „Setup Command Prompt“-Datei, Welche durch die Installation von com0com mitgeliefert wurde.

Die Datei findest Du relativ einfach über das Windows-Menü. Drücke die Windows-Taste und navigiere in der alphabetischen Übersicht nach „C“, wo Du dann com0com finden wirst. Klappe es auf und klicke die „Setup Command Prompt“-Datei an. Verwende hierzu auch alternativ die Windows-Suche (Welche bei mir in diesem Fall nicht immer zuverlässig geklappt hatte..) und suche einfach nach der jeweiligen Datei.

Nachdem Du die Konsolenanwendung aufhast, kannst Du den „help“-Befehl ausführen, dann solltest Du eine ähnliche Auflistung wie Diese hier bekommen:

com0com Auflistung - Hilfe
com0com Auflistung – Hilfe

Wie wir in der Ausgabe erkennen können, erwartet das Tool immer 2 Bestandteile. Der erste Bestandteil wären die Optionen, der Zweite beinhaltet dann das tatsächliche Command / den tatsächlichen Befehl. Werfen wir einen Blick auf den aktuell für uns wohl wichtigsten Befehl: „install“.

Der Install-Befehl

Um nun mithilfe des Install-Befehls analog zum obigen grafischen Beispiel ein COM-Port-Paar zu erstellen, rufen wir Ihn wie folgt auf:

install PortName=COM# PortName=COM#

Dadurch wird der Installations-Befehl ausgeführt und dabei ein Muster für die Bezeichnung der Ports a la „COM+Nummer“ verwendet. Als Antwort erhalten wir dann die installierten Ports (hier noch als CNCA/B). Wenn Du allerdings einen Blick in den Gerätemanager wirfst, wirst Du dort die korrekten Bezeichnungen sehen können.

Der Remove-Befehl

Wenn Du das gerade erstellte Port-Paar nun wieder löschen möchtest, kannst Du dafür den „remove“-Befehl verwenden. Letztendlich erwartet Dieser nur die „Id“ der Registrierung (das was nach CNCA/B kommt). Diese bekommst Du in der Ausgabe der Registrierung beispielsweise wie folgt:

CNCA0 PortName=COM#
CNCB0 PortName=COM#

In diesem Fall wäre die „0“ praktisch die Id der Registrierung. Diese Registrierung können wir dann so wieder entfernen:

remove 0

Tipp für .NET-Entwickler: Wenn Du die erstellten COM-Ports direkt in Deiner C#- oder VB.NET-Anwendung überwachen möchtest, z. B. um auf das An- und Abstecken von Geräten zu reagieren, schau Dir mein NuGet-Paket rskibbe.IO.Ports.Com.System.Windows an. Es erkennt COM-Port-Änderungen automatisch und feuert Events, auf die Du direkt reagieren kannst.

Den dazugehörigen Beitrag findest Du hier: Detecting COM-Port additions & removals (EN).

Serielle Schnittstellen im Projekt?

Du brauchst das in Deiner eigenen Software?

Ob COM-Port-Kommunikation, Hardware-Anbindung oder komplette Steuerungssoftware: Ich unterstütze Dich bei Konzeption und Umsetzung.

FAQ

Ist com0com kostenlos?

Ja, com0com ist Open-Source-Software und kann frei heruntergeladen und verwendet werden.

Funktioniert com0com unter Windows 10 und 11?

com0com funktioniert unter Windows 10 und 11, erfordert auf 64-Bit-Systemen aber einen unsignierten Treiber. Dazu muss die Treibersignatur in Windows vorübergehend deaktiviert werden.

Was ist der Unterschied zwischen CNCA und CNCB?

com0com erstellt immer ein Port-Paar. CNCA und CNCB sind die beiden Enden einer virtuellen Null-Modem-Verbindung. Alles, was an CNCA gesendet wird, kommt an CNCB an und umgekehrt.

Welche Alternativen zu com0com gibt es?

Kostenpflichtige Alternativen sind z.B. Virtual Serial Port Driver (Eltima) oder Free Virtual Serial Ports (HHD Software). com0com ist die einzige vollständig kostenlose Open-Source-Lösung.

Fazit – virtuelle COM Ports

In diesem Beitrag habe ich Dir gezeigt, wie Du mithilfe von com0com virtuelle COM-Ports erstellen und emulieren kannst. Dazu haben wir sowohl die mitgelieferte grafische Oberfläche als auch die Konsolenanwendung verwendet. Wenn Du COM-Port-Änderungen direkt in Deiner .NET-Anwendung erkennen möchtest, schau Dir mein NuGet-Paket rskibbe.IO.Ports.Com.System.Windows an.

Weitere Links

Downloads

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Robert Skibbe
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.