Forum: Mikrocontroller und Digitale Elektronik XPORT (XPORT-AR) Frage


von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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
Socket s = new Socket("<ip des xport>", 10001);
2
OutputStream out = s.getOutputStream();
3
out.write("Hallo\r\n");
4
InputStream in = s.getInputStream();
5
int byte = 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.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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?

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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

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.