Sida 1 av 1

Dollartecken framför "variabel"

Postat: 6 februari 2008, 09:36:16
av thepirateboy
Jag sitter och tittar på koden till en liten webserver (Atmega1281 och ENC28J60).

Exempel på hur det ser ut finns på http://tennet.no-ip.info:84/temperature.htm

Koden för denna sida verkar vara denna

Kod: Markera allt

prog_char temperature_htm[]	= \
"<html><head> $CSS <title>Atmega1281 Web Server - TEMPERATURE</title></head>\
<body>\
<hr color=\"FF8932\"> \
<div id=\"blocTOP\"> \
<a href=\"index.htm\">home</a> | \
<a href=\"temperature.htm\">temperature</a> | \
<a href=\"ntp.htm\">ntp</a>  \
</div> \
<div id=\"blocLEFT\"> \
<p> \
<a href=\"index.htm\" class=\"vertical\">home</a> \
<a href=\"temperature.htm\" class=\"vertical\">temperature</a>  \
<a href=\"ntp.htm\" class=\"vertical\">ntp</a>  \
</p> \
</div> \
<div id=\"blocCENTRE\"> \
Temperature is read with a TC74 connected by I2C.<br><br> \
<b>Temperature in my attic: $TEMPERATURE °C </b> \
</div> \
</body> \
</html> \
";
I koden finns TEMPERATURE med ett dollartecken framför. Min gissning är förstås att detta byts ut mot någon variabel. Jag hittar dock ingen mer TEMPERATURE skrivet med stora bokstäver men däremot en funktion Temperature

Kod: Markera allt

char *Temperature(void)
{
	sprintf(buf," %+d ",temperature);
	return buf;
}
Jag kan bara C och när jag söker på dollartecken på Google får jag upp en massa om PHP. Kan någon förklara hur det funkar?

Postat: 6 februari 2008, 09:58:10
av AndLi
i php kommer $TEMPERATURE ersättas med det värde $TEMPERATURE har. (detta kommer altså ske på webserversidan)

Men det låter ju lite märkligt att de skulle ha stoppat in php stöd i atmega1281... Får det plats?

Du har ingen funktion som tuggar igenom koden efter $?

Finns all kod på nätet någonstanns?

Postat: 6 februari 2008, 09:59:46
av speakman
Det är inte mycket man kan få ut av det här lilla urdragen, men funktionen längst ner skriver ju in aktuell temperatur i "buf" och slutresultatet blir då " +22 ".

Sedan lär väl "buf" ersätta "$TEMPERATURE" någon annanstans i koden, men inte i något du har med här. En teknisk benämning på det hela är substitution om det hjälper dig.

Postat: 6 februari 2008, 10:20:07
av thepirateboy
Oki, tänkte om det var nåt lurt med att det inte var skriftlägeskänsligt och TEMPERATURE anropar Temperature. I värsta fall får jag göra nåt exempel själv och kolla hur det funkar.

Koden baseras på Adam Dunkels uIP, men den verkar vara ändrad en del.

webserver.c ligger under apps/webserver

Gjorde en ny sökning och hittade TEMPERATURE på ett till ställe längre ner, hmm

Postat: 6 februari 2008, 10:29:07
av AndLi
rad 464/465 tycker jag verkar rätt klar vad den gör :D

Postat: 6 februari 2008, 10:42:08
av thepirateboy
Puh, vilken kod, man blir alldeles yr :) :)

Den letar alltså efter dollartecken i html-koden och kollar sedan vad som står efter dollartecknet. Om det är TEMPERATUR så byter man ut det mot det verkliga värdet på temperaturen.

Blev det ungefär rätt?

Postat: 6 februari 2008, 16:54:18
av Jeppsson
Jag har också haft samma frågor och hittade dessa filmerna på Microchips Webseminar som förklarar det ganska bra.

Detta är i och försig för en PIC men det är skrivet i C.

Du kan säkert hitta en och annan gobit som du kan ha nytta av :)

TCP/IP Networking Part 1: Web-Based Status Monitoring

TCP/IP Networking Part 2: Web-Based Control

TCP/IP Networking Part 3: Advanced Web-Based Control

Postat: 6 februari 2008, 18:23:18
av thepirateboy
Intressanta filmer! Har alltid undrat hur man får in variabler i HTML-kod på ett smidigt sätt...

Postat: 8 februari 2008, 00:25:39
av speakman
Undrar var servern ligger som filmerna är på. Laddade ner i > 5MB/s, och det är nog inte så vanligt från t.ex. USA.