Forum: PC-Programmierung [C#] virtuellen COM-Port erstellen


von Matthias S. (da_user)


Lesenswert?

Tag,

ich möchte eine Software programmieren, die ein Gerät simuliert, welches 
eigentlich über einen Com-Port angeschlossen ist. Nun möchte ich mir da 
natürlich jede Menge Hardware-gefrickel sparen (Laptop) und die 
eigentliche Software für das Gerät auf einen von Simulator erstellten 
Com-Port zugreifen lassen.

Nur: wie erstelle ich in C# einen virtuellen Com-Port und nutze ihn so, 
dass ich auf der "Hardwareseite" sitze (den die eigentliche Software 
greift ja auf der anderen zu). Bei google habe ich bis jetzt nur 
Hinweise auf ein kostenpflichtiges Spezialtool (Shareware) od. ähnliches 
gefunden. Da ich das Programm aber als Freeware/Open-Source betreiben 
möchte, ist das natürlich nicht aktzeptabel.

Hat evtl. wer ne Idee?

VG
Matthias

von m. keller (Gast)


Lesenswert?

Glaskugel:
der virtuelle Com Port wird durch dein Target erzeugt (vermutlich nimmst 
du einen FTDI Chip). In deiner Anwendung benutzt du ganz normal den 
seriellen Port, als wäre es ein "echter".

Mach mal genauere Angaben

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?


von Matthias S. (da_user)


Angehängte Dateien:

Lesenswert?

@ m. keller:

Ich weiß nicht, wo und wie ich da jetzt genauere Angaben machen soll. 
Eigentlich klemmt ein Gerät direkt am Rechner, sei's jetzt über nen 
echten Com-Port oder einen USB2RS232-Wandler. Dieses Gerät soll durch 
eine Software simuliert werden. Und da ich ein Stück Software leider 
weder in nen Com-Port noch in nen USB2RS232-Wandler stecken kann soll 
mir die Software gleich nen virtuellen Com-Port erzeugen.

Prinzipiell würde es auch gehen, wenn ich mir an den Rechner zwei 
Com-Ports klemm und die mit einem Nullmodem Kabel verbinde. Die 
Gerätesoftware greift dann auf den einen Com-Port zu und der Simulator 
kommunziert mit dem anderen Com-Port mit der Software. Ist halt dann 
ewiges gefrickel und ich will, dass dies prinzipiell auf jeden Rechner 
möglich ist da ich anderen Softwareentwicklern meinen Simulator 
bereitstellen will, um Gerätesoftware zu erstellen ohne sich das Gerät 
extra anschaffen zu müssen.

Ich hab mal versucht das ganze schnell in Paint zu skizzieren. Das grau 
eingekreiste ist quasi so wie's Original ist, und dass ganze soll dann 
in Software gegossen werden.

Ich hoffe das waren jetzt genügend Infos für deine Glaskugel.

Wenn du willst noch mehr Infos: ich will ein per Unilink2seriell-Adapter 
angeschlossenes Radio simulieren, so dass andere Entwickler ihre 
Software bequem daran anpassen können. Der Adapter: 
http://www.mictronics.de/?page=unilink

@ Rufus t. Firefly
das hört sich schonmal sehr interessant an, danke.

von Ralf (Gast)


Lesenswert?

Da gibts auch die Profilösungen (falls das interessant ist):

- http://www.virtual-serial-port-control.com
- http://www.eltima.com/

Ralf

von ?? (Gast)


Lesenswert?

Da man eh an beiden Softwaren gleichzeitig entwickeln muss, wuerde ich 
das mit zwei Rechnern machen und einer wirklichen Schittstelle.

von Matthias S. (da_user)


Lesenswert?

@?? (Gast)

Da da wahrscheinlich auch Hobbyprogrammierer mitentwickeln werden, ist 
eine Zweirechner-Lösung wahrscheinlich sehr unpraktisch.

@Ralf:

zumindest die erste Software scheint so ziemlich genau das zu sein, was 
ich suche. Problem nur: 199$.

von Ralf (Gast)


Lesenswert?

> zumindest die erste Software scheint so ziemlich genau das zu sein, was ich 
suche.
Beide sind das, was du suchst, denn beide Firmen bieten Lösungen an, um 
einzelne virtuelle COM-Ports zu erstellen...

> Problem nur: 199$.
Für die Developer-License. Jeder "normale" User muss die "normale" 
Lizenz erwerben.

Bei Eltima wären es somit für das SerialPortActiveX
- 130 Euro für die DeveloperLicense
- 44 Euro für die UserLicense
(Angaben lt. Website)

Bei Fabula sind es
- 140 Euro für die DeveloperLicense
- 70 Euro für die UserLicense
(Dollarpreise umgerechnet mit Google)

Die SingleUser ist bei Eltima also wesentlich günstiger.

Ralf

von Matthias S. (da_user)


Lesenswert?

Was sich aber leider immer noch mit meinen Willen spießt, mein Proggi 
als Freeware/OpenSource für jedermann anzubieten. Schade :(

Trotzdem danke!

von Ralf (Gast)


Lesenswert?

> Was sich aber leider immer noch mit meinen Willen spießt, mein Proggi
> als Freeware/OpenSource für jedermann anzubieten.
Ach so, sorry, der Ansatz ist mir entgangen. Hm... das oben genannte 
COM0COM-Projekt lässt sich nicht entsprechend umpappen? Also den 
SourceCode passend modifizieren? Da hätte ich dann wiederum Interesse 
dran :) Ich hätte auch ein, zwei nette Projekte, bei denen ich einen 
virtuellen Port brauchen könnte, aber halt nicht im Paar.

Ralf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Ich hätte auch ein, zwei nette Projekte, bei denen ich einen
> virtuellen Port brauchen könnte, aber halt nicht im Paar.

Äh, und was soll so ein virtueller Comport "nicht im Paar" machen? Wohin 
soll der seine Daten senden bzw. woher sollen die kommen?

Pärchenweise ist schon der beste Ansatz.

von Matthias S. (da_user)


Lesenswert?

Ähm... sehr viel ;-)

