Forum: PC-Programmierung eine RS232 Schnittstelle an mehrere Programme - umleiten auf Sockets


von Opa (Gast)


Lesenswert?

Hallihallo,

Kurz worum es geht:
Ein Gerät ist über RS232 mit einem PC verbunden. Auf dem PC läuft eine 
Software des Geräteherstellers zur Steuerung, Fehlerabfrage etc. In der 
Dokumentation ist das Protokoll auf der Schnittstelle beschrieben.

Ich möchte nun ein Programm schreiben, möglichst in QT, um mich auch mit 
dem Gerät zu unterhalten.

Meine Probleme:
- Können zwei Programme einen COM-Port benutzen?
- Gibt es inzwischen mal funktionierende Beispiele zu Qextserialport 
(immer wenn ich dazu was suche finde ich nur Posts mit Fehlern, 
Problemen etc. kein Funktionierendes Beispiel)

Meine Wunschlösung:
- Einen Treiber/Programm, der einen COM-Port und einen UDP-Socket 
emuliert. Die Software benutzt also den emulierten COM-Port, der dann 
1:1 vom Treiber an den echten COM-Port des Geräts durchgeschleift wird, 
gleichzeitig kann ich aber über UDP dem Treiber Datenpakete schicken, 
welche in den Datenstrom an freier Stelle eingefügt werden, und 
andersrum schickt er mir auch die Antworten des Geräts per UDP. Das 
hätte den Vorteil das ich die ganze RS232 Schnittstelle über UDP-Sockets 
abhandle, spare mir also den Qextserialport krams.

Ich meine von so einem Programm mal gehört zu haben, finde aber nichts 
vergleichbares (natürlich Freeware).
Kennt von euch einer was vergleichbares?

Danke für jede Hilfe!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Opa schrieb:
> Können zwei Programme einen COM-Port benutzen?

Nein, wie soll das gehen?

Opa schrieb:
> Gibt es inzwischen mal funktionierende Beispiele zu Qextserialport
> (immer wenn ich dazu was suche finde ich nur Posts mit Fehlern,
> Problemen etc. kein Funktionierendes Beispiel)

Beiss dich durch die API, debugge auftretende Probleme und "Be the 
first" ;-)

Opa schrieb:
> Meine Wunschlösung

Mit TCP könntet du folgendes nutzen: http://com0com.sourceforge.net/ mit 
hum4com kannst du wohl eine Serielle auch mehreren Applikationen 
bereitstellen, das das gut geht musst du dann aber selber sicherstellen.

: Bearbeitet durch User
von Seano L. (Gast)


Lesenswert?

> Nein, wie soll das gehen?
man Warteschlange

von imonbln (Gast)


Lesenswert?

Opa schrieb:
> Ich meine von so einem Programm mal gehört zu haben, finde aber nichts
> vergleichbares (natürlich Freeware).
> Kennt von euch einer was vergleichbares?

dass Klingt nach netcat, damit kann man udp und tcp machen.
Quick & dirty via tcp.

nc -t -l -p port  < /dev/ttyS0 > /dev/ttyS0

wegen des udp musst du ein wenig Forschen.

von klingelmann (Gast)


Lesenswert?

Virtual Serial Ports Emulator (VSP):
http://www.heise.de/download/virtual-serial-ports-emulator-1171790.html
32bit Version ist kostenlos

Oder Virtual Serial Port von Eltima: 
http://www.eltima.com/de/products/vspdxp/
kostet ein bischen.

Beide können genau das was du möchtest und noch mehr. Setup etwas 
kniffelig, aber funktionieren beide.

von Opa (Gast)


Lesenswert?

Soweit schon mal krasses Danke an alle!

Hab mal kurz die Websites durchgeguckt sind diverse die versprechen zu 
tun was ich will, wird dann nächste Woche getestet.

von Opa (Gast)


Lesenswert?

Ich habe jetzt zum "Virtual Serial Ports Emulator (VSP)" gegriffen, in 
der 32bit Version (läuft aber auf einem 64bit Rechner).

Glücklicherweise musste ich beim Updaten auf die aktuelle QT-Version 
feststellen, das QTSerialport nun zu den Standard-Klassen gehört 
(QT5.1.1), die implementierung anhand eines Beispiels war vollkommen 
unkompliziert.

Aaaaaaaaaaaaaaber:
Die Virtuellen Ports werden nicht im Gerätemanager angezeigt, auch mein 
Terminal-Programm findet den virtuellen Port nicht. Was aber 
funktioniert ist mein c++ (QT)-Programm, wenn ich dort einfach den 
Portnamen des virtuellen Ports angebe, funktioniert das ganze.

Jemand eine Idee?

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.