Gecodet habe ich eine IDE für die Entwicklung (C und Assembler) von diversen Industrieüblichen PIC's.
Das ganze Funktionirt soweit prima, zumindest das Schreiben in die Console (Befehlsausführung mit RunProgram)
Hier mal ein Beispiel, event gibt's da auch noch Verbesserungen ?
Die Variablen werden je nach Befehl und Programmer vom Programm zusammengesetzt. Hier AVRDude.
Code: Alles auswählen
Case #avr_linker
If OpenConsole("Console", #PB_UTF8)
progrun.l = RunProgram("avr-gcc","-mmcu="+pic_name+" -Os -c "+projekt+"/"+av_datei+".c -o "+projekt+"/"+av_datei+".o","", #PB_Program_Open | #PB_Program_Write)
Debug Str(progrun)
If ProgramRunning(progrun) = 0
MessageRequester("Info","Programm Abbruch")
KillProgram(progrun)
CloseProgram(progrun)
Else
MessageRequester("Info","Programm Übersetzt")
KillProgram(progrun)
CloseProgram(progrun)
EndIf
EndIf
CloseConsole()
If OpenConsole("Console", #PB_UTF8)
progrun = RunProgram("avr-gcc",projekt+"/"+av_datei+".o -o "+projekt+"/"+av_datei+".elf","",#PB_Program_Open | #PB_Program_Write)
Debug Str(progrun)
If ProgramRunning(progrun) = 0
MessageRequester("Info","Programm Abbruch")
KillProgram(progrun)
CloseProgram(progrun)
Else
MessageRequester("Info","Linker Beendet")
KillProgram(progrun)
CloseProgram(progrun)
EndIf
EndIf
CloseConsole()
Habe alles was ich im Netz und Foren finden konnte probiert , aber nur mit mäßigen Erfolg.
So auch das nächste Code Beispiel "Lesen" was teilweise was Ausgibt, den "stderr" aber den "stdout"
bekomme ich nicht zum Reden.
Code: Alles auswählen
; Da das Terminal aber gesprächig ist möchte ich die Ausgabe / Rückmeldung auch von der Console Lesen.
; Verwendet und Abgewandelt habe ich ein Lesebeispiel aus PureExamples
; Habe etwas Rumgecodet mit Befehlen um das ganze zu verstehen
; ---------------------------------------------------------------------
RunProgram("GNOME-Terminal","","",#PB_Program_Open | #PB_Program_Write )
; Variablen vom Program
progger.s = "avrdude"
ic_name.s = "atmega8"
isp_version.s = "avr910"
device_pipe.s = "/dev/ttyUSB0"
projekt.s = "/home/stephan/AVR_Projekte/Ampel/"
av_datei.s = "Ampel"
; Gegebene Variablen
#BUFF_SIZE = 1024
Prog.i
total_size = 0
stdout.s
stderr.s
avail.i
BufferFree = 10000
*buffer = AllocateMemory(#BUFF_SIZE)
If OpenConsole("Console", #PB_UTF8)
Prog = RunProgram(progger,"","",#PB_Program_Open | #PB_Program_Read | #PB_Program_Error | #PB_Program_UTF8)
If Prog
While ProgramRunning(Prog)
avail = ReadConsoleData(*buffer+total_size,BufferFree)
stdout + PeekS(*buffer, avail, #PB_ByteLength | #PB_UTF8)
stderr + ReadProgramError(Prog)
Wend
CloseProgram(Prog)
EndIf
FreeMemory(*buffer)
If stdout
Debug "======OUTPUT====="
Debug stdout
Debug "================="
EndIf
If stderr
Debug "======ERROR====="
Debug stderr
Debug "================"
EndIf
EndIf
CloseConsole()
Bitte mal um einen Denkanstoß

Noch ein schönes WE, LG Stephan