Forum: Mikrocontroller und Digitale Elektronik mehrere COM Verbindungen über einen Port


von Ste N. (steno)


Lesenswert?

Hallo Gemeinde!

Ich bin auf der Suche nach einer Möglichkeit, mehrere COM Schnittstellen 
auf einen COM-Port umzuleiten. D.h. ich möchte am PC mit verschiedenen 
Programmen z.B. COM1-4 ansprechen, diese sollen dann über EINE 
Verbindung ,am besten USB, an einen µC übertragen werden, wo ich das 
Ganze wieder auseinanderwursteln kann. Das Ganze sollte bidirektional 
funktionieren. An den einzelnen Ports fallen nicht viel Daten an, 
max.9600baud und es ist auch nichts Zeitkritisches. Einige 1/10 sek 
Verzögerung machen nichts, man könnte also alles in ein Protokoll 
verpacken. Eine Suche über Google hat bis jetzt kein sinnvolles Ergebnis 
gebracht. Mir fallen auch ehrlich gesagt nicht die richtigen 
Schlüsselwörter ein. Gibt es sowas fertig, am besten natürlich Free- 
oder Shareware mit einer grafischen Oberfläche zum Konfigurieren. Leider 
reichen meine Kenntnisse in der PC Programierung dafür nicht aus. Die 
Software sollte unter Windows laufen.

Viele Grüße,
Steffen

von Julian O. (juliano)


Lesenswert?

Am einfachsten (ohne Konfigurationsaufwand) sind wohl 4 usb-seriell 
Wandler an einem USB-Hub

von Henk (Gast)


Lesenswert?

Such mal nach "Virtual Com" oder "COm over Ethernet" und ähnliches. Da 
wirst Du sowas als Hard- und Softwarelösungen finden. Sowas gibt es auf 
jeden Fall und hatte ich auch schonmal laufen.

von Henk (Gast)


Lesenswert?

Oh sorry, ich habe PC statt µC herausgelesen. Dann betrachte meinen 
Beitrag bitte als hinfällig.

von Purzel H. (hacky)


Lesenswert?

Die Schwierigkeit ist der virtuelle COMPort Treiber, der mehrere Ports 
auf eines zusammenfasst, und auf einem Protokoll beruht. Das ist zwar 
machbar, braucht aber sehr gute Kenntnisse in PC Treibern

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mit etwas Installationsaufwand lässt sich das auch ohne 
Treiberprogrammierung erzielen. Es wird ein Programm geschrieben, das 
fünf serielle Schnittstellen bedient, vier mit den langsamen 
Schnittstellen der eigentlichen Anwendungen als Gegenstück und eine 
deutlich schnellere, über die der µC bedient werden soll, was zum 
Beispiel der VCOM-Treiber eines FT232 o.ä. sein kann.

Nun wird noch ein Gegenstück benötigt, das die Verbindung zwischen dem 
zu schreiben Programm und den vier Anwendungsprogrammen herstellt, denn 
die alle sollen über serielle Schnittstellen miteinander kommunizieren. 
Und da kommt com0com* ins Spiel. Das ist ein "virtuelles Nullmodem" und 
stellt Paare von (virtuellen) seriellen Schnittstellen zur Verfügung, 
die wie mit einem Nullmodemkabel miteinander verbunden sind.

Und so sieht das dann aus:

Vier com0com-Pärchen, die z.b. COM10-11, COM12-13, COM14-15 und COM16-17 
zur Verfügung stellen (man muss gegebenenfalls die Nummern anpassen, 
wenn die "langsamen" Anwendungen zu schlecht programmiert sind, um mit 
beliebigen Schnittstellennummern klarzukommen)

Anwendung A -> COM10
Anwendung B -> COM12
Anwendung C -> COM14
Anwendung D -> COM16

Das zu schreibende "Konzentratorprogramm" kommuniziert mit COM11,13,15 
und 17 sowie der schnellen Schnittstelle zum µC hin.

