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!
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.
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.
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
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...
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.
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
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?
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.
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?
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.
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!
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.
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.