Data TILL en webbsida

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Data TILL en webbsida

Inlägg av Nerre »

Hur serveras webbsidan då om du inte har en webbserver?
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Data TILL en webbsida

Inlägg av Icecap »

Exakt! Jag har funderingar på att lägga in en web-sida i EEPROM'en och när en förfråga kommer vill jag kasta ut dessa data, rått och brutalt. Testet vill sedan visa om det fungerar.

Men jag lutar åt att tänka på en app - om jag bara kunde installera Android SDK...
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Data TILL en webbsida

Inlägg av adent »

Att implementera en webserver för basic-basic-basic-saker som du behöver är faktiskt inte svårt eller stort alls, du behöver bara implementera
typ en promille av allt som behövs. Det är pyttelite stränghantering bara. Det är även roligt!

MVH: Mikael
Användarvisningsbild
Jan Almqvist
Inlägg: 1652
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Data TILL en webbsida

Inlägg av Jan Almqvist »

Icecap skrev:OS? WLAN-modulen sitter på en seriell port på en Renesas RX210 32-bit µC.
Det finns inget OS, inget PHP eller liknande!

Jag vill dock påstå att jag är ganska skaplig på C men att börja med att implementera en web-server lär knappast hända! Då vill det vara mer effektivt att skapa en App åt Android.
Jag har förslag på Android-lösning, kan man presentera detta eller blir det otillåten reklam isf?
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Data TILL en webbsida

Inlägg av Nerre »

Icecap skrev:Exakt! Jag har funderingar på att lägga in en web-sida i EEPROM'en och när en förfråga kommer vill jag kasta ut dessa data, rått och brutalt. Testet vill sedan visa om det fungerar.
Du har alltså tänkt att skriva en webbserver. För det där är just vad en webbserver gör. Den svarar på http-anrop och serverar html-sidor. Men den måste också kunna hantera felaktiga anrop och lite såna grejer, och då är det inte särskilt svårt att lägga in några villkor för att hantera anropsparametrar.
Användarvisningsbild
MiaM
Inlägg: 12842
Blev medlem: 6 maj 2009, 22:19:19

Re: Data TILL en webbsida

Inlägg av MiaM »

Aha, då förstår jag.

Jag trodde att du dels hade en "hemmaserver" igång 24/7, typ antingen nån såndär "nätverksdisk på anabola"-burk eller en helt vanlig PC med t.ex. Linux eller Windows. Nu förstår jag hur du menar.

Du behöver i princip göra en server som lyssnar på anrop på port 80 och när den får strängen "GET /blaha.blaha/blaha.blaha" så tittar den i strängen efter GET för att avgöra vad som ska serveras, och så skickar den ut data som ska serveras, HTML-koddat (med lite HTTP-headrar i början), och sen stänger den tcp-socketen och börjar åter igen lyssna igen.

Om du bara behöver en enda sida som visar mätvärden, helt utan nån möjlighet att begära olika sidor eller liknande, så kan du till och med strunta i att tolka inkommande saker. Det är kanske bra att åtminstone lyssna efter GET o.s.v. enligt HTTP-specen, men i stort sett funkar det antagligen om du bara skickar din webbsida till varje mojäng som ansluter till din burk.

Egentligen bör en webbserver klara flera anslutningar samtidigt, men för bruk hemma och om du kör helt utan bilder, css-filer och annat separat lagrat så räcker en enda anslutning för att hämta sidan, och då är det bara ifall flera försöker hämta sidan exakt samtidigt som det kan bli strul.

Du bör ha nån timer som rått dödar TCP-socketen ifall allt inte går snabbt nog. På ett hemmanät kan den timern nog vara extremt mycket kortare än vad TCP-specen egentligen säger.

Om webbsidan du serverar blir såpass liten att den ryms inom en MTU (eller kanske 2-3 MTU) så kan du väl ha en timeout på bra mycket kortare än en sekund.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Data TILL en webbsida

Inlägg av Icecap »

Ok, nu har jag hunnit till att det börjar bli verklighet.

Numera fångar jag "GET / HTTP/1.1" och det fungerar. När det sker spottar min µC ut en sträng som är mycket enkel. Kollar jag på den HTML-fil jag har skrivit för detta ser den ut som en websida i FF - men när jag skickar data från µC'n saknas det något - men vad?

Kod: Markera allt

const _UBYTE Homepage[] = {
"\r\n"
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n"
"<HTML>\r\n"
"<HEAD>\r\n"
"<META HTTP-EQUIV=\"CONTENT-TYPE\" CONTENT=\"text/html; charset=windows-1252\">\r\n"
"<META NAME=\"AUTHOR\" CONTENT=\"xxxxxx AB\">\r\n"
"<META NAME=\"CHANGEDBY\" CONTENT=\"xxxxxx AB\">\r\n"
"<STYLE TYPE=\"text/css\">\r\n"
"</STYLE>\r\n"
"</HEAD>\r\n"
"<BODY LANG=\"sv-SE\" DIR=\"LTR\">\r\n"
"<P STYLE=\"margin-bottom: 0cm\">V&auml;lkommen till xxxx's websida p&aring; remoten.</P>\r\n"
"<LI><a href=\"#10\">V&auml;lj 10km/t</a></LI>\r\n"
"<LI><a href=\"#20\">V&auml;lj 20km/t</a></LI>\r\n"
"<LI><a href=\"#30\">V&auml;lj 30km/t</a></LI>\r\n"
"<LI><a href=\"#40\">V&auml;lj 40km/t</a></LI>\r\n"
"<LI><a href=\"#50\">V&auml;lj 50km/t</a></LI>\r\n"
"<LI><a href=\"#60\">V&auml;lj 60km/t</a></LI>\r\n"
"<LI><a href=\"#70\">V&auml;lj 70km/t</a></LI>\r\n"
"<LI><a href=\"#80\">V&auml;lj 80km/t</a></LI>\r\n"
"<LI><a href=\"#90\">V&auml;lj 90km/t</a></LI>\r\n"
"</BODY>\r\n"
"</HTML>\r\n"
  };