*) http://com0com.sourceforge.net/

von I. E. (anfaenger69)


Lesenswert?

Viele Programme haben Schwierigkeiten mit solchen virtuellen Com 
Treibern. Deshalb würde ich wirklich schauen, dass Du kompatibel zu den 
Programmen bleibst. Ich würde erst einmal kontrollieren, ob alle 
Programme einzeln mit dem Com Treiber des FT232 zurecht kommen. Wenn ja, 
würde ich einfach 4 von denen auf Deine Platine packen, davor noch einen 
USB Hub Chip, und mit einer Leitung zum PC Schicken. Die 4 Stück FT232 
kannst Du dann an einen Prozessor hängen, wenn gewünscht - wie es Julian 
O. schon weiter oben beschrieben hat.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

ich habe gerade beim Configurator meiner 
Lantronix-Com-over-Ethernet-Installation nachgesehen: ich kann ohne 
weiteres 4 virtuellen COM-Schnittstellen den gleichen Empfänger, sprich 
IP-Adresse, zuordnen. Ob das allerdings dann auch im Betrieb klappt, 
kann ich nicht sagen - wahrscheinlich kann nur eines davon gleichzeitig 
geöffnet sein. Da die PC-Programme wahrscheinlich "ihr" COM offen 
halten, sind die Aussichten eher schlecht.

Gruss Reinhard

von Ste N. (steno)


Lesenswert?

Erst mal Danke für die Infos und Tipps! Ich sehe schon, es wird nicht 
einfach... Wahrscheinlich ist die Lösung mit den 4x FT232 die 
kompatibelste Lösung. Mittlerweile gibt es ja einen fertigen 4fach 
Wandler von FTDI, den FT4232. Ist es möglich unter dem 
VirtualComPort-Driver an den seriellen Datenstrom mit SPI oder ähnlichem 
ranzukommen? Ich will darauf hinaus, das die Anwendungen auf dem PC mit 
beliebiger Baudrate, Stop- und Paritätbits senden könnten und ich am 
anderen Ende den µC immer mit max. Geschwindigkeit auslesen lasse, ohne 
mich um die Einstellungen am PC zu kümmern. Würde die ganze Sache 
natürlich sehr Anwenderfreundlich machen.

Gruß Steffen

von Reinhard Kern (Gast)


Lesenswert?

Steffen N. schrieb:
> ... Ich will darauf hinaus, das die Anwendungen auf dem PC mit
> beliebiger Baudrate, Stop- und Paritätbits senden könnten und ich am
> anderen Ende den µC immer mit max. Geschwindigkeit auslesen lasse, ohne
> mich um die Einstellungen am PC zu kümmern. Würde die ganze Sache
> natürlich sehr Anwenderfreundlich machen.

Hallo Steffen,

eine Möglichkeit (ohne Garantie), mit aufwendiger Hardware, aber ganz 
ohne eigene Software:

An den µC ein XPort von Lantronix anschliessen - das ist ein V24 <-> 
Ethernet Adapter.

Auf dem PC mit com0tcp 4 virtuelle COMx generieren und die IP-Adresse 
des XPort eintragen. Die senden dann (hoffentlich, der Teufel steckt im 
Detail) unabhängig von den COMx-Einstellungen die Daten per Ethernet an 
den XPort und der gibt sie an den µC weiter (mit seinen lokalen 
Einstellungen).

Eine eigene Transfersoftware ist nicht nötig, das erledigt die Tatsache 
dass alle 4 COMx an den gleichen XPort senden. Scheitern kann das am 
Öffnen und Schliessen der COMx: normalerweise nimmt ein virtuelles Port 
beim Öffnen (per CreateFile) Kontakt zum XPort auf und der verweigert 
dann weitere Verbindungen - ist aber ziemlich komplex, vielleicht gibt 
es eine Einstellung, in der es geht.

Gruss Reinhard

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.