Guten Abend! Ich will in nächster Zeit ein kleines Projekt erledigen, und schwanke derzeit, ob ich den XPort XPort Direct (den "kleinen" XPort) oder den "normalen" XPort dafür einsetzen soll. Folgende Aufgabenstellung: Meine Platine läuft die ganze Zeit über im StandBy, solang bis irgendwann über eine RS232 ein Schwall Daten reinkommt. Datenmenge: Maximal 1kiB. Diese Daten werden dann über HTTP-GET oder HTTP-POST (eher letzteres, bin mir momentan nicht sicher ob über GET diese Datenmenge übertragbar ist) an einen Host im Internet übertragen. Meine derzeitige Planung: Die Daten werden von einem µC entgegengenommen und erstmal gespeichert. Dieser besorgt sich erstmal die IP-Adresse von meinem Webserver (DNS implementiere ich in Software), verpackt die Daten in eine HTTP-Anfrage und schickt es anschließend an meinen Server im Internet. Dabei stellt sich mir folgende Frage: Hätte der XPort bei meiner hier beschriebenen Aufgabenstellung gegenüber dem XPort Direct irgendwelche Vorteile? Bietet er irgendwelche Funktionen, die mir Arbeit abnehmen könnte? DNS bietet er (soweit ich es gesehen habe) nicht. Der HTTP-Server hilft mir denke ich auch nicht viel, da ich ja vielmehr einen HTTP-Client bräuchte. Wenn ich mir die Doku vom XPort so ansehe, sieht es für mich ja eher so aus, als wäre er eher für die Steuerung meines Embedded-Systems AUS dem (lokalen; weil kein DNS) Ethernet zugeschnitten. Bei mir wärs ja quasi genau das Gegenteil. Liebe Grüße und herzlichen Dank für eure Hilfe ;) - Manuel W.
Guten Morgen! Ist es sehr unhöflich wenn ich den Thread wieder hoch hole? Mich wundert es, dass keiner Antwortet. Der XPort ist ja nun nicht gerade unbekannt.
Hallo, an sich ist ja zwischen XPORT und XPORT direct kein allzu großer Unterschied. Der Direct hat allerdings kein Web-Interface, wenn ich mich richtig erinnere. Allerdings: Wie möchtest Du denn die HTTP-Anfrage an das Internet senden? Kann der XPORT nicht nur Verbindungen entgegennehmen, und keine (als Client) herstellen?!
>Der XPort ist ja nun nicht gerade unbekannt Das vielleicht nicht, aber der Unterschied zwischen den beiden wohl. Ich kenne nur den XPORT, dass es davon noch andere gibt (ausser der RS485-Variante), hätte ich nicht gedacht. >Kann der XPORT nicht nur Verbindungen entgegennehmen, und keine >(als Client) herstellen?! Es sollte möglich sein, über die IP an einen bestimmten Port eine Verbindung zu anderen Webdevices herzustellen. So funktioniert es zumindest mit der Telnet-Verbindung zwischen zwei XPORT. (Oder ging das gar nicht?) Da er auch UDPs verschickt, sollte es möglich sein... Allerdings müsste man dann die Kommunikation (HTTP-Request falls nötig...) selber organisieren. Hier im Forum gab es mal ein Projekt, bei dem der XPORT als Webserver benutzt wurde, aber nicht den integrierten benutzt hat, sondern die Website durch einen AVR erzeugt wurde. Eigentlich müsste es gehen...
> Es sollte möglich sein, über die IP an einen bestimmten Port eine > Verbindung zu anderen Webdevices herzustellen. So funktioniert es > zumindest mit der Telnet-Verbindung zwischen zwei XPORT. > (Oder ging das gar nicht?) Doch, das geht schon, eine reine Datenstromverbindung (also quasi ein Tunnel) zwischen 2 XPORTs... Aber das ist auch schon alles! Funktioniert afaik allerdings auf UDP-Basis. Ansonsten kann man direkt vom XPORT aus (soweit mir bekannt) keine (!) Verbindungen als Client aufbauen. Wie denn auch, die Daten vom RS232 werden ja einfach nur 1:1 durchgereicht, wo sollte man denn überhaupt ein Kommando (à la "TCP-Connect nach IP a.b.c.d Port x") los werden?! > Hier im Forum gab es mal ein Projekt, bei dem der XPORT als Webserver > benutzt wurde, aber nicht den integrierten benutzt hat, sondern die > Website durch einen AVR erzeugt wurde. Das wiederum ist ja gar kein Problem. Dabei wird ja ein Connect zu (!) dem XPORT hergestellt, der dann als Server antwortet. Da der XPORT die Daten vom seriellen Port einfach 1:1 durchreicht, kann man natürlich ohne Weiteres einen HTTP-Server auf dem uC implementieren... michael
>Funktioniert afaik allerdings auf UDP-Basis.
Das würde ich nicht unterschreiben...
UDP ist ja "Fire and forget", ohne Rückmeldung wie bei TCP/IP.
Mal aus dem Wikipedia kopiert:
"Verbindungsaufbau und -abbau
Ein Webserver, der seinen Dienst anbietet, generiert einen Endpunkt mit
der Portnummer und seiner IP-Adresse. Dies wird als passive open oder
auch als listen bezeichnet.
Will ein Client eine Verbindung aufbauen, generiert er einen eigenen
Endpunkt aus seiner Rechneradresse und einer eigenen, noch freien
Portnummer. Mit Hilfe eines ihm bekannten Ports und der Adresse des
Servers kann dann eine Verbindung aufgebaut werden. Eine TCP-Verbindung
definiert sich immer aus:
Quell-IP-Adresse
Quell-Port
Ziel-IP-Adresse
Ziel-Port
Während der Datenübertragungsphase (active open) sind die Rollen von
Client und Server (aus TCP-Sicht) vollkommen symmetrisch. Insbesondere
kann jeder der beiden beteiligten Rechner einen Verbindungsabbau
einleiten.
Während des Abbaus kann die Gegenseite noch Daten übertragen, die
Verbindung kann also halb-offen sein."
Aus dem XPORT-User Guide:
Seite 10:
"Capabilities:
...
connects devices through a TCP data channel or through a Telnet
connection to computers or another device server..."
Man muß ihm also "nur" einen TCP-Stack an der serielle bereitstellen,
der die Kommunkation mit einem Server aufbaut...
Ich forsche mal weiter.
Naja gut, aber wie soll ich dann dem XPORT sagen, wohin er connecten soll? Wenn er einmal läuft, kann ich ja über RS232 keine Kommandos abgeben. Im Handbuch / Integration Guide, ... steht auch nichts zu dem Thema. Mit dem XPORT AR geht das, klar, da ist ja auch ein RTOS drauf. Das SDK kostet allerdings mehrere 1kEUR...
>Wenn er einmal läuft, kann ich ja über RS232 keine Kommandos abgeben.
Zauberwort ist IMHO "Connect Mode" (Seite 43 im UG).
Stimmt... hab ich irgendwie bisher immer übersehen... Das UG sagt folgendes: Manual Connection Attempts to connect when directed by a command string received from the serial port. The first character of the command string must be a C (ASCII 0x43), and the last character must be either a carriage return (ASCII 0x0D) or a line feed (0x0A). No blanks or space characters may be in the command string. Between the first and last command string characters must be a full or partial destination IP address and may be a destination port number. The IP address must be in standard decimal-dot notation and may be a partial address, representing the least significant 1, 2, or 3 bytes of the remote IP address. The period is required between each pair of IP address numbers. If present, the port number must follow the IP address, must be presented as a decimal number in the range 1-65535, and must be preceded by a forward slash (ASCII 0x2F). The slash separates the IP address and the port number. If you omit the port number from a command string, the internally stored remote port number starts a connection. If a partial IP address is presented in a command string, it is interpreted to be the least significant bytes of the IP address and uses the internally stored remote IP address to provide the most significant bytes of the IP address. If the IP address entered is 0.0.0.0/0, the device server enters Monitor Mode. For example, if the remote IP address already configured in the unit is 129.1.2.3, then an example command string would be C3/7. (This would connect to 129.1.2.3 and port 7.) You may also use a different ending for the connection string. For example, C50.1/23 would connect you to 129.1.50.1 and port 23.
>Stimmt...
Danach muß man doch "nur noch" das HTTP-Request orgnisieren, oder?
(Seit einem Jahr oder noch länger habe ich einen XPORT und bin immer
noch nicht zum "Spielen" gekommen! Grrr...)
Ja, das stimmt... und für ein ganz einfaches HTTP-REQ reicht ja dann eigentlich ein Connect zum Server, auf Port 80 (z.B.), und das senden von "GET /".... Dann liefert der Server die Standardseite (meist index.htm) zurück... michael
Hallo Michael und rahul, falls es noch aktuell ist: Das mit dem HTTP-Request geht einigermassen problemlos, man kann zu jedem beliebigen Serber eine TCP-Verbindung auf Port 80 aufbauen, und ein GET.... absetzen und die Antwort empfangen. Man muss nur im Command-Mode sein und das ganze über die AT-Komandos machen. Und man muss immer IP-Adressen verwenden, d.d. xxx.xxx.xxx.xxx . Soweit kein Problem. Schwieriger wird es, wenn man an www.myserver.de senden will. Dann muss man erst mal einen DNS-Request absetzen. Das DNS-Protokoll scheint nicht allzu kompliziert zu sein, aber man muss man an den DNS-Server ein UDP-Telegramm schicken, das obendrein noch binäre Daten enthält. Und hier sehe ich nicht mehr klar. Problem 1: wie finde ich meinen DNS-Server heraus? Ich habe meinen XPort auf DHCP eingestellt, er bezieht also seine IP-Adresse und das Standardgateway von meinem Router. Ich vermute, dass der Router auch als DNS-Server (oder zumindest als Proxy) fungiert, und würde also dorthin erst mal die DNS-Anfragen schicken. Ganz sicher bin ich mir aber nicht. Die Gateway-Adresse kann (seriell) man aus dem Xport auslesen, wenn man ihn vorübergehend in dem "Monitor-Mode" bringt. Problem 2: Funkrioniert der Verbindungsaufbau auch für UDP-pakete? Und auch für UDP-Pakete, die evtl. binäre Daten enthalten? Bisher erscheint mir das ganze nur für TCP-Verbindungen sinnvoll zu sein (connect -> verbindung wird aufgebaut, Datenübertragung hin und her, pause/+++/ath --> verbindung wird abgebaut) Habt ihr schon Erfahrungen gemacht? Hartmut
Also wenn ich das richtig verstanden habe, muss man nur im Device-Installer unter "Active Connection" dann "Manual Connection" auswählen. Im µC schickt man einmalig das Kommando "C192.168.1.1\n" (irgendeine IP) über den UART an den XPort und damit sollte dann schon eine TCP-Verbindung mit dem Server aufgebaut sein. Will man jetzt eine Seite abfragen braucht man noch ein HTTP-Request der Form "GET /de_DE/de_index.php HTTP/1.1\nHost: 192.168.1.1\n" und sofort sollte die entsprechende Seite am UART ankommen. Leider klappt das bei mir so nicht. Ich bekomme nur eine verstümmeltes Echo meiner Anfrage. Hat jemand eine Ahnung was noch fehlen könnte?
Hallo Leute, ich habe eine frage über der XPort: kann man der XPort als Client benutzen? wenn ja wie kann ich konfiguriert so das er der role des Client übernimmt. Danke Pablo
Hallo, genau das brauche ich auch um einen Wechselrichter abzufragen: ----------- Im µC schickt man einmalig das Kommando "C192.168.1.1\n" (irgendeine IP) über den UART an den XPort und damit sollte dann schon eine TCP-Verbindung mit dem Server aufgebaut sein. ----------- Muss ich dann schicken vom µC aus: Print "C192.168.1.123/10001" Print "meinen Zeichensatz" Ist dann die Verbindung immer noch offen? Muss ich dann wieder Print "D192.168.1.123/10001" schicken um die Verbindung zu schließen um was empfangen zu können? Danke.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.