Fälschung einer seriellen RS232-Schnittstelle

81

Ich entwickle ein Projekt, bei dem eine Reihe von Hardwaresensoren über serielle RS232-Ports mit dem Bereitstellungscomputer verbunden sind.

Aber ... Ich entwickle auf einem Computer ohne physische serielle RS232-Anschlüsse, aber ich möchte gefälschte serielle Anschlüsse erstellen, mit denen ich Daten verbinden und ausgeben kann, um Eingaben von Hardwaresensoren zu fälschen.

Kennt jemand eine Möglichkeit, eine gefälschte serielle Schnittstelle zu erstellen und unter Windows XP zu steuern?

Passend zum Satz
quelle
2
Haben Sie virtuelle Maschinen mit installierten seriellen Schnittstellen ausprobiert?
Restuta
4
Das habe ich nicht versucht. Das klingt so, als
müsste es
1
Ich konnte com0com und den Com Port Serial Emulator unter Windows 7 64-Bit ohne Probleme verwenden, hat super funktioniert.
JWiley
für diejenigen , die hier am Ende habe ich eine kurze Anleitung für com0com geschrieben hier
Foad

Antworten:

68

Wenn Sie für Windows entwickeln, ist das com0com- Projekt möglicherweise genau das, wonach Sie suchen.

Es bietet Paare von virtuellen COM-Ports, die über eine Nullmodem-Verbindung verbunden sind. Sie können dann Ihre bevorzugte Terminalanwendung oder was auch immer Sie möchten verwenden, um Daten an einen COM-Port zu senden und von dem anderen zu empfangen.

BEARBEITEN:

Wie Thomas betonte, fehlt dem Projekt ein signierter Treiber, was bei bestimmten Windows-Versionen (z. B. Windows 7 x64) besonders problematisch ist.

Es gibt einige inoffizielle com0com- Versionen, die einen signierten Treiber enthalten. Eine aktuelle Version (3.0.0.0) kann zB hier heruntergeladen werden .

Frank Bollack
quelle
4
Obwohl das com0comProjekt ein ausgezeichnetes Open Source-Projekt ist, da es den Gerätetreiber ohne digitale Signatur installieren sollte, funktionieren einige Windows-Systeme, die den digital signierten Treiber überprüfen, nicht mit seiner virtuellen seriellen Schnittstelle. Ich will nur, dass die Leute es wissen.
Tae-Sung Shin
5
@Thomas: Das Durchsuchen des Netzes zeigt, dass es einige inoffiziell signierte Versionen des Treibers gibt. Eine aktuelle Version (3.0.0.0) kann hier heruntergeladen werden .
Frank Bollack
Vielen Dank, Sie verdienen ein Bier!
Pale Ale
Wie wird das eigentlich gemacht? Was sind die Windows-Grundlagen?
Nacht
@Nacht Jeder Treiber macht eine Abstraktion, auch wenn es eine echte serielle Schnittstelle "Connectet" zu ihnen gibt. Dies bedeutet, dass Sie beim Schreiben eines Treibers feststellen werden, dass Sie nicht mit der Realität kommunizieren müssen. Dann können Sie den Trasmitionspuffer verwenden, wie Sie möchten. In diesem virtuellen Fall senden Sie Daten an einen anderen "Port", anstatt einen Stream an eine reale Sache zu senden. Dieser Port ist ein Paar mit dem ersten. Das Ganze sieht aus wie das Spiegeln von Datenströmen. Ich hoffe es ist jetzt klar.
MrHIDEn
63

Ich weiß, dass dies ein alter Beitrag ist, aber falls jemand anderes auf diese Frage stößt, ist VSPE (Virtual Serial Port Emulator) von Eterlogic eine gute Option. Er bietet eine API zum Erstellen von virtuellen Comport-Geräten im Kernelmodus, z. B. Konnektoren, Mapper, Splitter usw. . jedoch , sind einige der Fähigkeiten waren wirklich nicht Fähigkeiten überhaupt .

EDIT
Eine viel bessere Wahl , Eltima . Dieses Produkt ist vollständig gebacken. Guter technischer Support für Entwickler. Das Produkt hat alles getan, was es zu tun behauptete. Zu den Produktoptionen gehören sowohl Desktopanwendungen als auch Softwareentwicklungskits mit APIs.

