PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Basic Programmierung



ege51
02.11.2011, 02:48
Dieser Script ist in Basic programmiert.

Ich habe da meine Probleme diesen Script zu verstehen. Meine Projektarbeit hängt deswegen. Dieses Programm wurde schon von dem Hersteller avisaro definiert. Aber leider gibt es dafür keine Kommentare.
Ich bin Elektrotechniker und komme nicht klar.
Kann jemand diesen Script verstehen. Was passiert hier abschnitt für abschnitt? Ich meine was das Skript abschnittsweise macht?

Ich bitte um Hilfe ! Danke !

Mfg


' WLAN RS232 Device Server
' (c) Avisaro AG 18.03.2010
' Version 1.16

Setleds 32 + 128

Exec "stpseq +\097+v+i+s+"
sleep 100
Exec "prompt"
sleep 100
Exec "sched 0"
sleep 100

Let N = 0
Rem Default-Werte ?
If((keys & 1) = 1) Then
For N = 0 To 100
If((keys & 1) = 0) Then
Goto Starting
End If
Setleds 255
sleep 10
Setleds 0 + 128
sleep 10
Next N
Exec "restart clear"
sleep 100
Setleds 255
Do
sleep 1
Loop
End If
Starting:

sleep 400

'


Dim A(500)
Dim B(0)
Let N = 0
Let T = Time
Let F = 60
Let M = 0
Let U = 0
Let Y = 0

Rem INIT WEB

Let X$ = "Connect to (IP, =0 for listen):"
Put -100 , X$ , Len(x$)
Let X$ = "Connect to / Listen (Port):"
Put -102 , X$ , Len(x$)
Let X$ = "Status (WR1 V14):"
Put -104 , X$ , Len(x$)

Load 0 , T$
Put -101 , T$ , Len(t$)


Load 25 , U
If( -1 = U) Then
Let U = 23
Save 25 , U
End If
Let X$ = Str$(u)
Put -103 , X$ , Len(x$)


Try_connect:

sleep 5

' RS232 leer lesen
Inmode -3
Input A


If(t$ = Str$(0)) Then
Let X$ = "listening"
Else
Let X$ = "try to connect"
End If

Gosub Load_web

Let Y = Status(101)

If(y = 0) Then
If(t$ = Str$(0)) Then
' listen 101, u, 0
Listen 101 , U , 20
Setleds 32 + 128
Else
Let Y = Resolv(t$)
sleep 500
' connect 101, y, u, 0
Connect 101 , Y , U , 20
Setleds 32 + 128
End If
End If

Let Y = Status(101)


If Y = 9 Then
Let X$ = "Connected (Web locked)"
Inmode 0
Gosub Load_web
Rem Connected
Exec "stream 101"
Goto Main
End If


Goto Try_connect



Main:

Setleds 48 + 128

If((keys & 1) = 1) Then
Close 101
Setleds 32
Gosub Load_web
Goto Try_connect
End If

sleep 10

Let Y = Status(101)
If(y <> 9) Then
Close 101
Setleds 32
Goto Try_connect
End If


Goto Main:

Load_web:

Put -105 , X$ , Len(x$)

Rem ?nderung auf Webseite ?
Get -103 , X$
If Val(x$) <> U Then
Let U = Val(x$)
Save 25 , U
Close 101
End If

Get -101 , X$
If T$ <> X$ Then
Let T$ = X$
Save 0 , T$
Close 101
End If


Return

'+++
'a+v+i+s

-schumi-
02.11.2011, 12:42
Herzlich willkommen im Forum :-)

Paar Einrückungen können nicht schaden:

' WLAN RS232 Device Server
' (c) Avisaro AG 18.03.2010
' Version 1.16


Setleds 32 + 128


Exec "stpseq +\097+v+i+s+"
sleep 100
Exec "prompt"
sleep 100
Exec "sched 0"
sleep 100


Let N = 0
Rem Default-Werte ?
If((keys & 1) = 1) Then
For N = 0 To 100
If((keys & 1) = 0) Then
Goto Starting
End If
Setleds 255
sleep 10
Setleds 0 + 128
sleep 10
Next N
Exec "restart clear"
sleep 100
Setleds 255
Do
sleep 1
Loop
End If


Starting:
sleep 400
Dim A(500)
Dim B(0)
Let N = 0
Let T = Time
Let F = 60
Let M = 0
Let U = 0
Let Y = 0


