Forum: Mikrocontroller und Digitale Elektronik XPort: serieller Tunnel zu verschiedenen anderen XPorts


von rainer (Gast)


Lesenswert?

Hallo Zusammen,

ich habe einen XPort, der via Router mit einem PC und mehreren anderen 
XPorts verbunden ist. Ich benötige eine seielle Kommunkation des PC mit 
dem XPort. Dazu installiere ich einen virtuellen COM-Port auf dem PC und 
los geht's. Soweit so gut!
Nun möchte ich aber auch, das der XPort auch mit seinen anderen Kollegen 
gelegentlich seriell kommuniziert (notfalls auch nur in eine Richtung - 
nämlich zu den anderen hin)! Weiß jemand ob das geht und falls ja, wie? 
Bin für jeden Tip dankbar!

von Hans (Gast)


Lesenswert?

Warum benötigst Du mehrere XPORTs?! Wieso tut es nicht nur einer?!

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Soweit ich mich erinnere, kann man den XPort in Java programmieren ... 
was wohl auch nötig ist, wenn er selber aktiv werden soll.
Normalerweise ist das ja ein passiver Server, d.h. ein Client baut eine 
TCP-Verbindung auf und sendet etwas. Das wird zur seriellen Verbindung 
und dem daran hängenden MC durchgereicht, der auch antworten kann, 
solange die Verbindung noch steht. Wenn der Client die Verbindung kappt 
ist Ruhe ...

Frank

von rainer (Gast)


Lesenswert?

Hans schrieb:
> Warum benötigst Du mehrere XPORTs?! Wieso tut es nicht nur einer?!
weil mehrere Geräte vom PC aus gesteuert werden sollen und eines davon 
zusätzlich bestimmte Zuständes des Systems an die anderen weiterreichen 
soll, damit diese darauf reagieren können...

Frank Esselbach schrieb:
> Wenn der Client die Verbindung kappt
> ist Ruhe ...
Ich habe mal was von "UDP Broadcast" gehört - geht's vielleicht damit: 
ein XPort sendet einfach an alles was am Router hängt?!? quasi: jeder 
hört was irgendein anderer sendet...

von Hans (Gast)


Lesenswert?

Das wollte ich meinen. Die XPorts können ja über Ethernet kommunizieren. 
UDP Broadcasts sind eine Möglichkeit. Ansonsten bieten Sie auch den 
UDP-Mode 0. Dieser ist von Lantronix nicht dokumentiert, bietet aber die 
Möglichkeit, gezielt udp Pakete an unterschiedliche Empfänger zu senden. 
Dies ist dadurch möglich, dass man in Mode 0 das Startbyte (0x02), dann 
vier Byte IP und zwei Byte Länge des Datenpaketes voranstellt. Im 
Gegenzug wird ein solcher Header auch eintreffenden Paketen 
vorangestellt.
Wieso Lantronix das nicht dokumentiert ist mir schleierhaft.

von Andy H. (vinculum) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hans schrieb:
> Dies ist dadurch möglich, dass man in Mode 0 das Startbyte (0x02), dann
> vier Byte IP und zwei Byte Länge des Datenpaketes voranstellt. Im
> Gegenzug wird ein solcher Header auch eintreffenden Paketen
> vorangestellt.
> Wieso Lantronix das nicht dokumentiert ist mir schleierhaft.

Mir auch. Der ganz UDP Kram ist nicht dokumentiert, macht es aber 
besoners einfach. Ist der Device Address Table dafür nicht auch 
irgendwie nutzbar? Der Rest funktioniert bei mir wie im Bild.

von rainer (Gast)


Lesenswert?

Ah ja - vielen Dank schon mal!

Hans schrieb:
> dass man in Mode 0 das Startbyte (0x02), dann
> vier Byte IP und zwei Byte Länge des Datenpaketes voranstellt. Im
> Gegenzug wird ein solcher Header auch eintreffenden Paketen
> vorangestellt.

Wenn ich das richtig verstehe bedeutet das, falls ich vier XPorts eine 
Nachricht schicken mnöchte, muß ich diese 4 mal an die entsprechenden 
Adressen senden und auf der Gegenseite dann die 6 hinzugefügten Bytes 
(IP + Länge) wieder aus der seriellen Zeichenkette rausfiltern. Und für 
die Antworten der 4 XPorts gilt genau dasselbe...

Andy H. schrieb:
> Der Rest funktioniert bei mir wie im Bild.

Da ich im Bereich Netzwerk TCP/IP bzw. UDP nicht so bewandert bin, hätte 
ich gerne gewußt, was die im Bild gezeigten Adressen und Ports 
eigentlich bedeuten. Die Adresse ist der Host, der angesprochen wird, 
wenn man keine IP + Länge voranstellt?!? Ich würde hier erwarten, dass 
Die IP + Länge immer(!) angegeben werden muß... Und was bedeuten die 
Ports - warum gerade 8801?!?

Noch etwas zur Hostverbindung: Ich habe mal UDP eingestellt und da hat 
der virtuelle COM-Port den XPort nicht mehr erreicht. Auch der 
device-manager schien nicht mehr zu funktionieren... Kann ich den 
virtuellen COM-Port auf dem PC irgendwie weiter nutzen, falls ich den 
XPort im UDP-Mode 02 betreibe?

von rainer (Gast)


Lesenswert?

rainer schrieb:
> falls ich den
> XPort im UDP-Mode 02 betreibe?

Korrektur: es muss natürlich Mode 0 heißen - das Startbyte ist 0x02!

