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