Rem INIT WEB


Let X$ = "Connect to (IP, =0 for listen):"
Put -100 , X$ , Len(x$)
Let X$ = "Connect to / Listen (Port):"
Put -102 , X$ , Len(x$)
Let X$ = "Status (WR1 V14):"
Put -104 , X$ , Len(x$)


Load 0 , T$
Put -101 , T$ , Len(t$)




Load 25 , U
If( -1 = U) Then
Let U = 23
Save 25 , U
End If
Let X$ = Str$(u)
Put -103 , X$ , Len(x$)




Try_connect:


sleep 5


' RS232 leer lesen
Inmode -3
Input A




If(t$ = Str$(0)) Then
Let X$ = "listening"
Else
Let X$ = "try to connect"
End If


Gosub Load_web


Let Y = Status(101)


If(y = 0) Then
If(t$ = Str$(0)) Then
' listen 101, u, 0
Listen 101 , U , 20
Setleds 32 + 128
Else
Let Y = Resolv(t$)
sleep 500
' connect 101, y, u, 0
Connect 101 , Y , U , 20
Setleds 32 + 128
End If
End If


Let Y = Status(101)




If Y = 9 Then
Let X$ = "Connected (Web locked)"
Inmode 0
Gosub Load_web
Rem Connected
Exec "stream 101"
Goto Main
End If




Goto Try_connect






Main:


Setleds 48 + 128


If((keys & 1) = 1) Then
Close 101
Setleds 32
Gosub Load_web
Goto Try_connect
End If


sleep 10


Let Y = Status(101)
If(y <> 9) Then
Close 101
Setleds 32
Goto Try_connect
End If


Goto Main:




Load_web:


Put -105 , X$ , Len(x$)


Rem ?nderung auf Webseite ?
Get -103 , X$
If Val(x$) <> U Then
Let U = Val(x$)
Save 25 , U
Close 101
End If


Get -101 , X$
If T$ <> X$ Then
Let T$ = X$
Save 0 , T$
Close 101
End If




Return


'+++
'a+v+i+s

Das erleichtert das Lesen sehr, so kann man schon sehr leicht Unterprogramme/Was alles zu IF gehört/Was alles in der For-Schleife ausgeführt wird usw erkennen.
Genau erläutern kann ichs dir aber nicht, hab mich dazu zu wenig mit Bascom auseinander gesetzt (z.B. is mir schleierhaft warum er manchmal REM und dann wieder ' verwendet)

Gruß

MagicWSmoke
02.11.2011, 13:05
Paar Einrückungen können nicht schaden:
Da kann er einrücken soviel er will, das wird deswegen immer noch kein Bascomcode.:)

Besonders einfach hieran zu erkennen:

If((keys & 1) = 1) Then

PicNick
02.11.2011, 13:50
Wenn du das "Handbuch" liest, kannst du dir vielleicht zusammenreimen, was da da passiert und warum.

http://www.avisaro.com/tl/dokumentation_wr1.html (http://www.avisaro.com/tl/dokumentation_wr1.html)

Soweit ich das im Groben verstehe, läuft der Code auch in der beschriebenen Folge ab.

Sonst sind da leider ein paar "non-basic" Spezial-Befehle drin, die die Sache erschweren

Richard
02.11.2011, 15:19
Wenn du das "Handbuch" liest, kannst du dir vielleicht zusammenreimen, was da da passiert und warum.

http://www.avisaro.com/tl/dokumentation_wr1.html (http://www.avisaro.com/tl/dokumentation_wr1.html)

Soweit ich das im Groben verstehe, läuft der Code auch in der beschriebenen Folge ab.

Sonst sind da leider ein paar "non-basic" Spezial-Befehle drin, die die Sache erschweren

na ja, Basic ist nicht gleich Basic da gibt es viele Arten mit eigenem Wortschatz, Bascom ist der hier verwendete Code jedenfalls nicht. Wenn man herausbekommt was das für eine Basic Version ist, kann man sicher auch den Quellcode überseten. Das 8051 Basic hat ähnliche Ausdrücke...Laut Handbuch ist dort anscheinend auch kein AVR verbaut.

Gruß Richard

PicNick
02.11.2011, 17:11
Wette, dass das überhaupt kein "richtiger" Basic ist, sondern ein spezielles Script im Basic-Style für eben dieses WLAN-Modul.