Keines dieser Produkte ist Open Source oder kostenlos. Wie andere Beiträge hier bereits betont haben, gibt es jedoch andere Möglichkeiten. Hier ist eine Liste verschiedener serieller Dienstprogramme:

com0com (aktuell)
com0com - Mit signiertem Treiber (alte Version)
Ein weiterer Ort für com0com mit signiertem Treiber (Pete's Blog)
Taktische Software
Termite
COM Port Serial Emulator
Kermit (veraltet, aber immer noch herunterladbar)
HWVSP3
HHD Software (kostenlose Edition)

Ryyker
quelle
34

Ich verwende com0com - Mit signiertem Treiber unter Windows 7 x64, um COM3 UND COM4 als Paar zu emulieren.

Dann benutze ich COM Dataport Emulator , um von COM4 zu empfangen.

Dann öffne ich COM3 mit der App im Entwickeln (c #) und sende Daten an COM3.

Die über COM3 gesendeten Daten werden von COM4 empfangen und vom 'COM Dataport Emulator' angezeigt, der auch eine Antwort zurücksenden kann (nicht automatisiert).

Mit diesen 2 großartigen Programmen gelang es mir, die serielle RS-232-Kommunikation zu emulieren.

Ich hoffe es hilft.

Beide Programme sind kostenlos !!!!!

Jhollman Cutcsa
quelle
1
Fantastisch. Das hat mir geholfen, das ist sicher. Kennen Sie eine Möglichkeit, wie ich den COM Port Data Emulator auf meine Eingabe warten lassen und diese dann zurücksenden kann?
Bunggo
3

Eine andere Alternative, obwohl das OP nicht danach gefragt hat:

Es gibt USB-zu-Seriell-Adapter. Je nach Adaptertyp benötigen Sie möglicherweise auch ein Nullmodemkabel.

Sie sind unter Linux extrem einfach zu bedienen und funktionieren auch unter Windows, wenn Sie funktionierende Treiber installiert haben.

Auf diese Weise können Sie direkt mit den Sensoren arbeiten und müssen nicht versuchen, Daten zu emulieren. Auf diese Weise können Sie vielleicht sogar ein anämisches System aufbauen. (Aufgrund Ihrer emulierten Dateneingaben, die nicht alle Fälle abdecken, führt dies zu einem spröden System.)

Es ist oft besser, mit dem echten Zeug zu arbeiten.

sjas
quelle
Ist es möglich, einen Namen für einen Software-USB-zu-Seriell-Adapter zu haben? :) Danke
alcor
1
screen /dev/ttyUSB0 9600oder verwenden minicomSie, wenn Sie Software für diese Hardware benötigen.
Sjas
3

Es gibt immer die Hardware-Route. Kaufen Sie zwei USB-zu-Seriell-Wandler und verbinden Sie sie über ein NULL-Modem.

Profi-Tipps: 1) Windows kann den Adaptern nach jedem Ruhezustand oder Neustart des Geräts neue COM-Ports zuweisen. 2) Die Marktführer bei Chips für USB zu Seriell sind Prolific und FTDI. Beide Unternehmen kämpfen gegen Fälschungen und werden möglicherweise in zukünftigen offiziellen Windows-Treibern blockiert. Die Linux-Treiber funktionieren jedoch gut mit den Klonen.

Bryce
quelle
3
Beachten Sie, dass serielle USB-Adapter ein anderes Timing- / Bündelungsverhalten aufweisen als herkömmliche UARTs. Das Testen mit einem ist jedoch keine schlechte Idee, wenn die Möglichkeit besteht, dass einer jemals verwendet wird. Wenn sie zum ersten Mal populär werden, brechen schlecht entworfene oder implementierte Protokolle manchmal zusammen oder verlangsamen sich zu einem Crawl, wenn sie mit einem verwendet werden. Heutzutage ist es weniger wahrscheinlich, dass etwas aus der Tür kommt, ohne mit einem USB-angeschlossenen UART in der Entwicklung ausprobiert zu werden. In der Tat ist es heute unwahrscheinlich, auf einem herkömmlichen UART auf einem PC ausprobiert zu werden.
Chris Stratton
1

Ich habe eltima verwendet, um eine virtuelle serielle Schnittstelle für das Debuggen meiner Modbus-Anwendung herzustellen. Es ist wirklich eine sehr gute Anwendung in der Entwicklungsphase, um das Programm der seriellen Schnittstelle zu überprüfen, ohne Hardware anzuschließen.

Nileshkumar koladiya
quelle