www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lantronix XPORT und Hyperterminal


Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde gern einen Lantronix XPORT mit einem MC verbunden.
Als Trockenübung wollte ich einen XPORT seriell mit dem Hyperterminal
verbinden. Um über das Netzwerk zuzugreifen startete ich einen
Webbrowser. Nun sendete ich wacker eine völlig simple html seite vom
Hyperterminal zum XPORT  (Textmodus), in der Hoffnung die Seite im
Browser zu erkennen. Es tut sich aber nichts im Browser.
Als remote Port habe ich 10002 gewählt und den Browser mit <ip>:10002
gestartet.
Wer hatte schon einmal Erfolg mit dieser Konfiguration, oder mit einer
MC Kopplung ?

Mein Ziel ist es, mit dem MC über die rs232 permanent eine einfache
html Seite zu generieren und hier Meßdaten zu übertragen.
Das wäre eine schöne Sache; wenns laufen würde !

Danke vorab für Euren "Input" !!

d.s.

Autor: t.l. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde mich auch brennend interessieren

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Die Web Seite muß noch in ein cob File gepackt werden. Dieses mußt dann
dann übertragen. Über die RS232 wird das aber nicht gehen, soviel ich
weiß.

Schau mal hier.

http://ltxfaq.custhelp.com/cgi-bin/ltxfaq.cfg/php/...

Ist alles erklärt

web2cob
http://www.datanab.com/docs/barionet/tools/v146/

Messdaten kannst du über Java einbinden.

MFG
Dieter

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dietmar

In dieser Richtung (WEB -> XPort) habe ich es noch nicht versucht, es
sollte aber prinzipiell gehen, wenn man die HTML-Seite mit dem
entsprechenden Header

HTTP/1.0 200 OK

gefolgt von 2xCRLF und der HTML-Seite sendet, sobald der
Browser-Request kommt. Ich verwende den XPort genau anders herum, u.a.
um HTML-Seiten aus dem Web zu laden. Diesen Modus kann man auch
verwenden, um Daten mit PUT oder POST hochzuladen bzw. an ein
CGI-Skript zu senden, welches sie dann auswertet und den Benutzern
anzeigt. Dafür den XPort in den Modemmodus schalten, dann kann man auf
dem Mikroprozessor einfach mit
ATDT192.168.0.1/80\r
verbinden (nicht CRLF, nur CR senden!), dann die entsprechenden
Befehle, etwa
GET / HTTP/1.0\r\nHost: 192.168.0.1\r\n\r\n

Das funktioniert hier einwandfrei. Allzu hohe Geschwindigkeiten liegen
im Internet leider nicht drin, weil eine Verbindung nur 2kByte für den
Empfangspuffer verwendet. Die Verbindung trennt man mit 1 Sekunde
Pause, +++, 1 Sekunde Pause, ATH genau wie beim Modem.

Gruss
Christian

Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Chris,

habe gerade noch ein wenig herumgespielt...
Meine ersten Versuche liefen nicht, weil ich einfach nicht die
richtigen HTTP-Protokoll-Sequenzen eingehalten habe.
Jetzt habe ich aber schon einen einfachen Text im Browser darstellen
können. Über die rs232 sendete ich dazu:

Content-Type: text/html
Connection: Keep-Alive
Last-Modified: Mon, 17 Oct 2005 19:03:03 GMT
Content-Length: 62

<html>
<body>
Hallo Welt !!!!!!!!!!!!111
</body>
</html>