Vad saknas för att mottagaren ska fatta att det är en websida?

EDIT: och jag kan INTE styra om sockets ska öppnas eller stängas! WLAN-modulen är "fast" på en port och när det kallas på den port får jag ut de bytes på den seriella porten, och jag kan svara tillbaka på samma sätt.

För tillfället är det port 2000 jag använder om den nu har betydelse. Jag använder http://192.168.1.187:2000 som IP-adress i FF och när jag refreshar sidan kommer det en längre smörja som börjar med "GET" osv.

Det jag får när jag refreshar sidan är:

Kod: Markera allt

*OPEN*GET / HTTP/1.1
Host: 192.168.1.187:2000
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
När jag sedan stoppar FF från att hämta mer (inget visas ju ändå) kommer det:
*CLOS*
Maalobs
Inlägg: 1304
Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm

Re: Data TILL en webbsida

Inlägg av Maalobs »

Den första radmatningen, är det din separator från headern i HTTP-svaret?
Vanligtvis brukar man lägga till det i slutet på headern, men OK.
För du har väl inte separator på båda ställena, då blir inte första tecknet en öppnande tag, och jag har för mig att du måste ha en öppnande tag som första tecken.
Du kan förresten ta bort alla dina \r\n (utom i headern), det fyller ingen funktion utanför pre-taggar.

Om det inte var det som var problemet, klistra in din html i validatorn och se vad den säger:
http://validator.w3.org/

Om det fortfarande är knas, så skulle jag med en packet sniffer jämföra ett anrop till en statisk html-fil med ditt exempeldata i IIS på datorn, mot ett anrop till din embedded-server med samma exempeldata:
http://www.wireshark.org/
Maalobs
Inlägg: 1304
Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm

Re: Data TILL en webbsida

Inlägg av Maalobs »

Jaha, redigeringar av samma post, ja du får en massa skräptecken.
Jämför med sniffer som jag föreslog ovan, för att se exakt vad som är fel.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Data TILL en webbsida

Inlägg av Icecap »

Men se där... Testade att gå in via mobilen och där dyker "hemsidan" upp och jag kan välja de olika punkter i listan. Dessa utlöser sedan var deras "GET bla bla" som jag kan fånga och använda.
Maalobs
Inlägg: 1304
Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm

Re: Data TILL en webbsida

Inlägg av Maalobs »

Om du anger HTTP/1.0 så kan du skippa host-fältet helt i headern, den tillkom i 1.1.
Kolla med sniffer, det sker något skräpigt som din dators browser inte sväljer, däremot telefonens.
Och varför ekas ditt GET-anrop tillbaka från servern överhuvudtaget, dessutom korrupt.
Det ser ut lite som ett buffringsfel mot socketen.
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Data TILL en webbsida

Inlägg av Nerre »

Det där du visar är ju allt det som Firefox skickar vid en request, den skickar alltså en massa mer än bara GET-raden. Jag misstänker att en webbläsare får problem om "servern" börjar skicka svar innan den har skickat hela förfrågan.

Men sen som sagt var, om Firefox visar det så innebär ju det att din "server" ekar allt FF skickar och det är väl inte riktigt rätt. Eller är det där output från en sniffer?



Sen ska ju ett http-svar innehålla lite mer än bara HTML-koden.
http://en.wikipedia.org/wiki/Hypertext_ ... se_message

Den kod du visar saknar ju
- A Status-Line (for example HTTP/1.1 200 OK, which indicates that the client's request succeeded)
- Response Headers, such as Content-Type: text/html

men det kanske du skickar separat innan?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Data TILL en webbsida

Inlägg av Micke_s »

Vill du slippa implementera httpd servern så kan du titta på carambola 2 alt arduino yun, de kör openwrt och har mycket färdigt. Du kan även ta en tp-link mr3020 och flasha om.

Atheros soc har uart och USB host.

Edit: du får även plats med jquery, vilket underlättar webbsidan en del.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Data TILL en webbsida

Inlägg av Icecap »

Nerre: jag får output på en seriell port så FF-requesten skickas INTE tillbaka till FF!

Sedan har jag inte skrivit det men jag har en delay lagt in så att när jag detekterar "GET /" går det ett tag innan det svaras.

För tillfället är det så att när browsern requester en sida detekteras "GET /" och sedan kollar jag efter att det kommer en "Select_". Kommer "Select_"ska de nästa två tecken vara ett värde ("10", "20" osv) som är den information jag vill åt. De två bytes kommer också och jag kan omvandla dom till ett värde och gå vidare med det.

Kruxet är bara att när browsern har hämtat "websidan" väntar den på något, jag har alltså missat att lägga in någon text som anger att det inte finns mer att hämta.

Jag har testat att lägga in "*CLOS*\r\n" på slutet men det fungerar inte.
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Data TILL en webbsida

Inlägg av Nerre »

Det där *OPEN* och *CLOS* tror jag är nån slags statuskoder från socket-rutinen, det har inget med http eller HTML att göra.

Möjligen är det så att du behöver specificera en Content-Length för att browsern ska se att sidan är klar.

Kolla 4.4 här http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html
Skriv svar