Hallo,
ich weiß, das Thema XPort wurde schon einige male angesprochen. Leider
finde ich weder in den Datenblättern/"User-Guides" etc. von Lantronix,
noch in alten Threads hier konkrete Antworten auf meine Fragen.
Was ich haben möchte:
Es gibt bereits ein Gerät mit mit einem Mikrocontroller mit
RS232-Schnittstelle. Dieses Gerät möchte ich in ein Netzwerk einbinden
können. Ich möchte dann folgende Funktionen haben:
1) Mit einem beliebigen Browser sollen aktuelle Sensorwerte des Geräts
auf einer HTML-Seite angezeigt werden. Aktuatoren auf Geräteseite sollen
über Buttons in der HTML gesteuert werden können.
2) Das Gerät soll E-Mails mit den aktuellen Daten senden, wenn "gewisse
Ereignisse" eingetreten sind.
Ich "vermute", dass diese beiden Sachen sowohl mit XPort, als auch
XPort-AR möglich sind, weiß aber nicht wie. Macht "man" das mit
Java-Applets? Oder wie geht das?
Was zu genüge im Internet zu finden ist sind Anleitungen, wie man den
XPort als "virtuelle serielle Schnittstelle" verwendet. Das möchte ich
nicht.
Vielleicht hat jemand Tipps/Links zur Hand.
Viele Grüße,
Alex
Ich habe so etwas mal für einen Kunden entworfen, im Prinzip hast du
drei Möglichkeiten (mit dein kleinen XPorts):
a) Ein Java Applett und dann kannst du 1:1 dein eigenes Protokoll
sprechen
b) Der uC kommuniziert direkt mit dem Browser und liefert alle
HTML/JS/CSS Daten aus und der XPORT agiert nur als RS232 zu TCP Gateway
und du implementiert im Prinzip einen keleinen HTTPServer auf dem uC
c) HTML/JS/CSS und Grafiken liegen auf dem XPORT und die Steuerung
geschieht über AJAX, der uC implementiert rudimentäres HTTP sodass du
die Request vom JS entgegenimmst und per JS antwortest.
Bei den Xport AR ist wohl noch mehr möglich, liegt aber bestimmt auch
Preislich etwas höher.
Hallo Läubi,
vielen Dank für deinen sehr konstruktiven Beitrag.
Läubi .. schrieb:> a) Ein Java Applett und dann kannst du 1:1 dein eigenes Protokoll> sprechen
Kannst du das vielleicht etwas näher erläutern? Ich habe noch nie
(bewusst) ein Java-Applet erstellt. Macht man das mit Eclipse? Wie
spreche ich damit die serielle Schnittstelle an? Gibt es dann eine API,
oder wie läuft das?
> b) Der uC kommuniziert direkt mit dem Browser und liefert alle> HTML/JS/CSS Daten aus und der XPORT agiert nur als RS232 zu TCP Gateway> und du implementiert im Prinzip einen keleinen HTTPServer auf dem uC
Das habe ich hier im Forum auch schon gesehen. Das kann ich mir auch gut
vorstellen, dass das läuft. Dann frage ich mich jedoch: Warum soll ich
einen teuren XPort dafür benutzten. Von TI gibt es das Stellaris-Modul
(ohne integrierten Webserver). Das kostet nur die Hälfte des XPorts.
Außerdem wollte ich das nach Möglichkeit vermeiden, auch wenn es
wahrscheinlich das für mich einfachste ist, da ich dazu quasi nichts
neues lernen muss.
> c) HTML/JS/CSS und Grafiken liegen auf dem XPORT und die Steuerung> geschieht über AJAX, der uC implementiert rudimentäres HTTP sodass du> die Request vom JS entgegenimmst und per JS antwortest.
AJAX in der Webprogrammierung habe ich schon benutzt. Jedoch verstehe
ich noch nicht, wie ich dann darüber auf die RS232 zugreifen können
soll... Wie schaffe ich es, dass der XPort die HTML-Seite aus seinem
integrierten Webserver lädt, den JS-Request aber an den µC durchreicht?
> Bei den Xport AR ist wohl noch mehr möglich, liegt aber bestimmt auch> Preislich etwas höher.
Etwa Faktor 2...
Viele Grüße,
Alex
Alex Bürgel schrieb:> Kannst du das vielleicht etwas näher erläutern? Ich habe noch nie> (bewusst) ein Java-Applet erstellt. Macht man das mit Eclipse?
Im Prinzip reicht dir jede IDE (oder auch die Kommandozeile) welche Java
Code compilieren kann. Zu Appletts selbst findet man auch viele Beispiel
im Netz. Irgendwo gab es auch ein XPORT Spezifisches Beispiel ich finde
es nur auf der Website nun nicht wieder.
Alex Bürgel schrieb:> Wie spreche ich damit die serielle Schnittstelle an?> Gibt es dann eine API, oder wie läuft das?
Auf Javaseite öffnest du einen Socket, alles was du da reinschreibst
landet auf der seriellen Schnittstelle, alles was du auf die Serielle
schreibst landet im Socket.
Alex Bürgel schrieb:> Dann frage ich mich jedoch: Warum soll ich> einen teuren XPort dafür benutzten
Ich kenne jetzt nicht das Stellaris Board, aber der XPORT "kann" noch
eine ganze Menge siehe z.B. UserGuide
(http://www.lantronix.com/pdf/XPort_UG.pdf) und nimmt halt das kanze
TCP/IP Handling, DHCP und solche Späße ab.
Alex Bürgel schrieb:> Jedoch verstehe ich noch nicht, wie ich dann darüber> auf die RS232 zugreifen können soll..
Du stellst einen einfachen Request an die XPORT Adresse, alles was per
TCP gesendet wird landet dann bei dir auf der Seriellen und umgekehrt.
Die Serielle Schnittstell läuft unter einem anderem Port als der interne
Webserver, so kommt sich nix ins Gehege, allerdings musst du dafür
entweder JSONP nutzen oder einen Speziellen Orgin Header mitsenden damit
der Browser dies erlaubt.
Hallo Läubi und Danke nochmal!
> Im Prinzip reicht dir jede IDE (oder auch die Kommandozeile) welche Java> Code compilieren kann. Zu Appletts selbst findet man auch viele Beispiel> im Netz.
Also sind Applets ganze (kompilierte) Programme. Die liegen dann auf dem
Server, werden beim HTTP-Aufruf zum Klienten übertragen und dort
ausgeführt, korrekt?
> Auf Javaseite öffnest du einen Socket, alles was du da reinschreibst> landet auf der seriellen Schnittstelle, alles was du auf die Serielle> schreibst landet im Socket.
Gibt es da fertige Bibliotheken o.ä.? Woher bekomme ich den Zugang
dieses Sockets bzw. wie "heißt" der Socket für RS232 auf dem XPort? Ob
mir Lantronix dazu etwas sagen wird, wenn ich dort anfrage?
> Du stellst einen einfachen Request an die XPORT Adresse, alles was per> TCP gesendet wird landet dann bei dir auf der Seriellen und umgekehrt.> Die Serielle Schnittstell läuft unter einem anderem Port als der interne> Webserver, so kommt sich nix ins Gehege, allerdings musst du dafür> entweder JSONP nutzen oder einen Speziellen Orgin Header mitsenden damit> der Browser dies erlaubt.
In dieses JSONP bzw. Orgin Header muss ich mich dann mal ein bisschen
einlesen. Davon habe ich noch nie etwas gehört.
Viele Grüße,
Alex
Alex Bürgel schrieb:> Gibt es da fertige Bibliotheken o.ä.? Woher bekomme ich den Zugang> dieses Sockets bzw. wie "heißt" der Socket für RS232 auf dem XPort?
Das ganze läuft wie gesagt über Standrad Sockets, da braucht man nix
XPORT spezifisches siehe
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html
Der Code könnte etwa so aussehen
1
Sockets=newSocket("<ip des xport>",10001);
2
OutputStreamout=s.getOutputStream();
3
out.write("Hallo\r\n");
4
InputStreamin=s.getInputStream();
5
intbyte=in.read();
Wie gesagt das ist alles recht XPORT unspezifisch.
Alex Bürgel schrieb:> Also sind Applets ganze (kompilierte) Programme. Die liegen dann> auf dem Server, werden beim HTTP-Aufruf zum Klienten übertragen> und dort ausgeführt, korrekt?
Ja, lies dich am besten etwas bei Google ein und starte mit einem
Beispiel auf einer lokalen Seite. Der Vorteil eines Appletts ist
einfach, dass der Browser den Clientcode mit ausliefert, du kannst aber
auch ein "normales" java, C, C#, ... Programm schreiben, welches eben
über einen Socket mit dem XPort kommuniziert.
Läubi .. schrieb:> Das ganze läuft wie gesagt über Standrad Sockets, da braucht man nix>> XPORT spezifisches siehe>> http://docs.oracle.com/javase/1.4.2/docs/api/java/...
Super, das war die Information, die mir zum Verständnis gefehlt hat.
Vielen Dank. Einzig ob ich Port 10001 verwenden kann ist fraglich. Port
80 wäre besser... der ist im Netzwerk ganz sicher verfügbar...
Viele Grüße,
Alex
Die Ports können in der Konfiguration des XPORTs geändert werden, 80 ist
aber der des internen Webservers, solange das nicht durch einen Firewall
geht sollte der Port 10001 unkritisch sein.
Läubi .. schrieb:> Die Ports können in der Konfiguration des XPORTs geändert werden, 80 ist> aber der des internen Webservers, solange das nicht durch einen Firewall> geht sollte der Port 10001 unkritisch sein.
Wir befinden uns im Netzwerk einer großen Firma mit mehreren Standorten.
Die Lösung soll auch zwischen den Standorten hinweg funktionieren. Ich
weiß nicht, welche Ports hier wie freigegeben sind... kann man das
irgendwie testen oder muss ich mich dafür an die IT-Abteilung wenden?
Hallo zusammen.
Vielen Dank für die vorherigen Tipps. Das System läuft nun stabil.
Ich krame den Thread trotzdem noch mal heraus, da es noch eine Frage
gibt:
Hat vielleicht jemand eine Idee, wie man eine txt-Datei, die im
Dateisystem des XPort-ARs liegt byte für byte auslesen kann und sie über
die serielle Schnittstelle schicken kann?
Danke & Gruß,
Alex