Forum: Mikrocontroller und Digitale Elektronik RS232 nach HTTP/HTML Konverter


von Jasmin (Gast)


Lesenswert?

Hallo Forum,

ich habe da so eine Idee, welche mich nicht losläßt....
Es existieren doch so schöne RS232 nach TCP/IP Konverter von Lantronix,
DIGI, etc.

Wenn nun an der RS232 Seite HTML-formatierte Strings von einem
Mikrokontroller gesendet werden, könnte mann doch so wunderbar und sehr
einfach und preiswert Meßwerte etc. direkt in/als Webseiten darstellen,
wenn man mit einem beliebigen Browser darauf zugreift.
Der Rückweg sollte mit entsprechenden GET/POST Methoden auch
funktionieren; also Steuern via Webinterface.
Könnte man das mit Eurem Know How einmal diskutieren und in die Tat
umsetzen ?
Ich experimentiere gerade eine wenig mit einem Lantronix XPORT/Atmega 8
und Bascom herum.

Danke und liebe Grüße,

Jasmin

von Manos (Gast)


Lesenswert?

Also im Prinzip ein Webserver...

von Jasmin (Gast)


Lesenswert?

Hallo Manos,

ja, eigentlich ist es per Definition ein Webserver, aber nur ein ganz
trivialer....
Reicht ja schon wenn er beim Abfragen einer Webseite diese auch
anzeigt. Der HTML "Code" würde dann vom MC erzeugt.
POST/GET würde doch schon ausreichen.. ?!

Jasmin

von Wirus! (Gast)


Lesenswert?

Moin,

beim Ursprungspost fielen mir spontal zwei Donge ein:

- gibts schon .... nennt sich Webserver -> siehe Webserver mit
Atmega32
- warum einfach wenn es auch kompliziert geht. Der XPORT hat einen
eingebauten Webserver ...

von Jasmin (Gast)


Lesenswert?

Wirus ???!!!

entschuldige, aber soooo gibt es das NICHT !
Natürlich existieren diverse MC basierende "Webserver" auf Basis von
MC's, aber:

Das ist alles recht überladen, wenn ich wie beschrieben einfach nur
Meßwerte darstellen, resp. einlesen möchte.
Der XPORT hat mich knapp 40 € gekostet; Inbetriebnahme 10 Minuten.
Unschlagbar, oder !?

Der Webserver dient erst einmal auschließlich der Konfiguration des
XPORT.
Erst vermöge des SDK's (habe ich mich intensiv mit beschäftigt) und
recht komplexer JAVA Programmierung könnte ich den entsprechnd
anpassen.
"Also warum einfach wenn's auch kompliziert geht ???????"
Ich bin halte ein Mädchen mit pragmatischen Ansätzen ;-).

Jasmin

von Thomas B. (tomb)


Lesenswert?

Ich beschäftige mich gerade mit dem selben Problem, siehe hier:
http://www.mikrocontroller.net/forum/read-1-350576.html#new

Ein netter Benutzer dieses Forums und ich sind über diesen Thread
gestolpert:
http://www.mikrocontroller.net/forum/read-1-247578.html

Gruss Thomas

von Jasmin (Gast)


Lesenswert?

Thomas,

das scheint ja wohl leider im Sande verlaufen zu sein.
Oder "D.S" hat die Lösung parat ?


Jasmin

von Thomas B. (tomb)


Lesenswert?

Naja, der Ansatz scheint zu funktionieren, ich konnte das "Hallo Welt"
auf meinem Browser darstellen. :o)

Ich weiss leider nicht, wer dieser D.S. ist. Ich denke, das sollte man
schon zum laufen bringen, ist halt wieder etwas Fleissarbeit.

Gruss Thomas

von Peter (Gast)


Lesenswert?

www.easytoweb.net
Die machen genau das

von Jasmin (Gast)


Lesenswert?

Aber Peter,

die machen das doch eben genau NICHT so.
Oder habe ich da was überlesen ?
Peter, kannst Du uns bitte Deine Ergebnisse zur Verfügung stellen ?
Also den Code für Deinen MC welcher die HTML-Seite generiert ?
Funktioniert das mit jedem (IE, Firefox) Browser ?

Jasmin,... geht jetzt zur Arbeit

von Jasmin (Gast)


Lesenswert?

Thomas Berger,

(sorry nicht Peter)
kannst Du uns bitte Deine Ergebnisse zur Verfügung stellen ?
Also den Code für Deinen MC welcher die HTML-Seite generiert ?
Funktioniert das mit jedem (IE, Firefox) Browser ?

Wenn ich wieder zeitlich etwas Luft habe, werde ich auch etwas testen
!

Jasmin,... geht jetzt zur Arbeit

von Thomas B. (tomb)


Lesenswert?

Jasmin: Zur Zeit ist noch kein Code vorhanden, ich habe den XPort über
Com1 an den Rechner angeschlossen und sende ganz einfach die Textdatei
an die serielle Schnittstelle. Das war gestern erst ein Test.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

In der neuen c't 11/2006 S. 67 ist ein RS232 zu Ethernet-Wandler "kurz
vorgestellt" den www.elektronikladen.de vertreibt, mit einem ATMega64L
und einem Ethernet-Chip auf 50*32mm (ohne RJ45-Buchse). Im Text noch
ein Hinweis auf frühere Besprechungen ähnlicher Produkte. Preise um
40-70Euro. Hersteller Sollae Systems www.eztcp.com

von Jasmin (Gast)


Lesenswert?

Hallo,

wieder online...