Wenn du nen USB2serial Wandler hast, hast du auch nur einen ComPort. 
Wenn du ein Gerät an nen echten ComPort anschließt, hast du an deinem PC 
auch nur einen ComPort.
Ein ComPort hat zwei Seiten, auf der einen sitzt die Software, und an 
der anderen entweder ein Gerät oder über ein Nullmodemkabel ein anderes 
Gerät. Man bräuchte von obig genannter Software quasi nur die Hälfte, 
den man füttert die Daten nicht über einen zweiten Comport in den 
Null-modem-emulator dass dieser diese Daten an den anderen weitergibt, 
sondern füttert die Daten direkt in den emulator.

Ich bin leider noch nicht dazugekommen mir die Software genau anzusehen, 
aber prinzipiell würde mir die sogar schon als Null-modem-emulator 
genügen. Auch die Software "hub4com" hört sich interessant an, könnte 
ein guter Ersatz für X-Port sein, welches bei mir regelmässig mit nem 
Bluescreen abstürzt...

von Ralf (Gast)


Lesenswert?

> Äh, und was soll so ein virtueller Comport "nicht im Paar" machen? Wohin
> soll der seine Daten senden bzw. woher sollen die kommen?
Man kann damit viele Sachen machen. z.B. einen Sniffer aufbauen, oder 
einen "Verteiler", etc. Im Prinzip ist die 
Zwei-virtuelle-COM-Port-über-Nullmodem-Kabel-Sache nichts anderes, da 
wird intern wahrscheinlich auch zweimal ein COM-Port erzeugt, und die 
Daten der Ports jeweils durchgeschleift.

Man könnte sich mit so einem Teil seinen eigenen USB-Seriell-Wandler 
machen, mit allen Features, die man bei FTDI & Co. vermisst :) So etwas 
in der Art würde ich nämlich gerne machen...

Ralf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Man bräuchte von obig genannter Software quasi nur die Hälfte,
> den man füttert die Daten nicht über einen zweiten Comport in den
> Null-modem-emulator dass dieser diese Daten an den anderen weitergibt,
> sondern füttert die Daten direkt in den emulator.

Und welchen Vorteil sollte das haben? Du bräuchtest für das "direkt in 
den emulator"-Füttern eine spezielle Programmierschnittstelle (die 
immerhin mit einem Devicetreiber kommuniziert) und bist daran gebunden, 
dann nur diese Variante zu nutzen.

Wenn Du aber mit der virtuellen seriellen Schnittstelle kommunizierst, 
dann ist das eine standardisierte Programmierschnittstelle, die Dir 
alle Freiheitsgrade lässt, nämlich auch eine echte serielle 
Schnittstelle oder einen USB-Seriell-Adapter oder einen 
Ethernet-Device-Server zu nutzen.

Im Zusammenhang mit dem com0com-Projekt gibt es auch eine Software, die 
über das Netzwerk zwei serielle Schnittstellen verbindet. Zusammen mit 
je einem com0com-Pärchen lässt sich das mit beliebiger Software nutzen.


> Man kann damit viele Sachen machen. z.B. einen Sniffer
> aufbauen, oder einen "Verteiler"

Das ist ein Argument. Kommerziell gibt es auch entsprechende Produkte, 
es wäre zugegeben schön, wenn com0com da Erweiterungsmöglichkeiten böte.

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.