Forum: PC-Programmierung Serial Bridge


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

ich suche möglichst eine fertige und kostenlose (Demo reicht) Software, 
die 2 COM Ports in Windows paart.

Habe also an einem USB Port ein USB RS232 Adapter, und am anderen USB 
Port auch einen

Was von USB_A kommt, soll an USB_B gesendet werden und umgekehrt.

Es soll so wirken, als würden beide Geräte direkt miteinander verbunden 
sein, und kein PC dazwischen hängen.

Zur Not wäre ich auch mit einer VB.net Lösung zufrieden

Kennt da jemand was?
Danke!

von Chregu (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Nullmodemkabel.

Bitte.

von Bastler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Warum dann überhaupt einen Rechner dazwischen schalten?

Sollen die Daten nur geloggt oder auch live verändert werden?

von Christian R. (supachris)


Bewertung
0 lesenswert
nicht lesenswert

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Bewertung
-1 lesenswert
nicht lesenswert
Christian R. schrieb:
> Com0Com

Nö, com0com bewirkt genau das Gegenteil, d.h. zwei Applikationen auf 
einem PC können ohne physikalische Schnittstellen miteinander verbunden 
werden.

von Christian R. (supachris)


Bewertung
0 lesenswert
nicht lesenswert
Das geht auch mit Com0Com und zwar mit der Komponente "hub4com".
http://com0com.sourceforge.net/hub4com/ReadMe.txt

von Michael (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Bastler schrieb:
> Warum dann überhaupt einen Rechner dazwischen schalten?

Bidirektionale Kommunikation, keine normale RS232. Anders kann man nicht 
die Daten von beiden Teilnehmern unterscheiden.

Danke. Com0Com schaue ich mir mal an.

von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Bidirektionale Kommunikation, keine normale RS232.

Das nennt sich halbduplex.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Bidirektionale Kommunikation, keine normale RS232. Anders kann man nicht
> die Daten von beiden Teilnehmern unterscheiden.

Es gibt grundsätzlich 2 Möglichkeiten für die Analyse: entweder man 
leitet wie du den Datenverkehr über einen PC o.ä., oder man lauscht nur 
passiv mit. Das würde ich vorziehen, weil so der Datenstrom garantiert 
unbeeinflusst ist, was Daten und Timing angeht, sonst handelt man sich 
eine zusätzliche Fehlerquelle ein, die man im Zweifelsfall aufwendig 
untersuchen muss (wobei die Frage erhebt womit). Das gilt besonders wenn 
man sich die Bridge selbst zusammengebastelt hat.

Übrigens gibt es bei RS232 getrennte Leitungen für TxD und RxD, man kann 
also immer unterscheiden von wem was kommt. Etwas anderes wäre das bei 
RS485, aber das war ja nicht gefragt.

Georg

von c-hater (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Michael schrieb:

> Bidirektionale Kommunikation, keine normale RS232.

"RS232" ist normalerweise bidirektional. Es gibt schlicht zwei zwei 
Leitungen für die Daten, eine für die Richtung A->B und eine für die 
Richtung B->A.

> Anders kann man nicht
> die Daten von beiden Teilnehmern unterscheiden.

Das ist simpel. Man kann es allein daran festmachen, über welche Strippe 
die Daten laufen.

> Danke. Com0Com schaue ich mir mal an.

Das wird dir nix nützen. Dein Ziel ist doch wohl nur: Den Datenaustausch 
zwischen den beiden Peers zu belauschen.

Das ist trivial. Wer's sendet, kannst du einfach über den Port 
feststellen, über den es rein kommt, lesen kannst du es, indem du halt 
einfach die Lesefunktion des Ports benutzt.

Alles, was noch zu tun bleibt: Das Gelesene an den anderen Port weiter 
zu senden, damit der eigentliche Peer es auch mitbekommt.

Alternativ könnte man die beiden auch direkt per Nullmodemkabel 
verbinden und dann über zwei Ports des PCs mitlauschen, indem man halt 
die beiden Leitungen der Nullmodem-Kommunikation an je ein RX der beiden 
Ports legt, die man zum Mitlauschen benutzen möchte.

Wenn das alles für dich zu hoch ist->Lerne erstmal, wie diese olle 
serielle Kommunikation eigentlich funktioniert...

von Heinz (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Linux: socat

von Zeinh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Heinz schrieb:
> Linux: socat

Unix Utils ported to Windows
https://sourceforge.net/projects/unix-utils/files/socat/1.7.3.2/


hier, eher overkill.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Zur Erkärung. Es sind zwei RS485 Busteilnehmer. Kein RX und TX sondern A 
und B
bei denen eine ständige Kommunikation läuft. Mal eben sehen wer da 
sendet ist nicht möglich!

Andreas B. schrieb:
> Windows: https://freevirtualserialports.com/

Hab ich mir angesehen, sah vielversprechend aus. Ist aber meiner Meinung 
nach nutzlos. Man kann nur virtuelle Ports brücken. Das ist nicht 
besonders hilfreich, wenn man die Daten von 2 USB Serial Adaptern an 
einander schicken möchte.

Oder ich mach irgendwas falsch.

Zeinh schrieb:
> Unix Utils ported to Windows
> https://sourceforge.net/projects/unix-utils/files/socat/1.7.3.2/

Das schau ich mir als nächstes an. Danke.

von georg (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Michael schrieb:
> Kein RX und TX sondern A
> und B
> bei denen eine ständige Kommunikation läuft. Mal eben sehen wer da
> sendet ist nicht möglich!

Aha - dann willst du also mit deiner Bridge alles was auf A/B erscheint, 
weiterleiten an A/B??

Georg

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:

> Zur Erkärung. Es sind zwei RS485 Busteilnehmer. Kein RX und TX sondern A
> und B

Also half-duplex. Da gibt es bei RS485 immer ein nettes zusätzliches 
Bit, welches die Kommunikationsrichtung der Transceiver steuert. Und 
zwar auf beiden Seiten. Man kann also eines dieser beiden Signale 
abgreifen und als Kriterium für die Richtung des Datenflusses verwenden. 
Sinnvoll wäre es, den Master der Kommunikation diesbezüglich anzuzapfen, 
dann funktioniert es nämlich auch mit mehreren Clients.

Der Rest ist easy, man braucht dafür nur eine COM-Schnittstelle zum 
Mitlauschen, weil hier garantiert ist, dass zu jeder beliebigen Zeit die 
Daten nur in einer Richtung fließen, entweder vom Master zu irgendeinem 
Client oder halt von irgendeinem Client zum Master.

Also: Mitlauschen über einen COM-Port+RS485-Wandler, der dauerhaft auf 
"Empfang" geschaltet ist. Und von einer der beiden Peers das 
Steuersignal für die Datenrichtung abgreifen und auf einen der vier 
möglichen Steuer-Eingänge des Spy-COM-Ports legen. Dann in der 
Empfangsroutine des Spions eben dieses Signal auswerten und die 
Datenströme nach dessen Zustand einsortieren.

Wo ist jetzt dein Problem? Kannst du nicht löten oder nicht 
programmieren oder kannst du beides nicht?

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Wo ist jetzt dein Problem? Kannst du nicht löten oder nicht
> programmieren oder kannst du beides nicht?

Gewiss würde das gehen, aber leider sind beide Gerätschaften 
baumustergeprüft... zumindest löten fällt (offiziell) damit weg, da es 
sich nicht um ausrangierte HW handelt.

Es gibt fertige Software die Seriell auf Ethernet kann... das könnte man 
natürlich zwischen Host und einer VM nutzen und Ein + Ausgehend 
entsprechend aufzeichnen.

Wenn es wirklich keine einfach Möglichkeit gibt, die beiden USB Adapter 
zu "koppeln", und ich an der Hardware so wenig wie möglich machen 
soll/möchte/darf, ist die Seriell<-> Ethernet m.E. nach, die am 
wenigsten aufwendige Lösung.

Vielleicht hat ja sonst noch jemand Vorschläge.

von M.A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Also: Mitlauschen über einen COM-Port+RS485-Wandler, der dauerhaft auf
> "Empfang" geschaltet ist. Und von einer der beiden Peers das
> Steuersignal für die Datenrichtung abgreifen und auf einen der vier
> möglichen Steuer-Eingänge des Spy-COM-Ports legen.

Und wo legst du das angegriffene Signal an? A oder B? Oder braucht man 
einen besonderen Wandler? Die, die ich kenne, haben nämlich nur A+B und 
eventuell 5V sowie gnd)


Michael schrieb:
> Es gibt fertige Software die Seriell auf Ethernet kann.

Serielles über Internet... Geht das denn halbwegs in Echtzeit wenn da 
permanent Verkehr auf der Leitung herrscht, ohne das irgendwas verloren 
geht oder zu verzögert ankommt?

von M.A. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: du könntest den master senden lassen und eventuell dann Mal 
selbst weitersenden... vielleicht kommst du so weiter. Je nach dem wie 
komplex der Austausch ist.

von Zeinh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:

>
> Vielleicht hat ja sonst noch jemand Vorschläg



sollte sich doch unter win nicht sehr unterscheiden

https://windelbouwman.wordpress.com/2014/06/12/linking-two-serial-ports-with-socat/

socat -d -d  /dev/ttyUSB0,raw,echo=0,crnl,b115200\
/dev/ttyUSB1,raw,echo=0,crnl,b115200


---
https://stackoverflow.com/questions/33811013/socat-two-serial-port-together


socat -u -u pty,raw,echo=0,link=/dev/ttyS20 \ 
pty,raw,echo=0,link=/dev/ttyS21

von c-hater (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Michael schrieb:

> Gewiss würde das gehen, aber leider sind beide Gerätschaften
> baumustergeprüft... zumindest löten fällt (offiziell) damit weg, da es
> sich nicht um ausrangierte HW handelt.

Schwachsinn. Den einen Lötpunkt sieht kein Mensch, wenn die Strippe 
wieder abgelötet ist. Das ist, als wäre niemals etwas gewesen.

> Es gibt fertige Software die Seriell auf Ethernet kann...

Was soll das bringen? Du hast dann immer noch nicht die 
Richtungsinformation, die für eine Analyse des Traffics einfach 
unverzichtbar ist.

Der Medienwandler kann eigentlich nur eins tun: jedes eingehende Byte 
(egal aus welcher Richtung) per Broadcast wieder an alle Peers zu 
senden. Die Peers wissen, was sie von dem universellen Gelaber jeweils 
ignorieren können. Du aber weißt das nicht, denn du kennst das Protokoll 
nicht, sondern willst es erst herausfinden...

D.h.: die Idee bringt dich deinem Ziel keinen Schritt näher.

Ein wenig logisches Denken bitte!

von Toby P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Zur Erkärung. Es sind zwei RS485 Busteilnehmer. Kein RX und TX sondern A
> und B
> bei denen eine ständige Kommunikation läuft. Mal eben sehen wer da
> sendet ist nicht möglich!

Da gibt es keine Möglichkeit das per Software zu lösen (ausser evtl. per 
Laufzeitanalyse). Die siht ja nur Pegel und weiß nicht wo die her 
kommen.

Evtl. einen Widerstand einschleifen und per OP (bzw Komparator) die 
Spannung abgreifen und verstärken.

von Michael (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Also mal als Abschluss an alle...
beide Geräte mit USB RS485 Wandler per USB an PC

Eltima Virtual com Port Serial Tools PRO (geht nur mit Pro)

Beide Ports an denen die beiden Geräte hängen über "Merge" miteinander 
verbinden. Jetzt komunizieren beide Geräte ganz normal miteinander, nur 
eben über den PC.

Einen der beiden Ports wahlweise ebenfalls mit Eltima oder jedem anderen 
Serial Monitor Programm loggen.

Man sieht dann Send und Recieve.
Dadurch kann klar unterschieden werden, was von welcher Seite kommt.

Hat einwandfrei funktioniert, ohne nerviges löten etc. Sollte mal jemand 
was ähnliches brauchen, ist das mit am wenigsten Aufwand machbar.
Keine zusätzliche Hardware ,außer spottbillige USB RS485 Wandler.
Dennoch vielen Dank für eure Ideen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.