Das habe ich über das Hyperterminal schnell als Textdatei
rübergeschoben nachdem ich im Browser eine Verbindung zum Lantronix via
http://ip:portnummer aufgebaut habe.
(etwas unklar ist mir noch der korrekte Einsatz von CR/LF (0Dh/0Ah,
auch scheint die korrekte Content Length wichtig zu sein. Bitte
berichtigen wenn ich da auf dem Holzwege bin).
Da ich das Rad nicht neu erfinden möchte, wäre es sehr hilfreich wenn
jemand schon einmal einen simplen http Server implementiert hätte und
den Code zur Verfügung stellen könnte (ohne IP-Stack...nur die HTTP
Abwickelung). Präferiere übrigens Bascom; Googeln war bisher ziemlich
erfolglos...;-(.

Was ich noch nicht in den Griff bekomme ist die Antwort auf die Frage,
wie ich die Webseiten dynamisch auffrische, ohne das dazu der Browser
browserseitig aktualisiert werden muß. Ich würde das gern vom
"Server", also über die RS232 vom MC aus aktiv anstoßen.

Wer Ideen hat, melde sich bitte. Momentan tappe ich noch etwas im
Dunkeln !
Die Idee halte ich für ideal. Der Xport kostet rel. wenig Geld (um die
40 €), ist super klein.
Meßdaten von beliebigen UC's via RS232 ins Web zu senden, hat doch mit
Sicherheit eine riesige Anwenderschaft zur Folge !

Den Weg über Java, das Betriebssystem (COBOX) etc. halte ich für zu
kompliziert/aufwändig und nicht nötig. (In der C'T gibt es dazu auch
ganz nette Anleitungen und Projekte).Ich habe mir zwar die Development
Umgebung von Lantronix besorgt, aber die schönsten Dinge im Leben sind
halt doch oftmals auch die einfachsten...

Und nen RS232 Ausgang via MC zu handeln, sollte die breite Masse an
interessierten wohl eher hinbekommen !

Danke, Dietmar

Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keine rzu hause ?

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo dietmar

Die HTTP-Antwort ist im Prinzip richtig, nur fehlt noch die eigentliche
Antwortzeile davor: HTTP/1.0 200 OK

Das Dokument sähe dann so aus:

HTTP/1.0 200 OK
Content-Type: text/html
Connection: Close
Last-Modified: Mon, 17 Oct 2005 19:03:03 GMT
Content-Length: 62

<html>
<body>
Hallo Welt !!!!!!!!!!!!111
</body>
</html>

Die ganzen Header unter HTTP/1.0 200 OK sind sogenannte optionale
Header, können also weggelassen werden. Wenn man aber Connection:
Keep-Alive schickt, so MUSS man die Contentlänge angeben, sonst weiss
der Client nicht, wann die Datei fertig ist! Die vorzuziehende
Alternative ist Connection: Close, und anschliessend die Verbindung zu
trennen. Grund: Der XPort kann nur 1 Verbindung gleichzeitig bedienen!
Mit Connection: Keep-Alive würde dann ein User den X-Port die ganze
Zeit blockieren.

Als Lektüre empfehle ich die RFC 1945 mit den HTTP1.0-Spezifikationen:
http://www.w3.org/Protocols/rfc1945/rfc1945

Autor: d.s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris,

das bringt mich wieder einen Schritt weiter.
Ich habe nur noch keine Ahnung, wie ich den Browser dazu auffordern
kann die HTML-Seite selber zu refreshen, oder kann man das auch
Serverseitig (MC) erledigen ?
Mit der Close Methode würde ich mir ja wohl selbst den "Ast absägen"
?!


D.S.

Autor: Tim O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, der Browser wird ein META-Tag mit refresh akzeptieren,
auch bei Connection: Close, oder nicht ?

Das ist dann ja eher nun HTML, nicht mehr so speziell das
XPORT-Problem..

Gruss,
Tim

Autor: d.s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wird er es akzeptieren, oder nicht ?

Autor: d.s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Anmerkung zu Dieter Brüggemann's Hilfestellung:

All das beschreibt ja die Programmierung eines Java Applets, über
welches ich vom Browser aus auf die serielle Schnittstelle des Xport
zugreifen kann. Das ist aber für meine Problemstellung gar nicht
nötig.
Wenn ich den internen Webserver verwenden möchte, was ja durchaus
seinen Reiz hat weil der gesamte http-Kram ja schon implementiert ist,
wäre es höchstens nötig, Daten über die RS232 für die dynamische
Veränderung des internen html-Codes zu transportieren.
Das ganze Java Zeugs ist ja ganz nett, aber m.E. hier völlig
überflüssig.
Der MC kann doch leicht entsprechende html Seiten dynamisch generieren
und  über die RS232 entwerder direkt zum Browser senden (was ja schon
grundsätzlich funktioniert) oder auch die internen HTML-Seiten  im
XPORT manipulieren. Hierzu kenne ich aber noch keinen Weg zur Lösung.

MFG D.S.

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meta refresh geht mit folgender Zeile im <head> - Teil der HTML-Seite:
<meta http-equiv="refresh" content="10">

Das bewirkt beispielsweise einen Refresh alle 10 Sekunden.

>>oder auch die internen HTML-Seiten  im XPORT manipulieren. Hierzu
kenne ich aber noch keinen Weg zur Lösung.<<

Das ist eher ungeeignet, weil das Flash nur eine begrenzte Anzahl
Schreibzyklen übersteht, wie bei den Mikroprozessoren auch.

Ich würde das wie angesprochen anders lösen:
- bei irgend einem Webhoster mit PHP-Unterstützung eine Webseite
aufziehen, gibt's sogar gratis
- mit dem XPort alle paar Sekunden per HTTP POST die Daten dorthin
schicken
- Auf der Webseite per PHP-Skript die Daten aufbereiten, eventuell in
eine Datenbank oder Textdatei loggen
- die User auf diese Adresse verweisen und nicht an die des XPort

Vorteile:
- XPort kann hinter Firewall liegen
- Mehrere User gleichzeitig können die Daten lesen
- Keine Bandbreitenprobleme

Autor: d.s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Chris,

kompliment das Du an die Lebenszyklen des Flashes gedacht hast !
(Mir fiel das gestern beim Einschlafen auch noch ein).
Ich habe an Lantronics eine Anfrage gesendet ob man die internen pages
ins RAM mappen kann; mal schauen was die sagen.. Eigentlich ist mir die
Lösung aber insgesamt zu "unpragmatisch" für das was ich möchte.

Die extern gestützte PHP Lösung ist auch ne gute Idee, ich muß das aber
autark und ohne Internetverbindung lösen.

(Ehrlich gesagt muß ich auch noch lernen wie das mit der HTTP Post
Methode läuft. Der Server "Postet", sendet also eine HTML-Seite...
aber was ist denn wenn der Browser schon "disonnected" ist.....?. Ich
dachte bisher das HTTP-Protokoll wäre immer von der Client-seite
initiert/gesteuert... )

Von daher bleibe ich jetzt bei meinem Grundgedanken über die rs232
immer periodisch vom Controller aufbereitete HTML Seiten mit dynamisch
geänderten Inhalten zu senden. Prinzipiell funktioniert das ja schon.
Mit dem Meta- Refresh sieht der Anwender im Browser auch immer die
aktuellen Informationen.

Schön wäres es, gäbe es eine Quelle eines schon fertigen Grüstes für
einen simplen HTTP-Server der rudimentäre Funktionen anbieten würde
(ohne einen IP-Stack...).
Der würde sicher leicht auf einen MC passen; nebst Meßdatenerfassung
etc....

Ich berichte weiter. Wenn Du noch Ideen hast, dann tausche sie bitte
weiter mit mir aus. Komisch das das Thema eigentlich nur zwischen uns
beiden abläuft. Ich denke das wäre doch auch für eine breite Masse
interessant... ?!


D.S

Autor: Chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, der Server postet gar nichts - der XPort agiert hier als
HTTP-Client, und postet die Seite an den entfernten HTTP-Webserver.

Eventuell kann man auch eine eigene Anwendung auf dem XPort schreiben -
dafür braucht man von Lantronix das kostenlose Development Kit. ob das
geht, kann ich nicht beurteilen, weil ich es bisher nicht benötigt
habe.

Autor: Marco S. (masterof)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: BKD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

habe mir gerade alles durchgelesen aber ich finde nicht ganz eine 
Antwort für mich.

Ich habe vor Messdaten von einem Mega128 auf einer Homepage anzuzeigen. 
Ich möchte über den uart den html code zum xport senden, das xport soll 
dann die homepage anzeigen.

kann ich das nun so einfach machen?

wenn die homepage vom browser gestartet wird wie erfahre ich dann im 
atmel das ich die daten neu laden muss?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn die homepage vom browser gestartet wird wie erfahre ich dann im
>atmel das ich die daten neu laden muss?

Durch den ankommenden Header vielleicht...
In einem anderen Thread (von "Jasmin") wurde das Thema auch schon 
behandelt. Damals war die Doku zum Siteplayer (http://www.netmedia.com) 
sehr hilfreich...
Der XPORT wurde auch nicht über den Standard-HTML-Port 80, sondern über 
einen anderen angesprochen (Xport-Doku).

PS: deine Shift-Taste ist kaputt...

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da das Thema nochmal aufgerufen wird frage ich auch gleich mal was.
Könnt Ihr mir bitte sagen was da falsch ist.

Der Browser wartet die ganze Zeit und tut nichts....

{html_aktiv=0;PORTA.7=1;PORTA.6=0;    //Led auf senden setzen
//Html übertragen
putsf_xport ("HTTP/1.1 200 OK");
putchar_xport(0x0D);putchar_xport(0x0A);
putsf_xport ("Content-Type: text/html");
putsf_xport ("Content-Length: 50");
putsf_xport ("<html>");
putsf_xport ("<title>HalliHallo</title>");
putsf_xport ("TestPage<br>");
putsf_xport ("</html>");
}

danke

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst entweder die Content-Length angeben, ein TimeOut oder einen 
Delimiter definieren oder den Xport so konfigurieren, dass ein 
Pegelwechsel an einem Pin den Vorgang abschließt.

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmm. Ich habe eine content-lenght angegeben aber ich sehe schon am 
Explorer nichts keine Text keinen Titel, einfach nichts!?!

danke

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt auf der anderen Xport-Leitung denn der GET?
Die Port-Nummer muss natürlich auch stimmen.

Evtl. mal mit Etherreal (=LAN-Sniffer) schauen, was los ist.

Viel Erfolg! Wird schon, habe ich auch geschafft.

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Verbindung funktionier! Wenn ich mit Telnet eine Verbindung aufbaue 
xxx.xxx.xxx.xxx 10000 dann kann ich hin und her senden. Ich bekomme auch 
vom I-Explorer die Anforderung. Nach dieser Anforderung sende ich meine 
Page.

http://xxx.xxx.xxx.xxx:10000

Aber nichts......

Was sendest du nach der Anforderung vom Explorer?


danke

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das was ich hier mache ist nur mehr Probieren. Keine Ahnung was da 
falsch ist..

{html_aktiv=0;PORTA.7=1;PORTA.6=0;    //Led auf senden setzen
    //Html übertragen
                putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("HTTP/1.0 200 OK"); 
putchar_xport(0x0D);putchar_xport(0x0A);
                putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("Connection: Close"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("Content-Type: text/html"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("Content-Length: 50"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("<html>"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("<title>HalliHallo</title>"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("TestPage<br>"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    putsf_xport ("</html>"); 
putchar_xport(0x0D);putchar_xport(0x0A);
    html_counter++;
    }

!hilfe!

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sende z.b. folgendes, allerdings mit timeout:
HTTP/1.0 200 OK
Content-type: text/html


<html>
<head>Test page</head>
<body>This is a test page</body>
</html>


Vor dem HTTP/1.0 sollte kein CR/LF kommen.

Ein Request sieht z.B. so aus:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: de
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 192.168.4.44:10001
Connection: Keep-Alive


Wenn Du den GET mal vom Telnet aus machst?
Kommt dann das was Du vom µC aus sendest, wieder zurück?
Es ist sicher nur eine Kleinigkeit!
Was sagt der Fortschrittbalken unten in der Statuszeile im Explorer?
(evtl. mit Alt+a t  einschalten)

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wenn ich Get über Telnet mache dann kommt genau das was ich auch zum 
I-Explorer sende. Der Statusbalken läuft ganz langsam nach oben.... 
(Website gefunden. Warte auf Antwort)

danke!

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

es geht noch immer nicht :(

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell im XPort mal einen Timeout ein.

Im Telnet müsste (glaube ich) dann ein  connection lost  kommen, was den 
IE auch zum Anzeigen bringt.

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

Timeout hat auch keinen Sinn, Explorerleiste läuft und läuft.Ich glaube 
das es mit dem 0x10 bzw 0x13 was zu tun hat. Ich habe sonst keine andere 
Erklärung dafür. Hat Jemand eine Liste was alles zum senden ist wenn man
ein ganz einfaches "Hello World" schreiben möchte ?

danke

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwischen dem Header (HTTP/1.0 bis Content-length) müssen ZWEI CR/LF 
sein. Du kannst (wenn du dich an dieses Protokoll hältst) die 
Content-length auch weglassen.
...
putsf_xport ("HTTP/1.0 200 OK\r\n");
putsf_xport ("Content-Type: text/html\r\n\r\n");
putsf_xport ("<html>");
...
putsf_xport ("</html>");
...

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt hab' ich doch glatt die Hälfte der Information vergessen.

The first line should read
Zwischen dem Header (HTTP/1.0 bis Content-length) und dem HTML-Teil der 
mit <html> beginnt müssen sich ZWEI CR/LF befinden.

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich das jetzt richtig verstanden ?

  putsf_xport ("HTTP/1.0 200 OK\r\n");
  putsf_xport ("Content-Type: text/html\r\n\r\n");
  putsf_xport ("<html>");
  putsf_xport ("<title>HalliHallo</title>");
  putsf_xport ("<body>TestPage</body>");
  putsf_xport ("</html>");

danke

Autor: mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Josch,

ich habe das gleiche Problem, funktioniert es bei dir schon ?
Wenn ich die Seite aufrufe dann läuft die Explorerleiste von
links nach rechts. Aber eine Seite sehen kann ich nicht.
Auch wenn ich mir nen Quelltext ansehe steht nichts drinn ??

mike

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat nicht jemand eine Webseite laufen so könnten wir den code uns 
ansehen und vergleichen?

martin

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst entweder die Content Length angeben (ich glaube, dann beendet 
der IE die Connection)  oder  den XPort dazu veranlassen, dass er die 
Connection beendet.
Letzteres geht über Timeout, eine Bytekombination  oder einen Pin, das 
dazu konfiguriert werden muss.
Zur Kontrolle kannst Du statt des IE einen Telnet öffnen, der muss dann 
ConnectionLost  anzeigen.

Autor: josch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

soweit habe ich es mal. Mit MozillaFireFox geht es aber der balken 
bleibt noch immer in der mitte stehen!
Wenn ich die zwei Befehle schreibe:

     putsf_xport ("Content-Length: 62");
    putsf_xport ("Connection: Close");

bekomme ich das als Text im Explorerfeld, ich möchte auch das alle 2sec 
die Page aktualisiert wird. aber das geht solange nicht solang der ganze 
html Befehl abgeschlossen wird.

was kann da noch sein.

Aja, wenn ich bei MS I-Explorer Stop drücke sehe ich die page auch.

Autor: mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool,

unter welcher Einstellung kann man beim Xport sagen wie lange das 
Timeout für die Verbindung sein soll.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gerade nochmal angeschaut, was ich damals testweise sendete:
Nach dem text/html hatte ich auch mal zwei Leerzeilen , also drei 
CRLF.
(Hatte ich am 30.10. bereits so gepastet.) Versuchs mal damit.

Wenn der IE beim Drücken des Stop-Buttons die Seite anzeigt, ist ganz 
klar bis zu diesem Zeitpunkt die Verbindung noch offen,  und der Inhalt 
wird deshalb noch nicht angezeigt.

Nimm den Telnet zum Testen, da siehst Du besser, was Sache ist.
Einfach in der Eingabeaufforderung:
telnet <gewünschte IP oder URL> <optional Portnummer>
                               ^hier kein Doppelpunkt, sondern Space

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@mike
Bei DisConnTime (Inactivity Timeout)  in XPort-EX User Guide.pdf S. 
53/80

Autor: Smithee (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bin gerade dabei, einen ATmega8535 mittels XPort zum Web-Server zu 
machen.
Habe jetzt auch schon etliche Stunden damit verbracht, das zum Laufen zu 
bringen.
Ich poste hier mal einen Beipiel-Code den ich mit BASCOM-AVR geschrieben 
habe. Damit tut sich bei mir schon mal was beim Firefox und IE.
Verbesserungsvorschläge bitte mitteilen, bin noch nicht so bewandert in 
der ganzen Geschichte, bin aber lernbereit.

Smithee

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Verbesserungsvorschläge bitte
ein paar Kommentare mehr, wären hilfreich.

Autor: Smithee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommentare zu test.bas:

Die ersten paar Zeilen deklarieren meine Variablen (sollte jedem klar 
sein).
Danach definiere ich einen String "HTTP/1.". Dies ist das Muster, 
nachdem ich eingehende Botschaften durchsuche. Wird dieser String 
entdeckt weiß ich, dass ein Browser per "GET /xxx HTTP/1.x" eine 
Webseite vom µC anfordert (die x'se können variieren, daher suche ich 
nur nach dem immer gleichen Teil der Botschaft).

In der folgende For-Schleife fülle ich meinen Empfangspuffer mit 
beliebigen werten (habe mich für "A" entschieden)

Darauf aktiviere ich den Interrupt, der mir signalisiert, wenn ein neues 
Zeichen über die UART empfangen wurde.
In diesem Fall springt das Programm nach Onrxd:".
Dort schiebe ich alle Elemente in meinem, 20 Zeichen fassenden, 
Empfangspuffer um eine Stelle nach oben und reihe das gerade empfangene 
Zeichen chr(udr) an die hinterste Stelle des Arrays.
Danach wandle ich mein Array zu einem String und schaue, ob dieses 
meinen Suchstring "HTTP/1." enthält. Falls ja wird Httpcommand auf 1 
gesetzt.
Das Hauptprogramm was nun, dass die Web-Seite angefordert wurde.
Die Webseite selbst liegt unter "Homepage:" als Datenfeld vor.
Im Hauptprogramm berechne ich in der ersten For-Schleife die 
"Content-Length" der Homepage und in der zweiten For-Schleife schreibe 
ich die einzelnen Zeilen der Homepage. Dabei wird die Zeile mit der 
"Content-Length" noch gesondert behandelt, um die berechnete 
"Content-Length" einzufügen.

Wie gesagt, ich denke, dass geht alles noch eleganter, aber zumindest 
funktioniert das bei mir schonmal.

Autor: Smithee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle,

habe gerade angefangen, auf meiner Homepage (http://www.zzottel.de) 
meine XPort-Steckdosensteuerung etwas zu dokumentieren. Vielleicht sind 
für mannche ein paar gute Ansätze dabei. (Ich habe den bereits weiter 
oben von mir geposteten BASCOM-Code noch etwas optimiert...)
Das Ding läuft bei mir übrigens seit Dezember 2006 ununterbrochen und 
bisher ohne Probleme... schon genial, wenn man jederzeit und von überall 
seinen PC zuhause hochfahren kann etc.
Der HTTP-Server auf dem ATMega8535 ist aber immernoch 
verbesserungsfähig: Je nachdem, wie die Browser ihre HTTP-Requests 
abschicken, kann es sein, dass der Controller die Homepage zweimal 
nacheinander rausschickt. Manche Browser zeigen die Seite dann nicht 
ordentlich an. Workaround bisher: Einfach die Seite im Browser erneut 
laden. Dann passt's.

Gruß Stefan

Autor: jasmin alis dietmar alias d.s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo smithe,


schön, dass du so weit gekommen bist.
meine ersten gehversuche liegen nun schon seit geraumer zeit "im 
keller".
ich werde wohl bald wieder etwas zeit investieren ...

suuper gemacht !!!!!!!!!

dietmar

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach stundenlangem Rätselraten, warum Webseiten nicht oder nur 
fehlerhaft im Browser ankommen, nachdem sie mit Hyperterminal via 
XPORT-COM gesendet wurden hier noch ein Hinweis: In der 
ASCII-Konfiguration der Hyperterminal-Verbindung muss unbedingt 
"Gesendete Zeilen enden mit Zeilenvorschub" aktiviert sein :-) 
Hinterhältig!

Autor: TSSOP14 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klingt interessant
bin auch am überlegen  sowas zu basteln ..

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@TSSOP14 Mach mal ruhig. Ist eigentlich relativ unkompliziert. Auf den 
internen Webserver samt Java/CGI Hakeleien kann man locker verzichten 
wenn man Empfang und den Versand dynamisch erzeugter Webseiten via 
XPORT-COM selbst in die Hand nimmt. So wie was auf XPORT-Seite zu 
schalten ist wertet man dafür einfach den ankommenden HTTP-Header aus. 
Vorausgesetzt, man will nicht nur auf die 3 armseligen GPIOs zugreifen 
:-)
Gruß Rainer

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.