Gibt es noch jemanden der etwas konstruktives zu dem Thema beitragen
kann ?
Ich wollte keine Diskussion über bestehende Lösungen eztp oder ähnlich
beginnen.
Das es einige Devices TCP nach RS232 und umgekehrt gibt, kann man sich
schnell ergooglen..........;-(...

Mich wundert es ein wenig, das keiner den pragmatischen und höchst
nützlichen Ansatz sieht, um MC Schaltungen so WEB zu enablen wie hier
angedacht.


Jasmin

von Rahul (Gast)


Lesenswert?

@Jasmin: Fehlt bei deiner Überlegung nicht noch das
Hypertext-Transfer-Protocol, als Aufsatz auf das TCP/IP?
Und wo gibst den Xport für 40Euro?

von Bernhard S. (bernhard)


Lesenswert?

Hallo Jasmin, _"RS232 nach HTTP/HTML Konverter"_ das ist ein sehr
interessantes Thema.


Mir schwebt schon lange ein eigener WEB-SERVER vor.
(Messdaten abfragen und Steuerbefehle senden)

Traute mich nur noch nicht an dies Materie heran, da ich mich mit zwei
Grundproblemen noch nicht auseinandersetzen konnte.

1. Problem: Die Harware, wie müssen die TCP/IP-Signale für den µC
aufbereitet werden.

2. Problem: Wie müss das TCP/IP-Protokoll aufgebaut sein

Einfach etwas nachbauen, ohne Grundlagen,
in der Hoffnung, dass es auch funktioniert,
ist nicht meine Lebenseinstellung.

Bernhard


Bernhard

von Jasmin (Gast)


Lesenswert?

Bernhard,

den Zusatz der philosophischen Betrachtung im Sinne von "Einfach etwas
nachbauen, ohne Grundlagen, in der Hoffnung, dass es auch funktioniert,
ist nicht meine Lebenseinstellung" verstehe ich nicht.

Ich kann Dich dennoch um Deine 2 Probleme erleichtern, denn um all das
mußt Du Dich ja gar nicht mehr kümmern weil es der XPORT (oder ein
ähnliches Gerät ;-( ) ja schon alles für Dich erledigt !

Der MC stellt eine simple HTML Seite als ASCII String an der RS232 Port
des XPORT zur Verfügung. Der Text kann hier bereits Meßwerte des
Controller's enthalten.

Auf der anderen Seite verbindet sich ein Webbrowser mit der IP des
XPORT vorzugsweise auf Port 80 (HTTP).
Schwups sendet der MC seinen ASCII String und schon zeigt Dein Browser
eine beliebig schick oder schlicht formatierte Webseite mit
Meßdaten Deine Wahl !

Den XPORT habe ich übrigens über meine Firma (Arbeitgeber) und nicht
als Privatperson für deutlich unter 50 € erworben (sogar die SSL
Variante).

Der Rückweg (Steuerungsanforderungen an den MC) sollte mit
enstprechenden HTML Methoden wie PUT etc. auch leicht zu implementieren
sein.

Jasmin

von Jasmin (Gast)


Lesenswert?

Darauf kann man aufbauen !

"mehr" muß nicht umgesetzt werden.



HTTP request
The Hypertext Transfer Protocol (HTTP) defines a request-response
mechanism for obtaining documents from a web server. The web browser
sends a request to the server in the form of a multi-line string, each
line being terminated with Carriage Return and Line Feed (<CR> and
<LF>) characters. The first line specifies an upper-case "method"
(that is, command), followed by an argument string. The most common
method is "GET," followed by a filename to be fetched, and a protocol
version identifier. Subsequent lines contain additional information
about the browser configuration:


GET /index.htm HTTP/1.0
User-Agent: Mozilla/4.5 [en]
(Win95; I)
Pragma: no-cache
Host: 10.1.1.11
Accept: image/gif, image/x-
xbitmap, image/jpeg, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8


If we're keen to keep memory usage to a minimum, the question must be
asked: what use is the additional information? We don't care about the
type of browser, our server hasn't got sufficient resources to maintain
a cache or an access log, and if the file we're sending has an
unacceptable character set, there's nothing that can be done about it.
Even the HTTP version number on the first line isn't needed; we're
planning to use the simplest HTTP interface anyway.


It would seem that we can chop off the remainder of the command after
the filename, without losing any functionality, but what is the maximum
length of the filename? Surprisingly, this is largely under the control
of the server, for the following reason: when the user wishes to access
the server for the first time, an IP address is entered into a browser
window, such as:


http://172.16.1.2


The web client (browser) locates the given address, and submits the
request to that server using a null filename:


GET / HTTP/1.0


By convention, most web servers interpret this as a request for the
default index file, which is INDEX.HTM or INDEX.HTML. This, in turn,
contains pointers to other files on the server. While the user clicks
on pages we've provided, they will only be requesting filenames we've
defined, so if we keep these short, we won't have to handle any long
filenames.


A possible exception to this rule would occur if we included any HTML
forms on our server. When a form is submitted, all the
state-information is appended to the filename, making a much longer
string. Various other difficulties are associated with forms-handling
on a very small web server, so for the time being, we'll assume that
forms aren't being used.


HTTP response
The response from the server to the client consists of an HTTP header,
and, if the request succeeded, the document itself. The header consists
of several text lines, each terminated with a <CR> <LF> delimiter. The
header is separated from the document's contents by a single blank
line.


As a minimum, the header must identify the HTTP protocol version, the
success or failure status, and the content-type of the document (plain
text, HTML, GIF graphic). For example:


HTTP/1.0 200 OK
Content-type: text/html


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



Unfortunately, it isn't possible to send out the same HTTP header for
all files; it must be adapted to reflect the file's contents. A
minimum list of file formats would be:


text/plain
text/html
image/gif



though it would be highly desirable to add other formats to the list.
If the client's request fails, an appropriate HTTP error message must
be sent out, and it is also desirable to send out a document explaining
the problem, so that the browser has something to display. The simplest
explanation could be in the form of a plain text document, which has no
fancy formatting:


HTTP/1.0 404 Not found
Content-type: text/plain



File 'abc.htm' not found

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Bitte konkretisiere doch mal die angedachte Aufgabe. Wie hoch ist die
Datenrate in beide Transferrichtungen, wie soll die Darstellung im
Browser sein, Messkurven, Text, Tortendiagramme ? Wie oft muß der
Browser aktualisieren, sind das Oszillogramme in quasi Echtzeit?

Ich denke, erst dann kann man entscheiden, ob ATmega und XPORT die
passende Lösung sind, oder ob es zwei Nummern kleiner oder größer sein
muß.
Der XPORT mit 48 MHz 80186 und 256kSRMA/512k Flash nur als
Hilfsarbeiter für einen 8-Bitter ist ähnlich seltsam wie der
"USBwiz", der einem 8-Bitter zu einer USB-Hostschnittstelle verhilft,
mittels Philips-ARM-Prozessor.
73
Christoph

von Thomas B. (tomb)


Lesenswert?

Christoph:
Da ich den XPort und den ATMega schon hier habe, macht es für mich
schon Sinn, diese zu verwenden. Das ganze kann später auch für andere
Anwendungen verwendet werden, es wird ja nur der UART verwendet.

Ob das so in euren Augen Sinn macht oder nicht, ist mir egal, es geht
mir nur um das basteln. Wenn ich später noch Freude daran habe, kann
ich immer noch einen Schritt weiter gehen und den TCP/IP-Stack
implementieren und einen Realtek Chip oder WTW nehmen.


Jasmin:
Ich habe gestern mit einem kleinen Testprogramm begonnen, welches den
HTTP-Server bilden wird. Das ganze wird in C geschrieben und im Moment
verwende ich einen 90s8515, da ich für diesen noch ein
Experimentiertboard hier liegen habe. Der Code kann aber leicht für
einen Mega8 portiert werden. Leider bin ich diese Woche "leicht" im
Stress, ich melde mich wieder bei neuen Ergebnissen.

Gruss Thomas

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Hallo Thomas
Ja fürs Hobby spielen die Kosten und die Frage wie sinnvol das ist
erstmal keine Rolle. Euer Projekt erinnert mich am ehesten an die
Laserdrucker hier im Firmannetz, die melden sich alle im Browser. Ich
kann den Papier- und Tonerstand abfragen und den Druckstatus, eine
Statistik und so weiter. Wenn man "Hilfe" anklickt wird man ins
Internet zum Hersteller verbunden

von Thomas B. (tomb)


Lesenswert?

Mehr soll das Teil (am Anfang) auch nicht machen, nur die gemessenen
Daten als Website mit Text und Zahlen darstellen.

von Jasmin (Gast)


Lesenswert?

Hallo zusammen,

hallo Christoph Kessler ,

"Der XPORT mit 48 MHz 80186 und 256kSRMA/512k Flash nur als
Hilfsarbeiter für einen 8-Bitter ist ähnlich seltsam wie der
"USBwiz", der einem 8-Bitter zu einer USB-Hostschnittstelle
verhilft,
mittels Philips-ARM-Prozessor." "

Der von Dir so despektierlich beschriebene Hilfsarbeiter erledigt hier
den gesamten IP-Stack, mit SSL-Verschlüsselung, DHCP, NTP, TCP/UDP...
ich habe bstimmt noch etwas vergessen....

Somit ist er ein absoluter High Tech Hilfsarbeiter dessen Fähigkeiten
ich mich gern bediene.

Unter http://www.hw-group.com/products/hw_vsp/index_en.html

Mit einer Übertragungsrate von um die 900 kbit/s schaufelt der schon
einiges an HTML formatierten ASCII-Daten über die Leitung ist also für
die Übertragung von Meßdaten völligst ausreichend.


Thomas, ich habe gerade auch etwas mit Bascom zusammengebaut, was schon
grundsätzlich funktioniert !

(Es soll hier einige oberschlaue BASCOM-Hasser geben, bitte haltet Euch
aus diesem Thread heraus ;-( .... ,es scheint schon schwierig genug
transparent zu machen, welche potentiale hinter solch einer pragmatisch
einfachen Lösung liegen und wie somit das "WEBENABLEN" von MC's
kinderleicht und sehr preiswert wird ).

Wenn ich etwas vorzeigbares habe, werde ich es hier umgehend zur
Verfügung stellen.

Unter http://www.hw-group.com/products/hw_vsp/index_en.html
findet man übrigens eine Softwarelösung für einen virtuelle COM-Port
nach TCP/IP Wandler.
Damit kann jeder an der Lösung mitarbeiten auch wenn er keinen XPORT
oder ähnlich besitzt !


jasmin

von Thomas B. (tomb)


Lesenswert?

Ich bin nicht ein grosser Fan von Basic, daher nehme ich lieber C. ;o)

von Guido (Gast)


Lesenswert?

Hallo Jasmin

Ich verfolge den selben Ansatz wie du. Ich habe einen TCP/IP Converter
(Linkcom Xpress) den ich für einen einfachst Webserver einsetzen
möchte. Ein AVR soll die HTML Daten interpretieren resp. generieren.
Ich möchte nur die Temperatur und eine Schaltzustand im Web anzeigen.
Ich bin am noch am suchen von Informationen und bin gespannt, was hier
noch für Lösungen diskutiert werden.

von Jasmin (Gast)


Lesenswert?

@ Broadcast,


Stunkfille ???

Na, ja ..vielleicht dann über's Wochenende, wenn das Wetter mies ist
und mein Freund nervt  !?

Jasmin

von Walter (Gast)


Lesenswert?

Eine Beschreibung für einen einfachen Webserver hier:

http://www.embedded.com/story/OEG20010312S0103

von Thomas B. (tomb)


Lesenswert?

Hallo Jasmin,

Ich habe dieses WE endlich Zeit gefunden um zu basteln.:o) Soweit habe
ich nun einen rudimentären HTTP-Server, welcher auf Anfrage eine
Webseite senden kann.

Ich habe aber noch ein kleines Problem: Der Browser lädt "ewig" nach,
ich habe im Moment noch keine Idee, wie ich die Verbindung als beendet
erklären kann. Ich sende nach der html-Datei zusätzlich ein CR und LF,
dann werden keine Daten mehr über den UART geschickt, der Browser
scheint aber noch auf etwas zu warten.

Der zweite Punkt ist, dass ich die Webseite nur explizit auf dem Port
10001 aufrufen kann. Ich denke aber, dass ich dies in den Einstellungen
des XPort noch ändern kann.

Gruss Thomas

von jasmin (Gast)


Lesenswert?

Hallo Thomas,

ich kann mir das nicht so recht vorstellen was du beschreibst.
Was meinst du mit "er lädt ewig nach" ?

Ich habe das Wochenende damit verbracht den XPORT mit neuer Firmware,
neuen COB-Dateien und neuen Tools aufzupeppen.
(lohnt sich übrigens !!)
Du kannst den Port (Standard 10001) beliebig verschieben.
Ich habe ihn auf Port 80 gelegt und den für die Webverwaltung auf port
443.

Mache mal ein Telnet in folgender Syntax:

                  telnet pabu19.dyndns.org 80

Damit landest Du bei mir im Keller ;-)
Das ist ein Xport den ich ins Internet gehängt habe.
Am seriellen Port hängt ein STK 500 und ein Atmega 8 macht nichts
anderes als die eingegangenen Zeichen als Echo zurückzusenden.

