Forum: Compiler & IDEs WinAVR-Fehlerausgabe anders formatieren


von Frank N. (betafrank)


Lesenswert?

Hallo,

WinAVR (Compiler) spuckt bei Fehlern Meldungen wie diese aus:

main.c:121: error: `Delay' undeclared (first use in this function)

Ich hätte das aber gern so:

E:\Eigene Dateien\TEST1\main.c(121) : `Delay' undeclared (first use in 
this function)

Die IDE würde mich dann per Doppelklick darauf zur entsprechenden 
Codezeile bringen. Läßt sich das ummodeln bzw. wer erzeugt die 
Meldungen?

Danke & Gruß
Frank

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

AVRStudio (mit angepapptem WinAVR) macht das so...

von Ralf Oberle (Gast)


Lesenswert?

Hallo,

es ist relativ einfach, sich selber ein kleines "Filtertool" zu 
schreiben, das die Ausgabe an stdio bzw. stderr neu formatiert. Siehe 
dazu einfach die Hilfe in z.B. MS VC++ 6.0 beim Eintrag dup, spawn, dup2 
etc. suchen. Dort ist auch ein Beispiel mit Quellcode, wie man das genau 
macht.

Der Aufruf ist dann: <Filtertool> <GNU Compiler mit allen Parametern>

Das Tool formatiert dann die Ausgaben vom Compiler um und sendet sie 
entsprechend der neuen Formatierung einfach weiter an stdio bzw. sdterr.

Gruss,

--Ralf

von Ulrich (Gast)


Lesenswert?

Hi,
ich will mein eigenes Steuer und Rückmeldesystem entwickeln und dann in 
srcpd integrieren. Jetzt habe ich schon ein bisschen mir den Quellcode 
von srcpd angeschaut blicke aber noch nicht so richtig durch......

So habe ich mein System geplant:
Es gibt einen Microcontroller mit USB-Anschluss(nachfolgend Bus-Master 
genannt). Dieser MC hängt an einem I2C-Bus. An diesem I2C-Bus hängt eine 
Variable-Anzahl weiterer MCs(nachfolgend Bus-Slave genannt). Diese MCs 
haben 20Pins welche sie in den Modus Eingang, Ausgang, Servo bringen 
können.
Jeder "Bus-Slave" hat eine eindeutige ID. Vom Computer aus werden die 
"Bus-Slaves" nicht über ihre I2C-Adresse angesprochen sondern über ihre 
eindeutige ID. Der "Bus-Master" setzt dann die eindeutige ID mithilfe 
einer Tabelle in die I2C-Adresse um.

Jetzt weiß ich nicht wie ich mein System in srcpd integrieren kann, 
vorallem im Bereich "Datenmapping".
in srcpd wird davon ausgegangen das der Rückmelder 16 Eingänge hat. Aber 
ich habe zwischen 0-20.
Muss ich dann für jeden "Bus-Slave" 2*16=32Bits als FB 
weiterverarbeiten? Das gleiche Gilt auch für GA. Die Servos sollen 
zwischen 2-4Positionen anfahren. Ist sowas im srcpd bereits "eingeplant" 
?

Angenommen ich habe mehrere "Bus-Master" angeschlossen. Da soviel 
eingelesen und ausgegeben wird stelle ich fest dass der Bus überlastet 
ist und nehme aus jedem Bus ein paar "Bus-Slaves" heraus und schließe 
die an einen neuen "Bus-Master" an. Dann muss ich ja in allen 
SRCP-Clients die ich verwende die FBs neu zuordnen.
Wie müsste ich mein System in srcpd integrieren, so dass ich in dieser 
Situation irgendwo irgendein mapping verändern kann und ich damit die 
SRCP-Clients nicht verändern muss....

Wisst ihr wie ich das meine?
Ich kann mir vorstellen das ich irgendwo(srcpd.conf???)ein mapping 
festlege und damit sage Eingänge von "Bus-Slave" mit der ID xyz auf FB 
1-20 mappen usw..
Dann könnte ich die Topologie/Aufbau usw. ändern aber  der Eingang der 
vor der Änderung FB1 war wäre es danach immer noch.

von Ulrich (Gast)


Lesenswert?

sorry diesen Beitrag von mir ignorieren und bitte löschen!!!

von Frank N. (betafrank)


Lesenswert?

@  Ralf Oberle

Danke - über diesen Weg klappt es.

Gruß Frank :-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wobei dup2 + spawn ja nichts andere sind, als eine normale (Unix-)
Pipeline, die cmd.exe auch selbst kann.  Damit wird das Filter dann
drastisch einfacher, da es ja nur von stdin lesen und nach stdout
schreiben muss -- um all den Kram mit spawn und dup2 kümmert sich
cmd.exe selbst.

Ansonsten würde ich von einer IDE erwarten, dass man den Parser für
Fehlermeldungen in sinnvollem Maße an den Compiler anpassen kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.