Forum: PC Hard- und Software virtueller COM-Port od. ähnl. um Programm mit COM zu testen


von Matthias S. (da_user)


Lesenswert?

Hi,

ich Programmiere gerade ein Programm (C#), dass über die serielle 
Schnittstelle mit einem Mikrocontroller quatscht. Jetzt habe ich den 
nicht immer zur Verfügung würde mein Programm aber trotzdem gerne 
testen.

Dazu suche ich sowas in der Art wie einen virtellen COM-Port. Auf die 
eine Seite kann sich mein C#-Programm mit dem verbinden, auf der anderen 
kann ich z.B. mit einem Terminal draufgehen und die Antworten 
simulieren, später mir evtl. sogar einen entsprechenden Simulator 
basteln.

Gibts sowas? Oder irgendwas ähnliches?

VG
da_user

von Wolfgang (Gast)


Lesenswert?

Matthias S. schrieb:
> Gibts sowas? Oder irgendwas ähnliches?

Du suchst vielleicht ein virtuelles Nullmodem, z.B. 
http://com0com.sourceforge.net/

von c-hater (Gast)


Lesenswert?

Wolfgang schrieb:

> Du suchst vielleicht ein virtuelles Nullmodem, z.B.
> http://com0com.sourceforge.net/

Das funktioniert, in der richtigen Version für's eigene OS und nach 
korrekter Konfiguration, tatsächlich sehr gut.

Was aber i.d.R. noch viel besser und einfacher funktioniert: Ein echtes 
Nullmodem... Kostet maximal ein weitere reale serielle Schnittstelle und 
ein reales Nullmodem-Kabel...

Wenig erstaunlich kann man damit exakt dasselbe bauen, was man auch mit 
com0com baut. Bloß halt ohne diverse drohende Fallstricke, die den 
Normaluser normalerweise schnell überfordern...

von WaddeHaddeDuDeDa (Gast)


Lesenswert?

Für solche Zwecke benutze ich VSPE.
http://www.eterlogic.com/Products.VSPE.html

von W.S. (Gast)


Lesenswert?

Matthias S. schrieb:
> Dazu suche ich sowas in der Art wie einen virtellen COM-Port.

Dann leg dir doch irgend einen USB->Serial-Konverter zu, den es 
beimfreundlichen Chinesen für zwofuffzig gibt und brücke dessen RxD und 
TxD. Dann hast du deinen Ausgabe- und zugleich deine Eingabe-Kanal in 
Realität.

W.S.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

W.S. schrieb:
> Dann leg dir doch irgend einen USB->Serial-Konverter zu, den es
> beimfreundlichen Chinesen für zwofuffzig gibt und brücke dessen RxD und
> TxD.

Und wie verbindest Du gleichzeitig zwei Programme damit?

Gefragt ist das hier:

> Auf die eine Seite kann sich mein C#-Programm mit dem verbinden, auf der
> anderen kann ich z.B. mit einem Terminal draufgehen

Da hilft eine serielle Schnittstelle nicht.

Also bräuchte man schon zwei USB-UART-Bridges, die man mit einem 
Nullmodemkabel miteinander verbindet.

von Matthias S. (da_user)


Lesenswert?

Wolfgang schrieb:
> Matthias S. schrieb:
>> Gibts sowas? Oder irgendwas ähnliches?
>
> Du suchst vielleicht ein virtuelles Nullmodem, z.B.
> http://com0com.sourceforge.net/

Nullmodenkabel!
Das ist vor meiner Zeit, könnte aber genau das sein, was ich brauche.
Ich will möglichst nicht mit ext. Hardware nochmal rumbasteln, bzw. die 
mit mir rumschleppen müssen.

Dankeschön an alle!

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Bau ein IP-Socket in dein Programm ein und schalte zwischen Serial und 
Socket per Tastendruck, Config-File oder #def ... beim Start um.

Kannst ja beide Schnittstellen-Typen hinter identische Funktionen 
wrappen, so hat es keine Auswirkungen auf den restlichen Sourcecode.

Terminalprogramme (z.B. "Putty"), die auch TCP können, gibts wie Sand am 
Meer. Nimm als Verbindungsparameter "localhost" oder "127.0.0.1" und 
eine ansonsten nicht genutzte Portnummer oberhalb 1024, z.B. 3307 
(ausprobieren).

Der Vorteil: KEINE zus. Software, keine Treiber und keine Kabel 
erforderlich.

: Bearbeitet durch User
von Heiner (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der große Vorteil gegenüber com0com ist der, daß man dafür bezahlen 
muss.

von c-hater (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> Der große Vorteil gegenüber com0com ist der, daß man dafür bezahlen
> muss.

Du hast vergessen, "Vorteil" in Anführungszeichen zu setzen, um die 
Ironie auch für DAUs deutlich zu machen...

------------------------------------------------------------------------ 
-----------------------------

Aber trotzdem: für DAU-Dummdödel kann der Erwerb einer zusätzlichen 
Schnittstelle und eines Nullmodemkabels tatsächlich der einfachere und 
billigere Weg sein. Ja klar, er muss Kohle (in sehr überschaubarem 
Umfang) in die Beschaffung der Hardware investieren, spart dafür aber 
u.U. viele Stunden (in kaum abschätzbaren Umfang, die Grenze ist die 
mögliche Idiotie und die halte ich, wie Einstein, für ziemlich 
unendlich) bei der korrekten Installation und Konfiguration von com0com. 
Das ist nämlich keinesfalls vollständig selbsterklärend und 
DAU-tauglich. Schon die Wahl des korrekten Downloads dürfte viele DAUs 
hoffnungslos überfordern und dann oft für einen kompletten Fehlschlag 
sorgen, was der DAU allerdings erst nach vielen Stunden vergeblicher 
(weil: vorherein zum Scheitern verurteilter) Konfigurationsversuche 
bemerkt...

von A. S. (Gast)


Lesenswert?

Ich mache es immer mit 2 wirklichen Schnittstellen. Erstens braucht man 
(wenn man sie überhaupt nutzt) oft mehrere, zweitens "sieht" man 
notfalls mit einer 5V-LED die Signale, wenn man sie vom Signal zu GND 
schaltet (und ja, sie könnten durchbrennen... aber sie tun es nicht und 
dann ist eine Diskussion darüber auch sinnlos. Und wenn sie es tun, dann 
halt eine Diode dazu.)

Für die zweite kannst Du dann irgendein ein Programm nehmen.

Matthias S. schrieb:
> Dazu suche ich sowas in der Art wie einen virtellen COM-Port. Auf die
> eine Seite kann sich mein C#-Programm mit dem verbinden, auf der anderen
> kann ich z.B. mit einem Terminal draufgehen und die Antworten
> simulieren, später mir evtl. sogar einen entsprechenden Simulator
> basteln.

Wenn Du ein C# Programm hast, dass RS232 spricht, ... dann ist das in 
der Regel eine gute Basis für einen Hack der Gegenstelle.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.