Der Xport kann immer nur eine zeitgleiche Verbindung ab, könnte also
mal besetzt sein ......
Wenn Du magst, sende doch einmal den Code Deines HTML-Servers.
Den könnte ich dann einmal hier dranhängen !

Ich werde am Wochenende nicht daran arbeiten können, da ich auf einer
Sportfreizeit unterwegs bin (macht auch Spass !!).

Jasmin

von Rahul (Gast)


Lesenswert?

Woher habt Ihr Eure Informationen zum XPORT? Lantronix hat da irgendwie
nichts.

>Ich werde am Wochenende nicht daran arbeiten können, da ich auf einer
>Sportfreizeit unterwegs bin (macht auch Spass !!).

Viel Spaß.

von Lantronix (Gast)


Lesenswert?

Hallo,


Lantronix hält jegliche Informationen zum Download auf der Webseite
vor; http://www.lantronix.com


Welche Informationen suchen Sie denn ?



Bart Henson

von Rahul (Gast)


Lesenswert?

Wie bekomme ich den HTML-Server zum Laufen?
Die Datenblätter etc. beschreiben immer nur die Konfiguration als
RS232-Verlängerung.

von Jasmin (Gast)


Lesenswert?

hallo,

entschuldige, aber du scheinst das gerät noch nicht so ganz zu
verstehen ;-).
lese dir die gute dokumentation durch...

der html server läuft immer (default port 80, für die konfiguration).
in diesem thread diskutieren wir aber andere dinge, oder was ist deine
intention ?



Jasmin

von Rahul (Gast)


Lesenswert?

Gut, wieder eine Unklarheit beseitigt. Wie bekomme ich da dann eine
HTML-Seite drauf? (In welchem Dokument findet man da was?)
Auf der ct'-Seite werden zwar auch Probleme geschildert, aber
Ergebnisse scheinen nicht präsentiert zu werden.

von Thomas B. (tomb)


Lesenswert?

Hallo Jasmin,
Der Fehler war so ähnlich, wie wenn die Webseite falsch ist, wenn z.B.
das </html> Tag fehlt. Der Browser wartet auf Daten, es kommt aber nix
mehr.

Ich habe das Problem mit dem "laden" behoben. :o) ich habe die
Angaben für die Grösse der html-Daten nicht korret angegeben, daher
fehlten dem Browser noch ein paar Zeichen, welche nicht mehr gesendet
wurden. nun funzt die Sache.

Deinen "Telnet-Echo-Server" werde ich heute Abend noch testen.

Gruss Thomas

von Marek S. (Gast)


Lesenswert?

Hi zusammen, hier mal mein senf ;) :

System1 sendet über die 232 den Wert "www1234"