rainer schrieb:
> dann die 6 hinzugefügten Bytes
> (IP + Länge) wieder aus der seriellen Zeichenkette rausfiltern.

Korrektur: dann die 7 hinzugefügten Bytes (Startbyte + IP + Länge)...

P.S.: eine Möglichkeit, dass nur einmal gesendet wird und alle empfangen 
diese eine Sendung gibt es wohl nicht?

von atomi (Gast)


Lesenswert?

Hans schrieb:
> UDP Broadcasts sind eine Möglichkeit

UDP Broadcast würde mich auch interessieren! Wie genau funktioniert das 
eigentlich bzw. was man da einstellen?

von Andy H. (vinculum) Benutzerseite


Lesenswert?

atomi schrieb:
> UDP Broadcast würde mich auch interessieren! Wie genau funktioniert das
> eigentlich bzw. was man da einstellen?

Eigentlich müsste es reichen als Zieladresse aaa.bbb.ccc.255 anzugeben. 
Manche router und manche switches lassen das aber nicht durch.

von rainer (Gast)


Lesenswert?

Andy H. schrieb:
> Eigentlich müsste es reichen als Zieladresse aaa.bbb.ccc.255 anzugeben.

Meinst Du, ich nehme als Adresse in der Erweiteruzng (die oben 
beschriebenen 7 Bytes mit Datagrammtyp: 0x00) der seriellen Daten 
einfach aaa.bbb.ccc.255 als Adresse?

Oder geb' ich in der Maseke Datagrammtyp 01 und ind der Adresstabelle 
unten dann bei 1. aaa.bbb.ccc.255 ein.

Local Port  Remote Port  Remote Host usw. was gehört dahin, oder kann 
man das schlicht vergessen?

von Andy H. (vinculum) Benutzerseite


Lesenswert?

Protocol - UDP
Datagram Type 01
Accept incoming = YES (Daten empfangen =JA)
Local Port = 12345 (Der Port auf dem Daten empfangen werden)
Remote Port = 12345 (Der Port an den Daten gesendet werden)
Remote Host = 123.456.789.255 (Broadcast-Adresse)

Den einzelnen Xports vergibtst du dann Adressen im Bereich
123.456.789.1
...2
...3
usw.
Das machst Du im Menüpunkt "Server" bei IP-Address. Mske 255.255.255.0
Gateway ist egal, solange kein Router eingebunden ist.

So müsste es klappen meine ich

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

irgendwie geht das alles am Thema vorbei - TCP,UDP,Broadcast,Port,Router 
ist völlig egal, solang man nicht den XPort dazu veranlasst, was zu 
senden, das tut er nämlich von sich aus nicht.

Der angeschlossene µC muss dazu Daten über die serielle Schnittstelle an 
den XPort geben, und dabei können auch Adresse, Port usw. eingestellt 
werden, d.h. der µC kann Verbindung aufnehmen wohin er will, nicht der 
XPort. Es sei denn, man programmiert ein Linux-Programm, aber der XPort 
weiss ja von nichts.

Gruss Reinhard

von rainer (Gast)


Lesenswert?

Hallo Reinhard,

klar - der XPort macht von selbst nichts. Deshalb hier nochmal eine 
Klarstellung:

Ich möchte einfach, das der MC dem XPort über die serielle Leitung Daten 
sendet und der XPort daraufhin dieses Daten an alle anderen 
angeschlossenen XPorts und den PC empfangenweiterleitet. Die empfangenen 
XPorts leiten diese Daten wiederum seriell an einen anderen MC weiter.

Ich möchte nicht, dass die Daten immer nur an einen bestimmten Gegenüber 
weitergeleitet werden. Im besten Fall kann man irgendwie über die 
serielle Schnittstelle des XPorts steuern, wohin die Daten geschickt 
werden und ob sie von allen oder nur von einem XPort (bzw. PC) empfangen 
wedern.

Außerdem sollte im Idealfall auch der PC etwas losschicken können, was 
entweder von allen XPorts oder auch nur von einen speziellen XPort 
empfangen wird - je nachdem was der PC gerade möchte...

von Reinhard Kern (Gast)


Lesenswert?

rainer schrieb:
> Ich möchte einfach, das der MC dem XPort über die serielle Leitung Daten
> sendet und der XPort daraufhin dieses Daten an alle anderen
> angeschlossenen XPorts und den PC empfangenweiterleitet.

Hallo,

das ist eben falsch gedacht (auch ohne XPort). Wenn der MC an 5 andere 
XPorts und an den PC Daten senden soll, dann muss er nacheinander 6 
Verbindungen aufbauen und die Daten senden. Alles andere wie Broadcast 
führt bloss in die Irre (und geht vom MC aus wahrscheinlich garnicht).

Am PC das Gleiche: entweder hast du für obige 6 MCs 6 virtuelle Comports 
(man kann ein solches Port nur mit einer IP-Adresse einrichten) oder du 
baust gleich selbst 6 TCP-Verbindungen nacheinander auf. Dann hast du 
auch Verbindungen mit Fehlersicherung.

Am besten denkst du dir erst mal die XPorts weg und betrachtest das 
Ganze, als ob es normale V24-Verbindungen wären.

Gruss Reinhard

von rainer (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Alles andere wie Broadcast
> führt bloss in die Irre (und geht vom MC aus wahrscheinlich garnicht).

Hallo Reihard,

aber was soll dann dieses Broadcast überhaupt und warum wurde es hier so 
detailiert beschrieben, wenn sowieso nicht funktioniert?!?

Gruß
rainer

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.