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