Der 232 auf Ethernet converter sendet die daten weiter via Ethernet und
 den Port 4000 etwas an den RemoteServer mit der IP 192.168.1.100.

Auf dem Remot-Server läuft ein Programm welches die Daten des Ports
4000 in eine Datei schreibt.

Die index.php liest die daten aus und zeigt die messwerte an.... fertig
:)

habe ich alles richtig verstanden ?

von Thomas B. (tomb)


Lesenswert?

Marek: Nö, in die andere Richtung. Ich gebe in meinem Browser die IP des
Xport an und der AVR generiert mir die Webseite, welche ich im Browser
sehe.

Deine Variante wäre auch machbar, ist aber nicht das, was ich möchte.

Gruss Thomas

von Jasmin (Gast)


Lesenswert?

@Rahul

was Du da möchtest ist genau der Weg den wir eben nicht gehen wollen.
Willst Du so an die Sache ran, dann besorge dir das SDK von Lantronix
und programmiere in java (wie im C't-Projekt).....

Wie Thomas gerade Marek beschrieben hat soll es laufen.
Ganz einfach; der MC sendet auf Browserrequest eine HTML-Seite an die
serielle Schnittstelle und der Browser holt das ganze dann ab und
stellt es dar.
Hier bietet sich dannn die gesamte HTML Vielfalt inclusive der
Möglichkeit auch java script einzusetzen.... aber das ist wieder nur
für "schön".

@Thomas

Der Rückweg; also Steuerbefehle vom Browser an den Xport und somit an
den MC zu senden muß auch funktionieren (HTML PUT oder ähnliche
Methoden; siehe selfhtml).
Dann kann man über den Browser auch "seine Heizung" fernsteuern.
Ich habe übrigens den Xport 3, dann kann das ganze auch via SSL laufen
und wird somit sicher !
In den MC könnte man sogar eine Passwortabfrage einbauen, oder mit SSL
Clientzertifikaten arbeiten ;-) fein, fein ..

Jasmin (von der Arbeit  ..;-(  )

von Jasmin (Gast)


Lesenswert?

Hallo Besucher,

der Testlink  "telnet pabu19.dyndns.org 80" ist wegen heftiger
Lötarbeiten momentan offline.

Ich hoffe bald mit echten Ergebnissen wieder "online" zu sein.

@ Thomas,

kannst Du mit dem Quelltext Deiner bisherigen Versuche etwas beisteuern
? info at key-it.de, oder hier im Forum..
Ich stelle meine "Ergüsse" auch zur Verfügung.


Jasmin...
fährt jetzt bis Montag in Urlaub......

von Thomas B. (tomb)


Lesenswert?

Jasmin: Kann ich machen, aber erst am Sonntag. Ich bin gerade eine etwas
interessantere Variante am basteln, welche auf dem atmega8 läuft und die
ADC-Kanäle auslesen wird. Ist aber, wie bereits erwähnt alles in C.

Gruss Thomas

von Thomas B. (tomb)


Angehängte Dateien:

Lesenswert?

Guten Abend,
Ich habe nun die erste Version meines XPort Webservers fertig gestellt.
:o)

Die Quellen sind im angefügten Zip-File verfügbar. Es handelt sich
dabei erst um eine sehr primitive Variante, die Einkommenden Daten des
Browsers werden noch nicht überprüft. Es wird auf jede Anfrage direkt
der HTTP-Header und die Webseite geschickt.

Die Webseite selber ist in einem Array abgelegt.
1
char Page[] = {
2
"<html><head><title>XPort Webserver 1.0beta</title>\
3
</head>\n\
4
<body bgcolor=\"#507EAE\">\
5
<font size=\"5\" face=\"helvetica,arial\"
6
color=\"#FFFFFF\">\
7
<b>XPort Webserver, 1.0beta</b><br><br>\
8
Uptime: $UPTIME s<br><br>\
9
ADC0: $ADC0<br>\
10
ADC1: $ADC1<br>\
11
ADC2: $ADC2<br>\
12
ADC3: $ADC3<br>\
13
ADC4: $ADC4<br>\
14
ADC5: $ADC5<br>\
15
</font>\
16
</body></html>\n"
17
}
Variablen (Mit einem $ gekennzeichnet) werden beim senden der Seite
dynamisch durch den Zahlenwert ersetzt.

Ein grosses Problem ist dass die Variable "char Page[]" eine gewisse
Grösse nicht überschreiten darf, ansonsten funzt das Programm nicht
mehr richtig. Beim Kompilieren gibt es keine Fehlermeldung, das
Programm läuft aber nicht mehr. nach etlichen Stunden suchen kam ich
darauf, dass das Problem einen Zusammenhang mit den Char Array hat, ich
weiss aber noch nicht wieso und bin somit für Tipps sehr dankbar.

Ich werde diese Woche noch weiter daran basteln und die neuen
Ergebnisse hier posten.
Gruss Thomas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dein char-Array wird nicht nur ins Flash-ROM geschrieben, sondern beim
Start des Programmes aus selbigen ins RAM kopiert, damit mit den
üblichen C-Funktionen darauf zugegriffen werden kann.
Das RAM ist aber bei Deinem Prozessor (mega8 steht wohl im Makefile)
nicht sonderlich groß ...

Das dürfte Dein Größenproblem erklären.

von Thomas B. (tomb)


Lesenswert?

Rufus: Danke, ich habe etwas gegoogelt: Mit dem Attribut "PROGMEM"
werden die Daten dann direkt aus dem Flash gelesen.
Das habe ich kurz Probiert, es erscheint aber nun eine Warnung, wenn
ich das Array übergebe, das sollte ich vieleicht mit einer "const"
Deklaration lösen können.

Ich werde morgen weiter suchen.
Gruss Thomas

von Thomas B. (tomb)


Lesenswert?

Oha, das wird doch etwas komplexer, als nur das Attribut zu setzen...
Um die Daten aus dem Flash zu lesen, muss man pgm_read_byte()
verwenden. D.h. ich muss Funktionen wie "strcat" mit einer ersetzen,
welche diese verwendet, sehe ich das richtig?

Gruss Thomas

von Guido (Gast)


Lesenswert?

Wie macht ihr das mit der IP-Nummer des Webservers? Ich meine, man
müsste einen DynDNS-Account einrichten. Das Progr. DynDNS-Updater dient
zum Abgleich einer dynamischen IP Adresse mit einer festen Domain
Adresse und läuft auf dem PC. Wie geht das mit einem Webserver wie hier
diskutiert? Muss man eine feste IP-Nummer beim Provider beantragen? Das
kostet!

von Th. B. (pomdas)


Lesenswert?

Wenn Du Deinen Inet-Zugang ueber einen Router machst, kannst Du dort
meist die Anmeldung beim DynDNS-Server durchführen lassen. Ansonsten
hilft es wohl nichts und Du muisst diese Anmeldung auch ueber den uC
machen...

von Jasmin (Gast)


Lesenswert?

Hallo Guido,

ja dyndns oder ähnlich....

Aber für interne Zwecke ist das natürlich nicht nötig und wer es
"kommerziell" einsetzen möchte wird wohl "etwas frei haben".
Portforwarding würde ja auch schon genügen und keine IP Adresse
belegen.

