ich habe ein komisches Problem . Nachfolgender Code erzeugt einen Fehler. Ich habe aber einen Code wo es nicht passiert.
Code: Alles auswählen
Global Run.s
If #PB_Editor_CreateExecutable = 0
Run = "Run at"+Chr(9)+"IDE"
Else
Run = "Run at"+Chr(9)+"Executable "
EndIf
Gruss TFT
Und hier das Beispiel das Funktioniert. Der gesuchte Abschnitt befinden sich bei Zeile 122.
Code: Alles auswählen
; German forum:
; Author: TFT
; Date: 25 April 2014
; OS: Windows
; Demo: No
EnableExplicit
Define i,a.l,b.s,t$,timer
;{ Konstanten
#KEY_WOW64_64KEY = $100 ; GetWindowsProductKey()
#Return = 13
#MainWindow = 0
#Canvas = 1
#EventForce = 1
;}
;{ SetUp
Global Title.s="GUIreflect PC"
Global MakeArchivCopyFromSorce=1
; 1 = Das Sorce File wird bei Start in das Archiv Verzeichnis Kopiert , mit Zeitstempel
; das Sorce File wird nicht archiviert wenn die Exe gestartet wird.
Global SaveAndClear = 0 ; 1 = Commt das Save Comanndo wird der Verlauf gelöscht
Global TrackData = 1 ; 1 = Daten die vom Arduino oder Handy kommen werden im Verlauf eingetragen
Global TrackCom = 1 ; 1 = Es werden "/","./" und "%" comandos im Verlauf eingetragen
Global Save = 0 ; 1 = Speichern Comando /save erlaubt
Global Clear = 0 ; 1 = Löschen des Verlauf durch das Komannto /clear erlaubt
Global Echo = 0 ; 1 = alle eingaben und Sonstige sendungen zum Arduino werden in Verluaf gespeichert
Global DebugLog = 0 ; 1 = Debug Ausgabe grundsätzlich zulassen
Global DebugLogSave = 0 ; 1 = Speichern des DebugLog zulassen
Global DebugLogMode = 0 ; 1 =
Global SerDelay = 10 ; SendComandNotWait() wird erst nach X ms ferlassen.
; Somit können nur 100 mal 60 Zeichen in der Secunde versendet werden
; Damit der Arduino keinen Daten überlauf bekommt.
Global SerTimeOut = 2000 ; TimeOut zeit biss ein Fehler bei Datenübertrageung über die Schnittstelle erkannt wird
Global DisplayX = 540 ; Ziel Display
Global DisplayY = 850 ; Ziel Display
Global EventTimer = 0 ; Es wird eine Timer angelegt, der alle x Secunden ein Event auslöst ( Die Procedure Timer() wird dann aufgerufen
; Das ist um das anhalten des Programs bei verschieben des Fensters zu verhindern.
;}
;{ Spezielle Verzeichnisse
Global ProgName.s = ProgramFilename()
Procedure.s SpecialFolderLocation(csidl.l)
Protected location.s,pidl.l
If SHGetSpecialFolderLocation_(#Null,csidl,@pidl)=#ERROR_SUCCESS
location.s=Space(#MAX_PATH)
If SHGetPathFromIDList_(pidl,@location.s)
If Right(location.s,1)<>""
location.s+""
EndIf
EndIf
If pidl
CoTaskMemFree_(pidl) ; Instead of messing with com imalloc free and whatnot.
EndIf
EndIf
ProcedureReturn Trim(location.s)
EndProcedure
Procedure.s getSpecialFolder(id)
Protected path.s, *ItemId.ITEMIDLIST
*itemId = #Null
If SHGetSpecialFolderLocation_(0, id, @*ItemId) = #NOERROR
path = Space(#MAX_PATH)
If SHGetPathFromIDList_(*itemId, @path)
If Right(path, 1) <> "\"
path + "\"
EndIf
ProcedureReturn path
EndIf
EndIf
ProcedureReturn ""
EndProcedure
Global prg.s = getSpecialFolder(#CSIDL_PROGRAM_FILES)
Global app.s = getSpecialFolder(#CSIDL_APPDATA)
Global fil.s = getSpecialFolder(#CSIDL_PROGRAMS)
Global ipn.s = "GUIreflectPC"
Global ipf.s = app+ipn
If FileSize(ipf)=-1
ipf = GetCurrentDirectory()
Else
ipf.s = app + ipn
EndIf
;}
;{ Debugger
;--------------------------------------------------------------------------------
; Umd den Debugger nutzen zu können benötigt man Admin rechte.
; Diese müssen bei Compiller einstellungen activiert werden.
; "[X] Request Administrator mode for Windows Vista and above".
; Auch bei Programmen wie einem Installer der auf geschütze
; Verzeichnisse zugreifen muss
; Bei Exutabels .exe sollte dies in der regel ausgeschaltet sein
; wenn LoadMovie() eine Video nicht laden kann, liegt das warscheinlich
; daran das kein entsprechender Windos Video Codec instaliert ist.
; Im Compiler Menue ist UNICODE deaktiviert
Global DebugLogPfad.s = ipf
Global DebugLogTemp = 1 ; für das temporäre ausschalten des DebugLog
Global DebugLogTab = 0 ; Tabulator für die Debug Ausgabe
Global RunTest = 0
Global DebugLogOpen = 0
Global Date.s = FormatDate("%dd_%mm_%yyyy", #PB_Compiler_Date)
Global _Time.s = FormatDate("%hh_%ii_%ss", #PB_Compiler_Date)
Global Version.s = "Compile "+Chr(9)+Date+" "+_Time+" PureBasic "+#PB_Compiler_Version
Global Run.s
If #PB_Editor_CreateExecutable = 0
Run = "Run at"+Chr(9)+"IDE"
Else
Run = "Run at"+Chr(9)+"Executable "
EndIf
Global pfad.s= GetCurrentDirectory()
Global d_.s= "Registriert"+Chr(9)+"Turgut Temucin, turguttemucin@hotmail.com"
Global StringA = 0 ; In der Debugger ausgabe kann ein String Analysert werden
Procedure.s VString(l)
Protected i,t.s=""
For i = 1 To l
t=t+"| "+Chr(9)
Next
ProcedureReturn t.s
EndProcedure
Procedure DebugLog(t.s)
Shared DebugLogPfad.s, ipn, Date, _Time
Protected l.s = "Log.txt", fh.l,lenght.l,p.s
Static first.b
If first=0
; bein erstaufruf muss das Log File gelöscht werden
DeleteFile(DebugLogPfad+l)
; Hir wird ein Backup File erzeugt, fals mal etwas garnicht gehen sollte. Das mann
; einfach einen Früheren Code nehmen kann. Es setzt voraus das sich im Main FOlder
; eine Folder mit namen Archiv befindet.
; Die PureBasic IDE hat eine eigenen Histery verfolgung.
If #PB_Editor_CreateExecutable = 0
If MakeArchivCopyFromSorce=1
Debug "Copy"+Chr(9)+DebugLogPfad+ipn+".pb"
Debug "to"+Chr(9)+ DebugLogPfad+"Archiv\"+ipn+"-"+Date+"_"+_Time+".pb"
CopyFile(DebugLogPfad+ipn+".pb", DebugLogPfad+"Archiv\"+ipn+"-"+Date+"_"+_Time+".pb")
EndIf
EndIf
If DebugLogMode = 0 ;
If DebugLog = 1
DebugLogOpen = OpenFile(#PB_Any,DebugLogPfad+l)
EndIf
EndIf
EndIf
first=1
;If #PB_Compiler_Debugger = 1
If DebugLog = 1
If DebugLogTemp = 1
If Left(t,1) = "{"
p = VString(DebugLogTab)+t
Debug(p)
DebugLogTab = DebugLogTab + 1
ElseIf Left(t,1) = "}"
If DebugLogTab >= 1
DebugLogTab = DebugLogTab - 1
EndIf
p = VString(DebugLogTab)+t
Debug(p)
Else
p = VString(DebugLogTab)+t
Debug(p)
EndIf
If DebugLogMode = 0
If DebugLogOpen
WriteStringN(DebugLogOpen,p)
EndIf
Else
;Debug ">"
;Debug ">"+DebugLogPfad+l
If FileSize(DebugLogPfad+l)>0
;Debug ">Log file exist"
fh = OpenFile(#PB_Any,DebugLogPfad+l)
lenght = Lof(fh)
FileSeek(fh,lenght)
Else
;Debug ">Create log file"
fh = CreateFile(#PB_Any,DebugLogPfad+l)
EndIf
Delay(1)
If fh
;Debug ">Write : "+t
WriteStringN(fh,p)
Delay(1)
CloseFile(fh)
EndIf
;Debug ">"
EndIf
EndIf
EndIf
;EndIf
EndProcedure
Procedure StringAnalyse(s.s)
Protected i,t1.s
If StringA
DebugLog("{ StringAnalyse ("+s+")")
DebugLog(s.s)
DebugLog("Leange in byte "+Len(s.s))
For i = 1 To Len(s.s)
t1.s = t1.s + RSet( Hex( Asc( Mid(s.s,i,1) ) ) ,2 ,"0") +" "
Next
DebugLog(t1.s)
DebugLog("}")
EndIf
EndProcedure
Global param.s ,i1.l
Dim par.s(10)
Global Ereigniss = CountProgramParameters()
If Ereigniss<>0
For i1 = 1 To Ereigniss
par(i1) = ProgramParameter()
DebugLog("Fount parametert "+par(i1))
Next
EndIf
Global param.s
If FileSize(par(1))>0
param=par(1)
EndIf
;}
Global GWPK.s
Global NoComand = 1
Procedure.s GetWindowsProductKey()
Protected hKey, Res, size = 280
Protected i, j, x, Result.s
Protected *mem = AllocateMemory(size)
Protected *newmem = AllocateMemory(size)
Protected *digits = AllocateMemory(25)
PokeS(*digits, "BCDFGHJKMPQRTVWXY2346789", -1, #PB_Ascii)
If OSVersion() <= #PB_OS_Windows_2000
Res = RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows NT\CurrentVersion", 0, #KEY_READ, @hKey)
Else
Res = RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows NT\CurrentVersion", 0, #KEY_READ | #KEY_WOW64_64KEY, @hKey)
EndIf
If Res = #ERROR_SUCCESS
RegQueryValueEx_(hKey, "DigitalProductID", 0, 0, *mem, @size)
RegCloseKey_(hKey)
If size <> 280
For i = 24 To 0 Step -1
x = 0
For j = 66 To 52 Step -1
x = (x << 8) + PeekA(*mem + j)
PokeA(*mem + j, x / 24)
x % 24
Next
PokeA(*newmem + i, PeekA(*digits + x))
Next
For i = 0 To 15 Step 5
Result + PeekS(*newmem + i, 5, #PB_Ascii) + "-"
Next
Result + PeekS(*newmem + 20, 5, #PB_Ascii)
EndIf
EndIf
FreeMemory(*mem) : FreeMemory(*newmem) : FreeMemory(*digits)
ProcedureReturn Result
EndProcedure
GWPK = GetWindowsProductKey()
i = DebugLog
DebugLog = 1
Debuglog("Run from "+Chr(9)+GetPathPart(ProgramFilename()))
DebugLog(Version)
DebugLog(Run)
DebugLog("Main pfad"+Chr(9)+pfad)
DebugLog("Parameter"+Chr(9)+param)
Debuglog("System"+Chr(9)+GWPK)
DebugLog(d_)
DebugLog = i
;--------------------------------------------------------------------------------
Global SpeicherPfad.s = ""
Global LastGuiTXT.s = ""
;Global SetUpTrackData
;Global SetUpTrackCom
;Global SetUpSaveAndClear
Global SetUpSave
Global SetUpClear
Global SetUpDebugLog
;Global Speed
Global Verbindung.l
Global Port
Global PortName.s
Global ComList
Global Comando.s
Global String.s
Global Eingabezeile
;Global Connect
;Global Senden
Global Console
Global Canvas
Global SendGui
Global SendLastGui
Global CallRequester
Global SetUpSavePfad
Global DateiName$
; GadGet Nummer
#Main_Speed = 1
#Main_Senden = 2
#Main_Connect = 3
#Main_SetUpSaveAndClear = 4
#Main_SetUpTrackData = 5
#Main_SetUpTrackCom = 6
#Main_DisConnect = 7
#Menu_About = 8
#About_Exit = 800
;Global Timer.l
; Global Variablen
Define hWnd1
Define hFont
Define event
Global GUI = 0
Global Quit = 0
Global CanvasG
Global RGBz = RGB(255,255,255)
Global RGBh
Global PortOpen
Global ComPortOpen
Global LastPing
Global ExitCode
Global *MemoryID = AllocateMemory(1024)
;{ Listen Verwaltung
Structure DrawListen
ListenName.s
*ErsterEintrag
EndStructure
Structure DrawComandos
*NegsterEintrag
*ForherigerEintrag
DrawComando.s
EndStructure
Structure GadGetListen
ListenName.s
*ErsterEintrag
EndStructure
Structure GadGetComandos
*NegsterEintrag
*ForherigerEintrag
GadGetComando.s
EndStructure
Global NewList DrawListen.DrawListen()
Global NewList DrawComandos.DrawComandos()
Global *ActuelleDrawListe
Global NewList GadGetListen.GadGetListen()
Global NewList GadGetComandos.GadGetComandos()
Global *ActuelleGadGetListe
;}
Declare Comandos(t$)
Declare SendComandNotWait(t$)
Declare PutStringToEditorGadget(t$)
Declare WaitCom(s.s)
Declare.d WindowEventSelect()
Procedure.s GetCom2()
; Die Funktions Weise ist Asynchron, FromAD ist erst <>"" wenn ein String ende erkannt wurde,
; oder ein Steuer String als erstes von der Schnittstell kommt.
Protected thisChar.b, fromAD.s,i,i1
Static AStringRead.b, AStringTimeOut, AStringPuffer$, AStringLastChar.b, AStringFirstChar.b
Static BufferTimer
DebugLog("{ GetCom2")
If PortOpen=1
i= AvailableSerialPortInput(0)
If i > 0
If i > 64
Debuglog("SerialPortInput > 64 Byte ")
;SendComandNotWait(".p-")
EndIf
If AStringRead = 0
Debuglog("Daten vorhanden "+Str(i))
AStringTimeOut = ElapsedMilliseconds() + SerTimeOut
AStringPuffer$ = ""
AStringFirstChar = 0
AStringLastChar = 0
ComPortOpen = 1
EndIf
While i>0
ReadSerialPortData(0, *MemoryID, 1)
thisChar = PeekB(*MemoryID)
AStringLastChar = thisChar
If AStringFirstChar = 0
AStringFirstChar = thisChar
EndIf
If thisChar > 31 ; ASCII Ab Space sind Daten
AStringPuffer$ = AStringPuffer$ + Chr(thisChar)
i=AvailableSerialPortInput(0)
Else ; alles darunter sind steuer Zeichen
AStringRead = 2
Debuglog("Steuerzeichen "+Str(thisChar))
i=0
EndIf
;Delay(1)
;WindowEventSelect()
Wend
If AStringRead = 0
AStringRead = 1
EndIf
If AStringRead = 1
If AStringTimeOut < ElapsedMilliseconds()
MessageRequester("Error","String read timeout",#PB_MessageRequester_Ok )
AStringRead = 0
fromAD.s="TimeOutError"
Debuglog("Serial read timeout")
EndIf
EndIf
If AStringRead = 2
debuglog(AStringPuffer$)
StringAnalyse(AStringPuffer$)
fromAD.s = AStringPuffer$
AStringPuffer$ = ""
AStringRead = 0
debuglog("String ende")
EndIf
EndIf
EndIf
DebugLog("}")
ProcedureReturn fromAD.s
EndProcedure
Procedure GetCom3()
Protected t$
DebugLogTemp = 0
t$ = GetCom2() ; Daten von der Com Schnitstelle holen ( Asynchron )
If t$ <> ""
DebugLogTemp = 1
If DebugLog = 1
PutStringToEditorGadget("GetCom3 ("+t$+")")
Else
PutStringToEditorGadget(t$)
EndIf
Comandos(t$)
DebugLogTemp = 0
EndIf
DebugLogTemp = 1
EndProcedure
Procedure WaitCom(s.s)
Protected exit,timer,timer1,t$,timer3
ExitCode = 0
LastPing = 0
Debuglog("{ WaitCom ("+s+")")
If s <> ""
timer1=ElapsedMilliseconds() ; Einsprung Zeitpunkt
If PortOpen=1 ; ist ein Port offen, bei ARDUINO meistens der COM3
exit = 0
If s = ".."
timer = ElapsedMilliseconds() +10000 ; Beim ersten Verbinden und senden braucht es gelegentlich länger
timer3 = ElapsedMilliseconds() +SerTimeOut ; Was zu einem Echo TimeOut füren kann
Else
timer = ElapsedMilliseconds() +SerTimeOut ; Setzen des TimeOut damit die Schleife nich unendlich lange läuft.
EndIf
While exit=0 ; Exit = 0, schleifer weiter ausfüren
exit = AvailableSerialPortInput(0) ; Liegen daten an dann ist Exit > 0
If timer < ElapsedMilliseconds() ; TimeOut erreicht
PutStringToEditorGadget("WaitCom() Echo Timeout") ; Im Verlauf Posten
;MessageRequester("Error","WaitCom() Echo Timeout",#PB_MessageRequester_Ok ) ; Requester ausgeben
exit = -1 ; Bei Feler ist Exit -1 und die Schleife wird verlassen
Else
If s = ".."
If timer3 < ElapsedMilliseconds()
timer3 = ElapsedMilliseconds() +SerTimeOut
WriteSerialPortString(0,s+Chr(13)+Chr(10),#PB_Ascii);+Chr(0))
While AvailableSerialPortOutput(0):Wend
;Delay(SerDelay)
;PutStringToEditorGadget(s)
EndIf
EndIf
EndIf
If exit > 0 ; Daten liegen an, mindestens 1 Byte
t$ = GetCom2() ; Daten von der Com Schnitstelle holen ( Asynchron )
If t$ <> "" ; Es konnte ein String gelesen werden
If t$ <> s.s ; Echo ist nicht ok
exit = 0 ; Dann muss die Schleife weiter durchlaufen werden
Else ; ist das Echo erkannt
exit = Len(t$) ; enthält der Exit Code die länge des gelesene Strings
EndIf
If DebugLog = 1
PutStringToEditorGadget("WaitCom() ("+t$+")") ; Der Empfangene String wird im Verlauf gepostet
Else
PutStringToEditorGadget(t$)
EndIf
Comandos(t$) ; Der String wird auf ein Comando geprüft und gegebenen fals ausgeführt.
EndIf
EndIf
; Wenn Exit > -1 dann nochmal durchlaufen
Delay(SerDelay) ; Dem System zeit einreumen
WindowEventSelect()
Wend
LastPing = ElapsedMilliseconds()-timer1 ; Ermitteln wie lange die Antwort gebraucht hat
Debuglog("Ping "+Str(LastPing))
Else
t$=s
If DebugLog = 1
PutStringToEditorGadget("WaitCom() ("+t$+")") ; Der Empfangene String wird im Verlauf gepostet
Else
PutStringToEditorGadget(t$)
EndIf
Comandos(t$) ; Der String wird auf ein Comando geprüft und gegebenen fals ausgeführt.
exit = Len(t$)
Delay(1)
WindowEventSelect()
EndIf
EndIf
DebugLog("}")
; Exit Code = -1 Fehler
; Exit Code = 0 sollte niemals erscheinen
; Exit Code > 0 die länge des gelesenen Strings
ProcedureReturn exit
EndProcedure
Procedure PutStringToEditorGadget(t$)
Protected i, firstAscii, lastAscii
If t$<>"" ; wurde ein String oder mehr vom ComPort geholt
DebugLog("{ PutString ("+t$+")")
If TrackCom = 1 And (Left(t$,1)="/" Or Left(t$,1)="." Or Left(t$,1)="%")
AddGadgetItem(Console, -1, t$ ); und in die GetGat liste eingetragen
EndIf
If TrackData = 1 And Left(t$,1)<>"/" And Left(t$,1)<>"." And Left(t$,1)<>"%"
AddGadgetItem(Console, -1, t$ ); und in die GetGat liste eingetragen
EndIf
SendMessage_(GadgetID(Console),#EM_SCROLL,#SB_BOTTOM,0) ; !! Sorg dafür das das Editor Gadget automatisch nach unten Scrollt !!
DebugLog("}")
EndIf
EndProcedure
Procedure SendComandAndWait(t$)
Protected i,i1
Debuglog("{ SendAndWait ("+t$+")")
If PortOpen = 1
WriteSerialPortString(0,t$+Chr(13)+Chr(10),#PB_Ascii);+Chr(0))
While AvailableSerialPortOutput(0):Wend
If Echo
PutStringToEditorGadget(">"+t$)
EndIf
EndIf
Delay(SerDelay)
i = WaitCom(t$)
Debuglog("ExitCode WaitCom() "+Str(i))
If t$="TimeOutError"
DebugLog("TimeOutError" )
ProcedureReturn -1
EndIf
DebugLog("}")
ProcedureReturn 0
EndProcedure
Procedure SendComandNotWait(t$)
If PortOpen = 1
WriteSerialPortString(0,t$+Chr(13)+Chr(10),#PB_Ascii);+Chr(0))
While AvailableSerialPortOutput(0):Wend
Delay(SerDelay)
EndIf
EndProcedure
Procedure Comandos(t$)
Protected tr$,tg$,tb$,t1$,i,i1,i2,r,g,b,x1,x2,y1,y2,d,*element,dd.d
Static dr,dg
DebugLog("{ Comando ("+t$+")")
StringAnalyse(t$)
tr$ = RTrim(t$,Chr(10))
t$ = RTrim(tr$,Chr(13))
;StringAnalyse(t$)
If Left(t$,1)="/" And NoComand = 0
If t$ = "/end"
Quit=1
Debuglog("/end")
ElseIf t$ = "/clear"
If Clear
SendMessage_(GadgetID(Console) ,#EM_EMPTYUNDOBUFFER, 0, 0)
ClearGadgetItems(Console)
Debuglog("/clear")
EndIf
ElseIf t$ = "/CreateCanvas()"
GUI = 1
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
Debuglog("/CreateCanvas()")
ElseIf t$ = "/StartDraw()"
;Delay(1)
dr = 1
*ActuelleDrawListe = AddElement(DrawListen())
Debuglog("/StartDraw("+ ListSize(DrawListen())+")")
ElseIf t$ = "/StoptDraw()"
Debug("/StoptDraw()")
dr = 0
ElseIf t$ = "/StartGatGed()"
;Delay(1)
dg = 1
*ActuelleGadGetListe = AddElement(GadGetListen())
Debuglog("/StartGadGet("+ ListSize(GadGetListen())+")")
ElseIf t$ = "/StoptGadGet()"
Debug("/StoptGadGet()")
dg = 0
ElseIf Left(t$,14) = "/SaveDrawList("
Debuglog("/SaveDrawList("+")")
dr = 0
i = 0
i = FindString(t$,"(",i)
i1= FindString(t$,")",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
DrawListen()\ListenName = tr$
;DrawListen()\ErsterEintrag =
;{ /SaveGatGedList(i,name)
ElseIf Left(t$,16) = "/SaveGatGedList("
Debuglog("/SaveGatGedList("+")")
dr = 0
i = 0
i = FindString(t$,"(",i)
i1= FindString(t$,")",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
GadGetListen()\ListenName = tr$
;DrawListen()\ErsterEintrag =
;}
;{ /ClearDraw()
ElseIf t$ = "/ClearDraw()"
Debuglog("/ClearDraw()")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
StartDrawing(CanvasOutput(Canvas))
DrawingMode(#PB_2DDrawing_Default )
FrontColor(RGBz)
Box(0,0,DisplayX,DisplayY)
StopDrawing()
;}
;{ /SetRGB(r,g,b)
ElseIf Left(t$,8) = "/SetRGB("
Debuglog("/SetRGB(")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
r = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
g = Val(tg$)
i = i1
i1= FindString(t$,")",i+1)
tb$ = Mid(t$,i+1,i1-i-1)
b = Val(tb$)
RGBz=RGB(r,g,b)
;Debug("Farbe gefunden r "+tr$+" "+r)
;Debug("Farbe gefunden g "+tg$+" "+g)
;Debug("Farbe gefunden b "+tb$+" "+b)
;}
;{ /Line(x1,y1,x2,y2,d)
ElseIf Left(t$,6) = "/Line("
Debuglog("/Line(")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
StartDrawing(CanvasOutput(Canvas))
FrontColor(RGBz)
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y1 = Val(tg$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
x2 = Val(tg$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y2 = Val(tg$)
i = i1
i1= FindString(t$,")",i+1)
tb$ = Mid(t$,i+1,i1-i-1)
d = Val(tb$)
LineXY(x1,y1,x2,y2)
StopDrawing()
;}
;{ /BoxF(x1,y1,b,h)
ElseIf Left(t$,6) = "/BoxF("
Debuglog("/BoxF(")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
StartDrawing(CanvasOutput(Canvas))
FrontColor(RGBz)
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y1 = Val(tg$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
x2 = Val(tg$)
i = i1
i1= FindString(t$,")",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y2 = Val(tg$)
DrawingMode(#PB_2DDrawing_Default )
FrontColor(RGBz)
; Anpassung ... b und h gibt es nicht bei Android
Box(x1,y1,x2-x1,y2-y1)
Debuglog(Str(x1)+"_"+Str(y1)+"_"+Str(x2)+"_"+Str(y2))
StopDrawing()
;}
;{ /Box(x,y,b,h)
ElseIf Left(t$,5) = "/Box("
Debuglog("/Box(")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
StartDrawing(CanvasOutput(Canvas))
FrontColor(RGBz)
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y1 = Val(tg$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
x2 = Val(tg$)
i = i1
i1= FindString(t$,")",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y2 = Val(tg$)
DrawingMode(#PB_2DDrawing_Outlined )
; Anpassung ... b und h gibt es nicht bei Android
Box(x1,y1,x2-x1,y2-y1)
DrawingMode(#PB_2DDrawing_Default )
StopDrawing()
;}
;{ /Text(x,y,name,d)
ElseIf Left(t$,6) = "/Text("
Debuglog("/Text(")
If dr = 1
*element = AddElement(DrawComandos())
If *element
DrawComandos()\DrawComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
y1 = Val(tg$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
i = i1
i1= FindString(t$,")",i+1)
tb$ = Mid(t$,i+1,i1-i-1)
d = Val(tb$)
LoadFont(2, "Arial", d )
If StartVectorDrawing(CanvasVectorOutput(Canvas))
If d>0
VectorFont(FontID(2), d)
dd.d = VectorTextHeight(tg$, #PB_VectorText_Baseline)
VectorSourceColor(RGBA(255, 255, 255,255))
MovePathCursor(x1, y1-dd)
DrawVectorText(tg$)
Else
DebugLog("VectorFont Parameter d < 1")
EndIf
StopVectorDrawing()
EndIf
FreeFont(2)
;}
;{ /Flip()
ElseIf Left(t$,7) = "/Flip()"
DebugLog("/Flip()")
; !! diesen Befehl wird es so nicht brauchen da ein Canvas sovort nach
; StopDraw() Actualisiert wird !!
If CanvasG = 1
CloseGadgetList()
CanvasG = 0
EndIf
;}
;{ /CreateButton(i,x1,y1,x2,y2,name)
ElseIf Left(t$,14) = "/CreateButton("
Debuglog("/CreateButton(")
If dg = 1
*element = AddElement(GadGetComandos())
If *element
GadGetComandos()\GadGetComando.s = t$
EndIf
EndIf
If GUI = 0 And Canvas = 0
OpenWindow(#Canvas,0,0,DisplayX+3,DisplayY+10,"GUIreflect")
Canvas = CanvasGadget(#PB_Any,1,1,DisplayX,DisplayY, #PB_Canvas_ClipMouse|#PB_Canvas_Container)
EndIf
CanvasG = 1
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
i2 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tg$ = Mid(t$,i+1,i1-i-1)
i = i1
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
y1 = Val(tr$)
i = i1
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
y2 = Val(tr$)
i = i1
i1= FindString(t$,")",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
x2 = Val(tr$)
ButtonGadget(100+i2, x1, y1, x2, y2, tg$)
;}
;{ /SetButtonText(i,name)
ElseIf Left(t$,15) = "/SetButtonText("
If GUI = 1 And Canvas <> 0
i = 1
i = FindString(t$,"(",i)
i1= FindString(t$,",",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
i2 = Val(tr$)
i = i1
i1= FindString(t$,")",i+1)
tr$ = Mid(t$,i+1,i1-i-1)
DebugLog("Modify Botton Text")
SetGadgetText(100+i2,tr$)
EndIf
;}
;{ /SetButtonFont(i,d)
ElseIf Left(t$,15) = "/SetButtonFont("
;If GUI = 1 And Canvas <> 0
; i = 1
; i = FindString(t$,"(",i)
; i1= FindString(t$,",",i+1)
; tr$ = Mid(t$,i+1,i1-i-1)
; i2 = Val(tr$)
; i = i1
; i1= FindString(t$,")",i+1)
; tr$ = Mid(t$,i+1,i1-i-1)
; DebugLog("Modify Botton Text")
; SetGadgetText(100+i2,tr$)
;EndIf
;}
;{ /save()
ElseIf t$ = "/save"
If Save = 1
SendComandAndWait(".p-")
If SpeicherPfad=""
SpeicherPfad=PathRequester("Bitte wählen Sie einen Pfad aus", "")
If SpeicherPfad<>""
EndIf
EndIf
t1$=SpeicherPfad+"GUIreflect-Log_"+FormatDate("%dd-%mm-%yyyy_%hh-%ii-%ss",Date()) +".log"
If OpenFile(0,t1$)
i = CountGadgetItems(Console)
For i1 = 1 To i
WriteString(0, GetGadgetItemText(Console,i) ,#PB_Ascii )
Next
CloseFile(0)
If SaveAndClear = 1
SendMessage_(GadgetID(Console) ,#EM_EMPTYUNDOBUFFER, 0, 0)
ClearGadgetItems(Console)
Debuglog("/clear")
EndIf
Else
Debuglog("Konnt file nicht speichern")
DebugLog(t1$)
MessageRequester("Error","File cant write"+Chr(10)+t1$,#PB_MessageRequester_Ok )
EndIf
SendComandAndWait(".p+")
EndIf
;}
;{ /C Comandos PC only
ElseIf t$ = "/CTD0"
TrackData = 0
SetGadgetState(#Main_SetUpTrackData,TrackData )
ElseIf t$ = "/CTD1"
TrackData = 1
SetGadgetState(#Main_SetUpTrackData,TrackData )
ElseIf t$ = "/CTC0"
TrackCom = 0
SetGadgetState(#Main_SetUpTrackCom,TrackCom )
ElseIf t$ = "/CTC1"
TrackCom = 1
SetGadgetState(#Main_SetUpTrackCom,TrackCom )
ElseIf t$ = "/CSC0"
SaveAndClear = 0
SetGadgetState(SetUpSave,SaveAndClear )
ElseIf t$ = "/CSC1"
SaveAndClear = 1
SetGadgetState(SetUpSave,SaveAndClear )
ElseIf t$ = "/CS0"
Save = 0
SetGadgetState(SetUpSave,Save )
ElseIf t$ = "/CS1"
Save = 1
SetGadgetState(SetUpSave,Save )
ElseIf t$ = "/CC0"
Clear = 0
SetGadgetState(SetUpClear,Clear )
ElseIf t$ = "/CC1"
Clear = 1
SetGadgetState(SetUpClear,Clear )
ElseIf t$ = "/CD0"
DebugLog = 0
SetGadgetState(SetUpDebugLog,DebugLog )
ElseIf t$ = "/CD1"
DebugLog = 1
SetGadgetState(SetUpDebugLog,DebugLog )
;}
Else
DebugLog("Ungültiger Befehl : "+t$)
EndIf
Else
;{ .term / alle Gui elemente schliessen und löschen
If t$ = ".term"
debugLog(".term")
If GUI = 1 Or Canvas <> 0
GUI = 0
CloseWindow(#Canvas)
Canvas = 0
EndIf
ClearList(DrawListen())
ClearList(DrawComandos())
ClearList(GadGetListen())
ClearList(GadGetComandos())
EndIf
;}
;{ AT / sendet OK zurück
If t$ = "CALL"
debugLog("CALL from Arduino")
SendComandNotWait("OK")
PutStringToEditorGadget(">ARDUINO send call")
EndIf
;}
;{ .gui
If t$ = ".gui"
EndIf
;}
EndIf
;{ Debug Ausgabe der Draw und GadGet Listen
Debuglog("DrawListen("+ ListSize(DrawListen())+")")
i = 0
ForEach DrawListen()
Debuglog(DrawListen()\ListenName)
i = i + 1
Next
If i=0
Debuglog("DrawListen() emty")
EndIf
Debuglog("DrawComandos("+ ListSize(DrawComandos())+")")
i = 0
ForEach DrawComandos()
Debuglog(DrawComandos()\DrawComando.s)
i = i + 1
Next
If i=0
DebugLog("DrawComandos() emty")
EndIf
Debuglog("GadGetListen("+ ListSize(GadGetListen())+")")
i = 0
ForEach GadGetListen()
Debuglog(GadGetListen()\ListenName)
i = i + 1
Next
If i=0
Debuglog("GadGetListen() emty")
EndIf
Debuglog("GadGetComandos("+ ListSize(GadGetComandos())+")")
i = 0
ForEach GadGetComandos()
Debuglog(GadGetComandos()\GadGetComando.s)
i = i + 1
Next
If i=0
DebugLog("GadGetComandos() emty")
EndIf
;}
Debuglog("}")
EndProcedure
Procedure ReadGUI(datei.s)
Protected Timer , String.s
Debuglog("{ ReadGui")
SendComandAndWait(".p-")
SendComandAndWait(".term")
If Right(Datei,4) = ".txt"
If ReadFile(0,Datei)
If OpenFile(1,Left(Datei,Len(Datei)-4)+".gui") ; Erzeugt eine .gui datei um diese in der Arduino IDE hinzuzufügen
Debuglog("{ Read ("+Datei+")")
While Not Eof(0)
timer = ElapsedMilliseconds()+SerTimeOut
String.s = ReadString(0)
Debuglog("Read "+String.s)
SendComandAndWait(String.s)
If timer < ElapsedMilliseconds()
MessageRequester("Error","File read timer overload",#PB_MessageRequester_Ok )
Break
EndIf
String.s = "s = F("+Chr(34)+String.s+Chr(34)+") ; SPln() ;" ; Erzeugt AUs einer .txt Zeile eine .gui Zeile für die Arduino IDE
WriteStringN(1,String.s)
;If #PB_Compiler_Debugger = 1
If DebugLog = 1
If DebugLogTemp = 1
timer = ElapsedMilliseconds()+SerTimeOut
EndIf
EndIf
;EndIf
Delay(1)
WindowEventSelect()
Wend
CloseFile(0)
LastGuiTXT.s = Datei
DisableGadget(SendLastGui, 0)
CloseFile(1)
DebugLog("}")
Else
MessageRequester("Error","Cant create file",#PB_MessageRequester_Ok )
EndIf
Else
MessageRequester("Error","Cant read file",#PB_MessageRequester_Ok )
EndIf
EndIf
SendComandAndWait(".p+")
Debuglog("}")
EndProcedure
Procedure.d WindowEventSelect()
Protected event, timer,hWnd
event = WindowEvent()
While event>0
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #About_Exit
CloseWindow(#Menu_About)
Case Eingabezeile
Case #Main_Speed
Verbindung.l = Val(GetGadgetText(#Main_Speed))
Case Port
PortName.s = GetGadgetText(Port)
Case ComList
Comando.s = GetGadgetText(ComList)
;SetGadgetText(Eingabezeile,Camando.s)
SendComandAndWait(Comando.s)
;SetGadgetText(Eingabezeile,"")
Case #Main_Senden
DebugLog("{ Senden")
String.s = GetGadgetText(Eingabezeile)
Debuglog(String.s)
If String.s <> ""
SendComandAndWait(String.s)
SetGadgetText(Eingabezeile,"")
EndIf
DebugLog("}")
;{ SendGUI
Case SendGui
DebugLog("{ SendGui")
DateiName$ = OpenFileRequester("Load GUI datei", "GUI.gui", "Gui datei | *.gui | TextDoc | *.txt",1 )
ReadGui(DateiName$)
DebugLog("}")
;}
;{ SendLastGUI
Case SendLastGui
DebugLog("{ SendLastGui")
If LastGuiTXT.s <> ""
SendComandAndWait(".p-")
SendComandAndWait(".term")
ReadGui(LastGuiTXT.s)
SendComandAndWait(".p+")
EndIf
DebugLog("}")
;}
;{ Connect
Case #Main_Connect
DebugLog("{ Connect")
If PortOpen=1
CloseSerialPort(0)
PortOpen = 0
PutStringToEditorGadget(">DisConnect")
Delay(100)
EndIf
timer = ElapsedMilliseconds()
DebugLog("Open ComPort "+PortName.s)
If OpenSerialPort(0, PortName.s, Verbindung.l, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
DebugLog("OpenPortTime "+Str(ElapsedMilliseconds()-timer))
PortOpen = 1
PutStringToEditorGadget(">Open Port "+PortName.s+" connect with "+Str(Verbindung.l)+" speed")
;AddGadgetItem(Console, -1, "Open Port "+PortName.s+" connect with "+Str(Verbindung.l)+" speed" )
Delay(1000)
If SendComandAndWait("..") = -1
DebugLog("ExitCode SendComandAndWait -1")
PortOpen=0
CloseSerialPort(0)
Delay(100)
EndIf
Else
PutStringToEditorGadget(">Cant open port "+PortName.s)
EndIf
DebugLog("}")
;}
;{ DisConnect
Case #Main_DisConnect
DebugLog("{ DisConnect")
If PortOpen=1
CloseSerialPort(0)
PortOpen = 0
PutStringToEditorGadget(">DisConnect")
Delay(100)
EndIf
;}
;{ Canvas
Case Canvas
;}
;{ SetUpSaveAndClear
Case #Main_SetUpSaveAndClear
SaveAndClear=GetGadgetState(#Main_SetUpSaveAndClear)
Debuglog("SaveAndClear = "+Str(SaveAndClear))
;}
;{ SetUpTrackData
Case #Main_SetUpTrackData
TrackData=GetGadgetState(#Main_SetUpTrackData)
Debuglog("TrackData ="+Str(TrackData))
;}
;{ SetUpTrackCom
Case #Main_SetUpTrackCom
TrackCom=GetGadgetState(#Main_SetUpTrackCom)
Debuglog("TrackCom ="+Str(TrackCom))
;}
;{ SetUpSave
Case SetUpSave
Save=GetGadgetState(SetUpSave)
Debuglog("Save ="+Str(Save))
;}
;{ SetUpClear
Case SetUpClear
Clear=GetGadgetState(SetUpClear)
Debuglog("Clear ="+Str(Clear))
;}
;{ SetUpDebugLog
Case SetUpDebugLog
DebugLog=GetGadgetState(SetUpDebugLog)
Debuglog("DebugLog ="+Str(DebugLog))
;}
;{ CallRequester / Call Save Pfad Requester
Case CallRequester
DateiName$=PathRequester("Bitte wählen Sie einen Pfad aus", "")
If DateiName$ <> ""
SpeicherPfad=DateiName$
SetGadgetText(SetUpSavePfad,SpeicherPfad)
EndIf
;}
EndSelect
;{ Statatur Eingabe #WM_KEYDOWN
Case #WM_KEYDOWN
DebugLog("{ #WM_KEYDOWN")
Select EventwParam()
Case #RETURN
String.s = GetGadgetText(Eingabezeile)
Debuglog(String.s)
SendComandAndWait(String.s)
SetGadgetText(Eingabezeile,"")
EndSelect
DebugLog("}")
;}
Case #PB_Event_Menu
Select EventMenu()
;{ About
Case #Menu_About
hWnd = OpenWindow(#Menu_About, 0, 0, 400, 300, "About", #PB_Window_BorderLess | #PB_Window_ScreenCentered) : If hWnd=0: Debug "Cant open window": End: EndIf
StickyWindow(#Menu_About,#True)
ButtonGadget(#About_Exit, 160, 270, 80, 24, "OK")
;}
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
event = WindowEvent()
Wend
ProcedureReturn event
EndProcedure
Procedure Timer()
Protected i1,t$
Select EventTimer()
Case #EventForce
; Dieser Code Teil muss in die TimerEvent Procedure, Weil sonst beim bewegen des Fensters
; Das Programm bei WaitEvent stehen bleibt. Ein bekanntes Problem ab W 7 durch die einfürung
; des Binding Systems
GetCom3()
If RunTest < ElapsedMilliseconds()
RunTest = ElapsedMilliseconds()+1000
debuglog("Main Schleife läuft")
EndIf
;----------------------------------------------------------------------------------------
EndSelect
EndProcedure
;{ Open Main Window
hWnd1 = OpenWindow(#MainWindow, 0, 0, 400, 540, Title.s+" ("+Version.s+")", #PB_Window_SystemMenu| #PB_Window_ScreenCentered) : If hWnd1=0: Debug "Cant open window": End: EndIf
hFont = LoadFont(1, "Ariel", 8): If hFont=0: Debug "Cant open font" : End: EndIf
SetGadgetFont(#PB_Default, FontID(1))
;}
;{ Event Timer
; Damit beim Windows Verschieben der Code nicht stehen bleibt.
If EventTimer = 1
AddWindowTimer(#MainWindow, #EventForce, 1)
BindEvent(#PB_Event_Timer, @Timer(), #MainWindow)
EndIf
;}
;{ GUI elemente erzeugen
; Auswahl GetGat für die Verbindungs Geschwindigkeit -----------------------------
ComboBoxGadget(#Main_Speed, 10, 460, 70, 24)
Restore BaudData
Read.l a.l
While a.l<>-1
AddGadgetItem(#Main_Speed, -1,Str(a.l))
Read.l a.l
Wend
SetGadgetState(#Main_Speed, 9)
Verbindung.l = Val(GetGadgetText(#Main_Speed))
;Auswahl GetGat für den ComPort -------------------------------------------------
Port = ComboBoxGadget(#PB_Any, 85, 460, 70, 24)
Restore ComPort
Read.s b.s
While b.s<>"-1"
If OpenSerialPort(0, b.s,300, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
AddGadgetItem(Port, -1,b.s)
CloseSerialPort(0)
EndIf
Read.s b.s
Wend
SetGadgetState(Port, 0)
PortName.s=GetGadgetText(Port)
; Liste der comandos ------------------------------------------------------------
ComList = ComboBoxGadget(#PB_Any, 310, 425, 80, 24)
Restore ComandList
Read.s b.s
While b.s<>"-1"
AddGadgetItem(ComList , -1,b.s)
Read.s b.s
Wend
SetGadgetState(ComList , 0)
Comando.s = GetGadgetText(ComList)
; GadGet
Eingabezeile = StringGadget(#PB_Any, 10, 425, 290, 24, Comando.s)
ButtonGadget(#Main_Connect, 160, 459, 70, 26, "Connect")
ButtonGadget(#Main_DisConnect, 235, 459, 70, 26, "DisConnect")
ButtonGadget(#Main_Senden, 320, 459, 70, 26, "Send")
Console= EditorGadget(#PB_Any, 10, 45, 380, 300 ,#PB_Editor_ReadOnly)
SendGui = ButtonGadget(#PB_Any, 10, 15, 180, 24, "Load GUI.txt and send to ARDUINO")
SendLastGui = ButtonGadget(#PB_Any, 210, 15, 180, 24, "Send last GUI.txt to ARDUINO")
DisableGadget(SendLastGui, 1)
CheckBoxGadget(#Main_SetUpSaveAndClear, 10, 348, 100, 24, "SaveAndClear")
If SaveAndClear = 1
SetGadgetState(#Main_SetUpSaveAndClear, #PB_Checkbox_Checked)
EndIf
CheckBoxGadget(#Main_SetUpTrackData, 270, 348, 100, 24, "TrackData")
If TrackData = 1
SetGadgetState(#Main_SetUpTrackData, #PB_Checkbox_Checked)
EndIf
CheckBoxGadget(#Main_SetUpTrackCom, 270, 367, 100, 24, "TrackCom"):
If TrackCom = 1
SetGadgetState(#Main_SetUpTrackCom, #PB_Checkbox_Checked)
EndIf
SetUpSave = CheckBoxGadget(#PB_Any, 170, 367, 100, 24, "Save"):
If Save = 1
SetGadgetState(SetUpSave, #PB_Checkbox_Checked)
EndIf
SetUpClear = CheckBoxGadget(#PB_Any, 170, 348, 100, 24, "Clear"):
If Clear = 1
SetGadgetState(SetUpClear, #PB_Checkbox_Checked)
EndIf
SetUpDebugLog = CheckBoxGadget(#PB_Any, 10, 367, 100, 24, "DebugLog"):
If DebugLog = 1
SetGadgetState(SetUpDebugLog, #PB_Checkbox_Checked)
EndIf
CallRequester = ButtonGadget(#PB_Any, 360, 395, 30, 24, "...")
SetUpSavePfad = StringGadget(#PB_Any, 10, 395, 345, 24, SpeicherPfad.s,#PB_String_ReadOnly )
;Menue
CreateMenu(0, WindowID(#MainWindow))
MenuTitle("Configuration")
MenuItem(6, "Input")
MenuItem(1, "Output")
MenuItem(2, "BlouTooth")
MenuTitle("Interpretation")
MenuTitle("Tools")
MenuItem(3, "Search Arduino")
MenuItem(4, "GUI Data to Sketch")
MenuTitle("Intern")
MenuTitle("Update")
MenuItem(7, "Search")
MenuTitle("Help")
MenuItem(5, "Online")
MenuItem(#Menu_About, "About")
;}
;{ Main
Repeat
If GUI = 1
EndIf
Event = WindowEventSelect()
;{ GetCom2 / Auf daten von der Schnitstelle horchen
GetCom3()
If RunTest < ElapsedMilliseconds()
RunTest = ElapsedMilliseconds()+1000
;debuglog("Main Schleife läuft")
EndIf
;}
;{ Programm ende Requester
If Quit = 1
If MessageRequester("Quit Requester","You are quite the programm ",#PB_MessageRequester_YesNo ) = #PB_MessageRequester_No
Quit = 0
EndIf
EndIf
;}
;{ Keine Daten von der Schnitstelle , dann eine ms Warten um dem System Zeit zu geben
If t$="" And Event = 0
Delay(1)
EndIf
;}
Until Quit = 1
SendComandNotWait(".RESET")
Delay(200)
;}
;{ Recurcen Freigeben
If DebugLogOpen
CloseFile(DebugLogOpen)
EndIf
FreeList(DrawComandos())
FreeList(DrawListen())
FreeGadget(#PB_All)
CloseWindow(#PB_All)
;}
End
;{ Data
DataSection
BaudData:
Data.l 300,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200,-1
ComPort:
Data.s "COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","COM10","COM11","COM12","-1"
ComandList:
Data.s "..",".term",".gui","/end","/DrawList(S1)","/DrawList(S2)","/Flip()","/StartDraw()","/StopDraw()","/CreateCanvas()","/SetRGB(0,0,0)","/ClearDraw()","/SetRGB(255,255,255)","/Line(0,0,400,400,1)","/Box(10,10,500,500,1)","/Text(50,100,GUIreflect,20)"
Data.s "/SaveList(TestSeite1)","-1"
EndDataSection
;}
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -