Hallo
habe jetzt das Programm für den WiFly-Server noch etwas geändert. Frames sind zwischenzeitlich wohl out. Mit "Eingebettete Frames" <iframe> läuft das Programm aber tadellos, am besten mit dem Firefox. Habe das Programm auch noch etwas gestrafft und Internetzeit und Feldstärkeanzeige eingebaut.
Code:
$regfile = "m32def.dat"
$crystal = 4000000
Dim An$ As String * 255
Dim Mes1 As String * 255
Dim Mes2 As String * 255
Dim Mes3 As String * 255
Dim Mes4 As String * 255
Dim Header As String * 50
Dim I1 As Byte , I2 As Byte , I3 As Byte , I4 As Byte , Zeit As Integer , Ta As Integer
Declare Sub Wifly
Config Timer0 = Timer , Prescale = 1024
On Timer0 Zeiten
Enable Interrupts
Echo Off
$baud = 19200
Print "$$$" ; '
Waitms 300
Print "time" ; Chr(13);
Waitms 500
Print "show t" ; Chr(13);
While Instr(mes1 , "Time") = 0
Input Mes1 ' holt Zeit aus Internet
Wend
Print "show rssi" ; Chr(13);
While Instr(mes2 , "RSSI") = 0
Input Mes2 'Feldstärke
Wend
Print "exit" ; Chr(13);
Enable Timer0
Start Timer0
Header = "HTTP/1.1 200 OK" + Chr(13) + Chr(10)
Header = Header + "Accept-Ranges: bytes" + Chr(13) + Chr(10)
Do
' Mes1 = Zeit Mes2=RSSI Mes3=timer Mes3= webbrowser an WiFly
Wifly
Loop
End
Sub Wifly
While Ischarwaiting() = 1
Input An$
I1 = Instr(an$ , "GET") 'nur Inputs mit GET interessant
If I1 > 0 Then
I1 = Instr(an$ , "GET /?eg1=") '>> Daten vom Client ans WiFly
If I1 > 0 Then
I1 = I1 + 10 : I2 = Instr(i1 , An$ , " ") : I3 = Instr(i1 , An$ , "%")
If I3 < I2 And I3 > 0 Then I2 = I3
I2 = I2 - I1
Mes4 = Mid(an$ , I1 , I2) : If I2 = 0 Then Mes4 = "" 'wegen bug in Bascom
End If
I1 = Instr(an$ , "d.htm") ' d.htm Name des eingebetteten Frame
If I1 = 0 Then
An$ = "<html><H1>Wifly-Server</H1>"
An$ = An$ + "<iframe src=d.htm Width=90% Height=200></iframe>"
An$ = An$ + "<P><form name=u1>send: <Input name=eg1 size=10 value=" + Mes4 + "></form>"
An$ = An$ + "</html>"
Else
An$ = "<meta http-equiv=refresh content=1>" '>> Seite wird jede sec aufgerufen
An$ = An$ + "<html>Sensor1=" + Mes1
An$ = An$ + "<P>Sensor2=" + Mes2
An$ = An$ + "<P>Sensor3=" + Mes3
An$ = An$ + "<P>Sensor4=" + Mes4 + "</html>"
End If
I2 = Len(an$) 'BitLänge muß exakt stimmen
Print Header + "Content-Length: " + Str(i2) + Chr(13) + Chr(10) + Chr(13) + Chr(10);
Print An$;
Ta = Zeit + 50 'für Timeout s.u. 50 entspr. etwa 2 sec
End If
Wend
End Sub
Zeiten:
Zeit = Zeit + 1 : Mes3 = Str(zeit)
' If Zeit > Ta Then 'timeout besser weglassen
' Ta = Zeit + 100 'funktioniert nicht zuverlässg
' Print "$$$" ;
' Waitms 300
' Print "close" ; Chr(13); ' falls länger als 2 sec keine Verbindung
' Print "exit" ; Chr(13);
' End If
Return
'Einstellungen für WiFly:
'Set UART Baudrate 19200
'Set Comm Remote = 0
'Set Ip Protocol = 3
Am Montag morgen habe ich erst https://www.roboternetz.de/community...ighlight=wiFly
entdeckt. Werde mir demnächst ansehen was Arduino+Wifi Shield zu bieten haben. War für mich aber interessant die Lösung weitgehend selbst zu stricken. Vielleicht kann´s der eine oder andere der mit Bascom pogrammiert, verwenden.
Beste Grüße
Christian
Lesezeichen