Ich habe aber eine feste ip bei meiner Flatrate von VIA dazubekommen.
War "umsonst", schau mal nach ob das Angebot noch steht (viadsl).
Ich bekomme sogar interessante Rabatte, also wenn jemand soetwas
benötigt könntet ihr mich anfragen.

@thomas
Mit Bascom ist das (Flash-Zugriffe) ganz einfach ;-).....

Wenn ich einen kompletten Überblick über Deine Implementierung bekommen
möchte, soll ich dann alle *.c Dateien ausdrucken, oder wie bekomme ich
den Zusammenhang hin ?
Ich poste in den nächsten Tagen einmal meine "Codeschnipsel); nix
aktuelles aber funktionierte schon vor einem halben Jahr..

Jasmin

von Thomas B. (tomb)


Lesenswert?

Was meinst du mit Zusammenhang?
Flash zugriffe sind in C auch einfach, man muss halt erst wissen wie.
;o)

von Jasmin (Gast)


Lesenswert?

@Thomas,

ich meine damit einen "zusammenhängenden" Quellcode.
Aber bemühe Dich nicht weiter.
Das soll ja kein Nachilfethread für C-Programmierung sein ;-)

Dennoch:
Wann sendet denn Dein Controller die Webseite an den Xport ?
Wodurch "fühlt" er sich angesprochen ?
Vielleicht komme ich mit diesen Hinweisen weiter.


Jasmin

von Bernd (Gast)


Lesenswert?

Zitat von Jasmin:
Ich poste in den nächsten Tagen einmal meine "Codeschnipsel); nix
aktuelles aber funktionierte schon vor einem halben Jahr..


Gerne, würde mich auch interessieren.
Was ich noch nicht wußte:
eine Html-Seite wird durch eine extere Geschichte aktuallisiert?
Wie und wie löst man das in Bascom?
Bitte um die Codebeispiele.
Danke im Vorraus
MfG

von Jasmin (Gast)


Lesenswert?

@Bernd,

Bascom, oder was auch immer, ist da erst mal aussen vor.
Metatags (siehe Selfhtml) refreshen (fordern an) die Webseite
automatisch in beliebigen Intervallen.


Jasmin

von Thomas B. (tomb)


Lesenswert?

Guten Abend

Bernd:
Für das Refresh muss im Header der Html-Seite
<meta http-equiv="refresh" content="30;URL=">
eingetragen werden. Somit wird die Seite alle 30Sek aktualisiert. Durch
probieren habe ich herausgefunden, dass wenn ich keine Url angebe, die
aktuelle Seite wieder geladen wird.

Jasmin:
In der Datei interrupts.c ist die Funktionen SIGNAL (SIG_UART_RECV).
Nach dem das letzte Zeichen über den UART empfangen wurde wird nach
400ms in der Funkton SIGNAL (SIG_OUTPUT_COMPARE1A) die Funktion
web_init() und anschliessend web_sendchar() auf gerufen.
Dort wird ein Zeichen des HTTP-Headers oder der Webseite gesendet. nach
dem das Zeichen gesendet wurde, wird SIGNAL (SIG_UART_TRANS) auf
gerufen, welche dann wieder web_sendchar() aufruft, bis die komplette
Seite gesendet wurde.

Die SIGNAL-Funktionen sind für Interrupts.
SIGNAL (SIG_OUTPUT_COMPARE1A) ist bei mir so eingestellt, dass alle
100us ein Interrupt ausgelöst wird, daraus kann ich dann eine
Zeitinformation (z.B. den Uptime-Counter) ableiten.

Das mit den Daten aus dem Flash funzt. Ich arbeite nun meine Todo-Liste
ab, wobei diese ständig weiter am wachsen ist, weil mir immer neue Ideen
einfallen. :o)

Gruss Thomas

von Jasmin (Gast)


Lesenswert?

Thomas,


wenn ich das richtig verstehe, kümmerst du dich eigentlich überhaupt
nicht um die http konventionen.
Du wartest also bis der browser sein letztes zeichen gesendet hat und
antwortest dann nach 400 ms mit dem senden (d)einer html seite.
Was passiert wenn der browser eigendeinen müll sendet, oder an einer
anderen stelle etwas schief läuft. Mann könnte sich natürlich auf den
transport-layer (tcp/ip) verlassen aber ...., kann natürlich noch auf
der seriellen übertragung etwas passieren ????
Wäre es nicht besser das relativ einfache HTTP Protokoll zu
berücksichtigen ?

Ich habe einfach den string "GET / HTTP/1.0" resp. das GET am anfang
und das HTTP/1.0 am ende herausgefiltert und als korrekte
browseranfrage interpretiert. ALLE zeichen danach bis zu einem erneuten
GET / HTTP/1.0 können dann ignoriert werden, allerdings fehlt eine
wirkliche "ENDE-Meldung" der GET-methode.....
Da scheint dein profanes 400 ms warten nicht schlecht.
Ist aber eben nicht ganz schlüssig bezüglich des protokolls.
ICH HABE ALLERDINGS AUCH KEINE BESSERE IDEE  !


Jasmin

von Jasmin (Gast)


Lesenswert?

Thomas,

hier die Lösung zu meiner Bemerkung:

Browser sendet beispielsweise:
GET /infotext.html HTTP/1.1

Sobald der Header mit einer Leerzeile abgeschlossen wird, sendet dann
der Computer, der einen Web-Server (an Port 80) betreibt, seinerseits
eine HTTP-Antwort zurück.

Also fängt der Anfang des Browserrquest immer mit "GET ......HTTP/X.X
gefolgt von crlf an.
Das Ende des Browserrequests wird definitiv über eine Leerzeile mit
crlf (0XD,0XA)am Ende signalisiert.
Dazwischen können beliebig viel Zeichen stehen.

Jasmin

Quelle:
http://de.wikipedia.org/wiki/HTTP#Argument.C3.BCbertragung

von Jasmin (Gast)


Lesenswert?

Hallo,

auf der Webseite http://web-sniffer.net/

kann man wunderbar den Protokollaufbau mit den steuerzeichen erkennen.
Hier ein Aufruf einer Webseite:

HTTP Request Header
Connect to 194.231.228.187 on port 80 ... ok

