Microsoft Small Basic

Program Listing: QCX116-0
GraphicsWindow.Show()
GraphicsWindow.Title = "1.Warriorprogramm"
c = LDIOWarrior.Initialise()
GraphicsWindow.DrawBoundText(420,20,200,c + " Gerät angeschlossen")
a = LDIOWarrior.GetSerialNumber(1)
GraphicsWindow.DrawBoundText(10,20,200,"Seriennummer: " + a)
b = LDIOWarrior.GetName(1)
GraphicsWindow.DrawBoundText(220,20,200,"Gerätename: " + b)
GraphicsWindow.DrawBoundText(30,80,50,"Rel 1")
Zeitbox = Controls.AddTextBox(80,80)



aus = Controls.AddButton ("Relais aus",350,70)
Controls.SetSize(a,150,30)
ge = Controls.AddButton("Gerät einschalten",350,120)
Controls.SetSize(ge,150,30)
ga = Controls.AddButton("Geräte trennen",350,170)
Controls.SetSize(ga,150,30)
s1 = Controls.AddButton("Start",250,70)
Controls.ButtonClicked = Rel
'NEU
Timer.Tick = Zeit
'NEU

Sub Rel

If Controls.LastClickedButton = s1 Then
LDIOWarrior.GetReportSize(0)
r[1] = 0
r[2] = 254
r[3] = 255
LDIOWarrior.Write(1,0,r)

'NEU
ZeitSek = Controls.GetTextBoxText(Zeitbox)
ZeitMil = ZeitSek*1000
Timer.Interval = ZeitMil
'NEU
EndIf

If Controls.LastClickedButton = aus Then
LDIOWarrior.GetReportSize(0)
r[1] = 0
r[2] = 255
r[3] = 255
LDIOWarrior.Write(1,0,r)
EndIf

If Controls.LastClickedButton = ga Then
LDIOWarrior.Detatch()
EndIf
If Controls.LastClickedButton = ge Then
LDIOWarrior.Initialise()
EndIf
EndSub

'NEU
Sub Zeit
Timer.Pause()

LDIOWarrior.GetReportSize(0)
r[1] = 0
r[2] = 255
r[3] = 255
LDIOWarrior.Write(1,0,r)

EndSub
'NEU


'IM FOLGENDEM HABE ICH DEIN PROGRAMM ETWAS UMSTRUKTURIERT. DADURCH KANNST DU DAS WIEDERHOLEN VON CODE VERMEIDEN!
'WENN DU FRAGEN ETC. HAST, KANNST DU MIR GERNE EINE E-MAIL SCHICKEN: timo-soechtig@hotmail.de

IO_ini()
Grafikfenster()
Ereignisse()

Sub IO_ini
c = LDIOWarrior.Initialise()
a = LDIOWarrior.GetSerialNumber(1)
b = LDIOWarrior.GetName(1)
EndSub

Sub Grafikfenster
GraphicsWindow.Title = "1.Warriorprogramm"
GraphicsWindow.BrushColor = "Black"

GraphicsWindow.DrawBoundText(420,20,200,c + " Gerät angeschlossen")
GraphicsWindow.DrawBoundText(10,20,200,"Seriennummer: " + a)
GraphicsWindow.DrawBoundText(220,20,200,"Gerätename: " + b)
GraphicsWindow.DrawBoundText(30,80,50,"Rel 1")

Zeitbox = Controls.AddTextBox(80,80)

aus = Controls.AddButton ("Relais aus",350,70)
Controls.SetSize(a,150,30)
ge = Controls.AddButton("Gerät einschalten",350,120)
Controls.SetSize(ge,150,30)
ga = Controls.AddButton("Geräte trennen",350,170)
Controls.SetSize(ga,150,30)
s1 = Controls.AddButton("Start",250,70)
EndSub

Sub Ereignisse
Controls.ButtonClicked = Rel
Timer.Tick = Zeit
EndSub

Sub Rel
LCB = Controls.LastClickedButton 'Dadurch wird die Geschwindigkeit erhöht. Sonst müsste jedes Mal überprüft werden welcher der zuletzt geklickte Button ist. Bei einem so kleinem Programm fällt dies zwar kaum ins Gewicht, aber es ist gut wenn man sich dies für spätere, größere Projekte aneignet
If LCB = s1 Then
Start()
ElseIf LCB = aus Then
Ausschalten()
ElseIf LCB = ga Then
LDIOWarrior.Detatch()
ElseIf LCB = ge Then
LDIOWarrior.Initialise()
EndIf
EndSub

Sub Zeit
Timer.Pause()
Ausschalten()
EndSub

Sub Start
LDIOWarrior.GetReportSize(0)
r[1] = 0
r[2] = 254
r[3] = 255
LDIOWarrior.Write(1,0,r)

ZeitSek = Controls.GetTextBoxText(Zeitbox)
ZeitMil = ZeitSek*1000
Timer.Interval = ZeitMil
EndSub

Sub Ausschalten
LDIOWarrior.GetReportSize(0)
r[1] = 0
r[2] = 255
r[3] = 255
LDIOWarrior.Write(1,0,r)
EndSub