(Erledigt)Konstante nicht gefunden ???
Verfasst: 19.11.2017 12:54
Hallo,
ich habe ein komisches Problem . Nachfolgender Code erzeugt einen Fehler. Ich habe aber einen Code wo es nicht passiert.
jemand eine Idee.
Gruss TFT
Und hier das Beispiel das Funktioniert. Der gesuchte Abschnitt befinden sich bei Zeile 122.
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 = -