GET / HTTP/1.1[CRLF]
Host: www.key-it.de[CRLF]
Connection: close[CRLF]
Accept-Encoding: gzip[CRLF]
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-shockwave-flash, */*[CRLF]
Accept-Language: de[CRLF]
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;
InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Web-Sniffer/1.0.24[CRLF]
Referer: http://web-sniffer.net/[CRLF]
[CRLF]

Hier kann man also wunderbar den Aufbau nebst Steuerzeichen erkennen.


Jasmin

von Thomas B. (tomb)


Lesenswert?

Jasmin:
Wie gesagt, es ist erst eine primitive Version eines HTTP-Servers.
;o)

Wie die Seite angefordert wird habe ich bereits an der seriellen
Leitung einem Terminal Programm "ausgemessen" und im Internet
gelesen, nur noch nicht implementiert.
Das wird der nächste Schritt werden. Zum senden von Kommandos (Schalten
von Ausgängen usw.) muss ich die eintreffenden Daten analysieren und Je
nach Kommando reagieren.

Der Trick mit der 400ms Verzögerung ist nur ein provisorium. Dies war
in meinen Augen der einfachste Weg.

Gruss Thomas

von Thomas B. (tomb)


Lesenswert?

Die Webseite http://web-sniffer.net habe ich schon gesehen, sehr
nützlich.

von Jasmin (Gast)


Lesenswert?

Thomas,

wenn es nicht schon so spät wäre, würde ich in den Keller gehen und
meinen PC anwerfen,,,,;-)

Die sich ergebenden Möglichkeiten sind doch schon toll, oder ?
Und das alles mit nem "billigen Xport o.ä.".
Wundersam, das so wenige mitziehen.

Ich hoffe mich auch bald wieder produktiver eingeben zu können; Die
Arbeit frißt mich gerade etwas auf ...........

Deine Vorgehensweise finde ich pragmatisch sympatisch. Ich pflege meist
auch erst den einfacheren Weg zu gehen...
Der Rest folg später.

Jasmin

von Thomas B. (tomb)


Lesenswert?

Tja, ich denke es ist halt einfacher, wenn ich eine Baustelle nach der
anderen bearbeite als an mehreren Stellen zu beginnen.

Ein weiterer Vorteil ist, dass ich nun relativ einfach Variablen
auslesen kann: Einfach in den HTML-Code einbauen und ausgeben. Dies
erleichtert sehr die Fehlersuche.

Gruss Thomas

von Rahul (Gast)


Lesenswert?

>Wundersam, das so wenige mitziehen.

Interessantes Thema, an dem ich mich auch beteiligen würde, wenn ich
nicht ein anderes Projekt hätte.

Zum Thema "preiswert" fällt mir immer wieder der Siteplayer von
Netmedia ein. Mit dem habe ich damals meine Diplomarbeit gemacht und
erweitere das Projekt jetzt um eine UDP-Steuerung...


Einen XPort habe ich auch noch irgendwo rumliegen...

Eigentlich müsste es doch gehen, die festen Bestandteile der Website im
Flash abzulegen byteweise zu senden, und die Sachen, die durch das "$"
markiert werden (netmedia benutzt dafür das "^") während dieser
Sendung an den XPort aus dem SRAM zu lesen. Damit würde man sich ein
paar SRAM-Zellen sparen...

von Thomas B. (tomb)


Lesenswert?

Rahul:
Mit einem Java-Applet kann man so etwas realisieren. Ich möchte aber
eine Java freie Lösung. Falls du eine andere Lösung gefunden hast, wäre
das schon interessant.

Gruss Thomas

von Rahul (Gast)


Lesenswert?

>Mit einem Java-Applet kann man so etwas realisieren.

Bäh! JAVA!

(war das verständlich?) ;-)

von Jasmin (Gast)


Angehängte Dateien:

Lesenswert?

Rahul, Thomas,


ich habe mich gerade einmal 10 Minuten mit dem Siteplayer beschäftigt.
(Tochter macht noch heia...)
Also das Prinzip ist hier genau das, was Thomas und ich ja gerade so
mit dem Xport umsetzen.
Die Doku zum Siteplayer ist klasse, geht sogar genau auf solche
Probleme ein die ich mit der Umsetzung am Xport habe. Ein super Fundus
zum Knowledgetransfer !

Danke Rahul...

Wo habt Ihr den damals bezogen ?

@JAVA:

Möchten wir hier an dieser Stelle einfach vermeiden, weil gar nicht
nötig !


Jasmin

von Rahul (Gast)


Lesenswert?

Einziger Vertrieb in D scheint Lascar.com zu sein.
Siteplayer für ca. 30 Euro + 8 Euro RJ45-Trafodose + Versandkosten...

JAVA ist mir zu bunt...

von Thomas B. (tomb)


Lesenswert?

Java geht nicht mit lynx. ;o)

Ich werde das PDFin der Pause mal anschauen, danke!

von Rahul (Gast)


Lesenswert?

Wer benutzt denn noch lynx (reintextbasierter HTML-Browser?) ?

von Thomas B. (tomb)


Lesenswert?

Ich und alle die nur eine Text-Konsole zur verfügung haben.

von Thomas B. (tomb)


Lesenswert?

Nein, Scherz beiseite, ich möchte etwas, das man mit jedem Browser
bedienen kann, also etwas ohne Java-Zeugs. Und wenn das mit Lynx
klappt, dann wohl mit jedem Browser.

von Jasmin (Gast)


Lesenswert?

Hallo,

ich bevorzuge übrigens auch nur reine Text E-Mails.
HTML Mails nehme ich erst gar nicht an.....
Lynx ist klasse, ebenso eine bash oder ksh...

Puristen gibt es überall !

Jasmin ;-)

von Ecki B. (ecki)


Lesenswert?

ABO

von Rahul (Gast)


Lesenswert?

Wenn man seine ersten PC-Erfahrungen auf DOS-Maschinen gemacht hat (Ende
der 1980er), wird man auch gerne "Tastenkombinationsfuzzi" von den
"Mäuseschubsern" genannt... (Hat jetzt nicht wirklich was mit dem
Thread zu tun)

von Bernardini (Gast)


Lesenswert?

abo

von Thomas B. (tomb)


Lesenswert?

Jasmin:
Ich habe gestern damit begonnen, das generieren der HTML-Seite zu
verbessern. Im Moment ist die Grösse der Seite auf die Grösse des
Ausgabebuffers beschränkt.
Neu wird die Ausgabe in einzelne Blöcke unterteilt, dies schont die
RAM-Resourcen erheblich (im Prinzip gibt es so kein Grössenlimit mehr,
ausser die Grösse des Flash/EEprom).
Auch kann man so in Zukunft grössere Bilder (z.B. eine generierte
Messkurve) übertragen, oder Dokumente aus einem externen Speicher.

Hast du dich schon tiefer mit den Anfragen des Browsers an den Server
beschäftigt? Als nächster Schritt möchte ich gerne die Eintreffenden
Kommandos interpretieren.
Wenn man auf bei einem Formular einen Knopf drückt (z.B. "Submit"
hier im Forum), was wird dann genau an den Server geschickt?

Gruss Thomas

von Rahul (Gast)


Lesenswert?

>Wenn man auf bei einem Formular einen Knopf drückt (z.B. "Submit"
>hier im Forum), was wird dann genau an den Server geschickt?

Man bekommt die Seitenanfrage geschickt. Daran angehängt sind die
Parameter und Werte. (Zumindest ist das beim Siteplayer so...)

z.B.
www.blafasel.org/index.html?Name=Mueller&Vorname=Horst&submit=submit

auf selfhtml.org wird das Thema "Formulare" (zu denen der
Submit-button gehört) schön beschrieben.

von Thomas B. (tomb)


Lesenswert?

Rahul:
An Selfhtml habe ich gar nicht gedacht... Danke!

von Jasmin (Gast)


Lesenswert?

Hallo Thomas,

ich werde etwas zur HTTP Verwurstelung an diesem Wochenende zur
Verfügungs stellen (BASCOM).

Lies einmal im Siteplayer Manual nach:
http://www.siteplayer.com/docs/web_enable.pdf

Dort ist es sehr scön erklärt, wie man mit der HTML input type Methode
per submit Daten vom Browser an den Xport sendet und wie diese dann
auch aussehen.

Im übrigen sei nochmal erwähnt, dass der Siteplayer konzeptionell genau
unsere Idee umsetzt.

Selfhtml lohnt sich imer zum nachschauen.


Jasmin

von Jasmin (Gast)


Angehängte Dateien:

Lesenswert?

Ach ja,

zum Schnüffeln hattest Du doch den seriellen Port angezapft (die 2.
RS232 am PC ist Gold Wert !!!).

Unicom von http://www.shamrock.de/dostools.htm ist dazu immer noch
unübertroffen !!!


Jasmin

von Jasmin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hier ein bischen Programmgerüst.
Das ist ziemlich durcheinander, habe da auch schon seit Monaten nicht
mehr draufgeschaut.
Also bevor jemand überschnell Fragen stellt, bitte selber ein bischen
Hirnschmalz reinstecken.

Ich erinnere mich, das es mit Firefox problemloser lief als mit dem IE;

warum weiß ich nicht.

Bitte auf die CRLF Auswertung im HTTP Stream achten, scheint das A un O
zu sein ;-)


Jasmin

von Jasmin (Gast)


Lesenswert?

N'abend,

ich benötige eure Hilfe..............

Wenn ich eine Datei im JPEG Format über die serielle schnittstelle
senden möchte verlassen mich meine Ideen.
Ich möchte dazu kein Filsystem auf dem AVR hinterlegen.
Nehmen wir einmal an ich hätte die Datei im Binärformat irgendwo im
Flash abgelegt...
Na ja, bis dahin alles kein Problem, aber wie sende ich nun die Datei
auf Anfrage des Browsers ab ?
Jede Anregung ist willkommen !

Jasmin /D.S

von Thomas B. (tomb)


Lesenswert?

Jasmin (oder Dietmar?):
Ich habe deinen Code kurz angeguckt, bist du der Dietmar Steiner (DS)
aus dem oben angesprochenen Thread?
http://www.mikrocontroller.net/forum/read-1-247578.html
Eure Notation scheint auf jeden Fall die selbe zu sein und beim whois
auf key-it.de ist als Admin auch Dietmar Steiner eingetragen. Ist aber
ne schlaue Idee, ist mir auch schon aufgefallen, dass man mit
"Tittenbonus" mehr Antworten erhält. ;o)

Zu den technischen Details:
Ich habe bis jetzt noch kein Formular in Html gebastelt, ist aber eine
gute Idee, ich kann eines auf den AVR Laden und dann abhorchen, was der
Browser an den XPort sendet.

Die Übertragung von Bildern ist(denke ich mal) das selbe wie von
HTML-Seiten. Der Header muss sicher angepasst werden, so dass der
Browser weiss, dass und welches Bild er empfängt. Mit den Bildern warte
ich noch bis der Rest zu 100% funzt.

Der Siteplayer scheint das selbe zu machen, was ich bis jetzt gelesen
habe. Aber wer will den schon eine fertige Lösung? :oP

Gruss Thomas

von Jasmin (Gast)


Lesenswert?

@ Thomas,

mein comimg out !!!
War aber ursächlich so gar nicht meine Intention mit dem XXX-Bonus zu
spekulieren.
Aber so richtig angebaggert wurde ich allerdings auch nicht ;-(.
Wie Du aufgrund Deiner fachmännischen Recherchen feststellen kannst,
ist die MC-Fummelei reiner Zeitvertreib für die wenig verbleibenden
Wochenendstunden.

Ich nehme mittlerweile an, das die JPEG Übertragung reines
"Bitbanging" sein wird. Daher bei Browseranfrage einfach Byte für
Byte ein JPEG übertragen......
Im Moment bekomme ich den Hintern nicht hoch, sprich keine 10 Minuten
freie Zeit.
Habe mir in den letzten Tagen neue Fenster mit Rolladenmotoren einbauen
lassen (24 Stück !!). Auch wieder so ein MC-Thema. In jedem
Rolladenkasten liegt schon ein CAT 5 Kabel (BUS).
Testschaltung und Software ist schon fertig; für die ulrimative
Rolladensteuerung... (RS485 Bus mit kleinen Atmega im Rolladenkasten
und Steuereinheit mit größerem ATMEL).

Die kann ich ja dann mit unserer Idee WEB-Enablen !!!!



Gruß, "Jasmin", alias D.S.

von Jasmin (Gast)


Lesenswert?

P.S.

Aus welchem Teil der Republik stammst Du ?


Dietmar

von Thomas B. (tomb)


Lesenswert?

Dietmar:
Kein Problem, in vielen technischen Foren gibt es xxx-Bonus. Wenn ein
Mann etwas fragt, dann heisst es, RTFM, benutz doch Google, das hatten
wir schon 1000mal....

Bei einer Frau werden gleich die Lösungen präsentiert...  Zufall? Ich
weiss nicht... ;o)

Für Bilder muss im Header sicher der Content-Type angepasst werden,
irgend etwas wie "Content-Type: image/jpeg" und anschliessend das
Bild in einzelnen Bytes übertragen, das sollte schon alles sein. Ich
finden den Link nur nicht mehr, bei dem ich das gelesen habe.

> Aus welchem Teil der Republik stammst Du ?
Aus der Schweiz. :o)

Gruss Thomas

von Thomas B. (tomb)


Lesenswert?

Guten Abend,
ich habe die neue Variante für die Generierung der HTML-Seiten fertig
gestellt, scheint soweit zu funzen.

Nun hat mich die Neugierde doch gepackt und ich habe versucht, ein Bild
in die Webseite einzubinden. So wie ich das bis jetzt verstanden habe,
sendet der Browser die Anfrage für die Seite, diese wird vom
HTTP-Server an den Browser geschickt.
Nun müsste der Browser aber noch nach dem Bild "fragen", das macht er
aber nicht.
Googeln brint nicht viel, alle Beispiele die ich bis jetzt gefunden
haben beschreiben nur, wie man eine Seite sendet, wie das mit den
weiteren Dokumenten ablaufen sollte, habe ich keine Ahnung.

Kann mir jemand einen Tipp oder einen Link geben, wo das beschrieben
ist, ein Beispiel oder so?

Gruss Thomas

von Marco S. (masterof)


Lesenswert?

das ist ein Interresantes Thema.

Hat man da Mehr Frei Leistung übrig als beim RTL oder Schluckt der
Xport noch mehr?

von Thomas B. (tomb)


Lesenswert?

Marcor:
Ich benutze nur RX und TX für den XPort.

Gruss Thomas

von Marco S. (masterof)


Lesenswert?

ich meinte Eignetlich ob der "HTTP-Server" viel Rechnenleistung
braucht oder ist das nur die byts über die UART raus schieben?
Gruß marco

von Jasmin (Gast)


Lesenswert?

....

es benötig fast keine "Rechenleistung".
Reines schieben von Bytes... der Hardware UART der Atmels macht das mit
links !
Jasmin

von Thomas B. (tomb)


Lesenswert?

Ich habe Leistung als Leitung gelesen...

von Marco S. (masterof)


Lesenswert?

macht nichts. Wenn du meine Handschrift lesen würdest währe das normal
das man da was anders liest.

von Thomas B. (tomb)


Angehängte Dateien:

Lesenswert?

Ich bin wieder einen Schritt weiter, das übertragen von Bildern klappt
nun auch. Da der Flash-Speicher im atmega8 etwas beschränkt ist,
reichte es nur für ein Smilie. :o)

Als nächsten Schritt muss ich unbedingt die Anfrage des Browsers
analysieren. Der Trick, mit der Zeitverzögerung nach dem Senden der
Daten vom Browser, ist nun definitiv nicht mehr brauchbar, hat sich für
die ersten Versuche aber gut bewährt.

Gruss Thomas

von Thomas B. (tomb)


Angehängte Dateien:

Lesenswert?

Sorry, das obere Bild ist ein bmp, kein jpg... hier das richtige.
Gruss Thomas

von Jasmin (Gast)


Lesenswert?

Hallo Thomas,


wie funktioniert das nun prinzipiell mit der Dateiübertragung (JPEG)?
Ich gehe davon aus, das Du kein Filesystem implementiert hast sondern
es anders in den Griff bekommen hast..


Gruß Jasmin / DS

von Thomas B. (tomb)


Lesenswert?

Der Browser "fragt" nach dem Bild, dann sende ich den HTTP-Header für
ein Gif und anschliessend die Rohdaten.

Der "Zahlenfriedhof" als Char Array abgelegt, wie die Webseite oder
der Header.

Gruss Thomas

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich hab mal eine kleine Demo in C für einen Atmega8 programmiert. Es
wird dabei die angefragte Datei zurückgegeben. In dem angefügten
Beispiel sind 4 Test-HTML-Dateien enthalten.
Bei Änderungen an den HTML-Seiten ist es wichtig die Content-Lenght
anzupassen. Evtl. sollte man dazu doch mal ein kleines Programm
schreiben (ich hab das im GCC-Forum schonmal geftragt und das Ganze mit
sed probiert, aber das ist ja sowas von kryptisch...)

Den Xport sollte man auch noch so anpassen, dass der Puffer nicht nach
jedem Byte geleert wird. Ich habe mir die Übertragung eben mal mit
Ethereal angeschaut und gesehen, dass der Xport in Werkseinstellung
jedes Byte einzeln überträgt. Da jedes Byte in einen komplettes
TCP-Paket gepackt wird ist das natürlich ein ziemlicher Overhead.

von Thomas (Gast)


Lesenswert?

Seh grad, in den html-Dateien fehlt noch ein \r vor dem \n.
Seltsamerweise funktioniert es bei mir auch nur im Firefox, aber wieso?

von Jasmin (Gast)


Lesenswert?

Thomas,

das Problem hatte ich ja auch, Firefox funktioniert und IE nicht.
Ich hatte und habe keine Idee.

Wieseo SED ? Ich kenne  SED Implementierungen nur von Unix/Linux.
Wie willst Du mit dem Atmega ein SED Kommando absetzen ?
Die Größe einer Datei in C zu ermitteln sollte doch eine KLeinigkeit
sein; selbst wenn sie irgendwo im Flash steht und kein Filesystem
zugrunde liegt.
Meines Erachtens konnte man die contenth length , zumindest bei reinen
html ohne Dateidownload völlig Mißachten.
Oder wie sind Deine Erkenntnisse ?


D.S.

von Thomas (Gast)


Lesenswert?

Mit sed habe ich mir das so gedacht, eine normale nicht angepasste
html-Seite mit sed z.B. über das makefile so anzupassen, dass es direkt
mit einkompiliert werden kann. Also Sonderzeichen escapen, Newlines
durch \n ersetzen etc.


Die Content-Length aus dem Flash zu ermitteln ist nicht schwer. Jedoch
hab ich ja auch die Funktion drin, in der Seite Werte dynamisch
anzeigen zu lassen. Folglich müsste ich zumindest Teile der Seite im
RAM aufbauen um die Länge zu bestimmen. Davon hat der Atmega8 aber
nicht so viel.

Ohne Angabe der Länge bleibt beim Firefox immmer der Ladebalken
bestehen. So sieht es auch aus, wenn ich eine zu kleine Content-Length
angebe.

Warum es bei mir beim IE generell nicht funktioniert ist mir ein
Rätsel. Wenn man sich das mit Ethereal anschaut werden auch die
kompletten Daten übertragen. Auf irgendwas scheint er dann aber noch zu
warten.

Wenn ich herausgefunden habe, woran es liegt melde ich mich nochmal.

von Daniel M. (usul27)


Lesenswert?

Der Content-Length-Header ist nicht zwingend notwendig. Normalerweise
beendet der Server dann einfach die TCP Connection. Ich vermute, dass
das Problem hier ist, dass genau das nicht passiert. Dann läuft das
Teil in einen TCP-Timeout, der üblicherweise im Bereich 1-2 Stunden
liegt ;)

von Jasmin (Gast)


Lesenswert?

@ Daniel, Thomas,

genau das habe ich so auch beobachtet, wenngleich die Timeouts nur ca.
10-15 Minuten dauerten.
Ich meine auch gelesen zu haben, das dies von der Version des HTTP
Protokolls abhängt.
Neuere Versionen arbeiten "zustandslos", daher wird die TCP
Verbindung sofort beendet.
Vielleicht gibt es auch ein Metatag mit "Hangup-Funktion".

Aber im Grunde bin ich ziemlich sicher, das der Header eben nicht
erforderlich ist, also können evtl. Probleme nicht daher rühren.

Generell kritisch sind immer die nötigen CR/LF und die Leerzeile mit
CR/LF am Ende. Offenbar reagieren da die Browser etwas unterschiedlich.


Kann das jemand so bestätigen ?


Was Du mit dem SED vorhattest habe ich jetzt verstanden.
Bei dynamischen Webseiten ist das natürlich keine Option.


D.S.

von Daniel M. (usul27)


Lesenswert?

http://www.faqs.org/rfcs/rfc1945.html

Zitat: "Except for experimental applications, current practice
requires that the connection be established by the client prior to each
request and closed by the server after sending the response."

HTTP/1.1 führt Erweiterungen ein, die es ermöglichen die Verbindung
offen zu lassen, aber auch dort entscheidet der CLIENT, ob er das will.
Also auch bei HTTP/1.1 kommt man nicht um ein Schliessen der Verbindung
herum.

von Thomas B. (tomb)


Lesenswert?

Guten Abend,
bei dem schönen Wetter hatte ich keine Lust zum basteln. :o)

Thomas: Die HTML-Datei mit #include in den Code einzubauen ist eine
sehr gute Idee, muss ich auch machen, danke.

Die Content-Length ist nach meinen Erkenntnissen wichtig, wenn eine
Seite aus mehreren Dokumenten besteht (html und Bilder), muss die Länge
stimmen, sonst kann man lange warten bis die Bilder übertragen werden.

Ich habe das so gelöst, dass ich die Seite generiere und so die Länge
bestimme, dann wird die Content-Length in den Header eingesetzt, der
Header gesendet und anschliessend die Webseite.

Gruss Thomas

von jottafcabrera (Gast)


Lesenswert?

it excuses but not if tendras the code to test USBWIZ with a 
microcontroller AVR

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.