da ich mal annehme das ganze ist für embedded zwecke - bau dir eine funktion die URL get variablen respektive HTTP-POST verarbeiten kann.
http://developers.sun.com/mobility/midp/ttips/HTTPPost/
und damit kannst du dann deine session oder variablen austauschen.
Cheers, Thalius
Weboberfläche
Hi . Um ein paar HTML Kenntnisse wirst du nicht drumherum kommen.
Den Code poste ich, damit PureBasic auch mal eines Tages auf embedded läuft
Wär echt super. Vielleicht geht das ja auch - nur nicht direct und ohne Grafik und ASM über C einbinden???
Hier ein Codeschnipsel. Wahrscheinlich muss man doch gosub benutzen. Irgendwie ist es jetzt einen tick langsamer
Ein Verzeichnis "www" musst du noch anlegen und dort alle html-Dateien hineinschubsen. Bilder wirst du vielleicht selber haben
. Viel Spaß beim durchsuchen vom POST string.
Marcus
Index.html
Index2.html
Index3.html
AtomicWebServer_Error.html
Den Code poste ich, damit PureBasic auch mal eines Tages auf embedded läuft

Hier ein Codeschnipsel. Wahrscheinlich muss man doch gosub benutzen. Irgendwie ist es jetzt einen tick langsamer

Ein Verzeichnis "www" musst du noch anlegen und dort alle html-Dateien hineinschubsen. Bilder wirst du vielleicht selber haben

Marcus
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Atomic Web Server in PureBasic by AlphaSND
;
; (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
; 25/03/2001
; Added path relative feature. It can be started everywhere
; Added the window to kill it easely
;
; 19/03/2001
; Added some new features (clients closed automatically)
;
; 17/03/2001
; First version.
;
Global ClientID.l
Global EOL$
Procedure.l BuildRequestHeader(*Buffer, DataLength.l, ContentType$)
Length = PokeS(*Buffer, "HTTP/1.1 200 OK"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Server: Atomic Web Server 0.2b"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Content-Length: "+Str(DataLength)+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Content-Type: "+ContentType$+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, EOL$) : *Buffer+Length
ProcedureReturn *Buffer
EndProcedure
Procedure SendHTMLPagePlainType(BaseDirectory$,RequestedFile$)
If ReadFile(0, BaseDirectory$+RequestedFile$)
FileLength = Lof(0)
ContentType$ = "text/html"
*FileBuffer = AllocateMemory(FileLength+200)
*BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
ReadData(0, *BufferOffset, FileLength)
CloseFile(0)
SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
FreeMemory(*FileBuffer)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure SendHTMLPageWithContentType(BaseDirectory$,RequestedFile$)
If ReadFile(0, BaseDirectory$+RequestedFile$)
FileLength = Lof(0)
Select Right(RequestedFile$,4)
Case ".gif"
ContentType$ = "image/gif"
Case ".jpg"
ContentType$ = "image/jpeg"
Case ".txt"
ContentType$ = "text/plain"
Case ".zip"
ContentType$ = "application/zip"
Default
ContentType$ = "text/html"
EndSelect
*FileBuffer = AllocateMemory(FileLength+200)
*BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
ReadData(0, *BufferOffset, FileLength)
CloseFile(0)
SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
FreeMemory(*FileBuffer)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Structure tmp
a.b
EndStructure
Procedure.s ScanPostData(a$, DefaultPage$)
MaxPosition = FindString(a$, Chr(13), 5)
Position = FindString(a$, " ", 5)
If Position < MaxPosition
RequestedFile$ = Mid(a$, 6, Position-5) ; Automatically remove the leading '/'
RequestedFile$ = RTrim(RequestedFile$)
Else
RequestedFile$ = Mid(a$, 6, MaxPosition-5) ; When a command like 'GET /' is sent..
EndIf
If RequestedFile$ = ""
RequestedFile$ = DefaultPage$
Else
*t.tmp = @RequestedFile$
While *t\a <> 0
If *t\a = '/' : *t\a = '\' : EndIf
*t+1
Wend
EndIf
ProcedureReturn RequestedFile$
EndProcedure
Procedure ProcessRequest(BaseDirectory$, RequestedFile$, a$)
If Left(a$, 3) = "GET"
If SendHTMLPageWithContentType(BaseDirectory$,RequestedFile$)=#False
SendHTMLPagePlainType(BaseDirectory$, "AtomicWebServer_Error.html")
EndIf
ElseIf Left(a$, 4) = "POST"
If SendHTMLPageWithContentType(BaseDirectory$,"Index3.html")=#False
SendHTMLPagePlainType(BaseDirectory$, "AtomicWebServer_Error.html")
EndIf
EndIf
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 80
BaseDirectory$ = "www/"
DefaultPage$ = "Index.html"
AtomicTitle$ = "Atomic Web Server v1.0"
EOL$ = Chr(13)+Chr(10)
*Buffer = AllocateMemory(10000)
If CreateNetworkServer(0, Port)
OpenWindow(0, 100, 200, 230, 0, "Atomic Web Server (Port "+Str(Port)+")")
Repeat
Repeat
WEvent = WindowEvent()
If WEvent = #PB_Event_CloseWindow : Quit = 1 : EndIf
Until WEvent = 0
SEvent = NetworkServerEvent()
If SEvent
ClientID.l = EventClient()
Select SEvent
Case 1 ; When a new client has been connected...
Case 4 ; When a client has closed the connection...
Default
RequestLength.l = ReceiveNetworkData(ClientID, *Buffer, 2000)
a$ = PeekS(*Buffer)
RequestedFile$ = ScanPostData(a$, DefaultPage$)
ProcessRequest(BaseDirectory$, RequestedFile$, a$)
EndSelect
Else
Delay(20) ; Don't stole the whole CPU !
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester(AtomicTitle$, "Error: can't create the server (port in use ?).", 0)
EndIf
End
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index2.html"><img src="chumon1.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
<form action='get' method='post'> <!-- ?suche=&sort= weglasen, ist sinnlos... method='post' beschreibt das übermitteln der Daten per $_POST[""]-->
<input type='text' name='suche' value='meine Variable' /><br /><!-- Hier kann der User den Text eingeben der Mittels der Variable "suche" übergeben wird-->
<input type='submit' value='Ändern' />
</form>
</HTML>
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index.html"><img src="chumon2.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
</HTML>
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index.html"><img src="blauhut1.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
</HTML>
Code: Alles auswählen
<HTML>
<CENTER>
<H2>Atomic Web Server v0.2</H2>
<font color="red">Error 404:</font> Requested file not found.
</CENTER>
</HTML>
@Thalius ich meine MMU-less embedded mit richtigem flat-binary ausführbaren Code. Ein Linux für MMU-less soll sogar auf richtigen Systemen viel schneller sein ca. 20 % oder mehr.
-- im Moment teste ich nen anderen irrlichtwrapper für PB --
Hier noch ein Beispiel, damit wir nicht off Topic laufen Smile
ist in C und HTML zum Ansteuern von einiger Hardware.
Natürlich läuft das nur aufm DE2 Nios Board.
Aber der Code ist recht einfach in PB nachzuahmen.
http://nioswiki.jot.com/WikiHome/Operat ... 9322778364
Mar
-- im Moment teste ich nen anderen irrlichtwrapper für PB --
Hier noch ein Beispiel, damit wir nicht off Topic laufen Smile
ist in C und HTML zum Ansteuern von einiger Hardware.
Natürlich läuft das nur aufm DE2 Nios Board.
Aber der Code ist recht einfach in PB nachzuahmen.
http://nioswiki.jot.com/WikiHome/Operat ... 9322778364
Mar
CGI mit nem Apache oder LHTTP geht auch von PB wenns direkt machen willst. Evtl einfacher. Im engl. gabs da paar Beispiele iirc.
ja die ALIX sind halt ideal zb fuer router oder firewall / mini-PBX Lösungen.
mmu less ist dann halt noch a bissl kleiner
ot:
zum IW -> den von drac ? heh
Cheers,
Thalius
ja die ALIX sind halt ideal zb fuer router oder firewall / mini-PBX Lösungen.
mmu less ist dann halt noch a bissl kleiner

ot:
zum IW -> den von drac ? heh
Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P