Hi Karsten,
dg1vs hat geschrieben:Ist zwar ein mächtiges #define-Monster geworden. Scheint aber gut zu funktionieren.
Naja, ganz so schlimm ist es nicht geworden; es hält sich wirklich in Grenzen.
dg1vs hat geschrieben:Die Darstellung ist nicht exakt die, die ich möchte (und schon umgesetzt hatte), aber so beschränken sich die Änderungen zunächst auf kleine Dinge.
Aber es interessiert mich dann schon noch, wie es "aussieht"... Die besten Ideen für Verbesserungen kommen meistens bei der Betrachtung der ersten Versuche.
dg1vs hat geschrieben:Bei einem kleinen Display funktioniert alles wie bekannt.
Ich hab's mal mit Deinen Files compiliert und geladen. Sieht ok aus auf meinem kleinen Display.
dg1vs hat geschrieben:Ich würde gerne die Sachen einchecken, den Zugang hat mir Hartmut eingerichtet. Auch würde ich mich "besser" fühlen, wenn jemand die Änderungen reviewen würde, bevor ich sie einchecke. Im Anhang also alle geänderten File zum SF-Stand.
Ich hab's mir mal kurz durchgesehen und mir gefällt's. Nur kleine Anmerkung: Du hast fast überall in LCDwrite und LCDOverwrite die Zeilennummer durch eine #define-Konstante ersetzt, was als Nebeneffekt der Lesbarkeit gut tut. Das könnte man in Deinem NEUEN Code (ganz unten panel.c) auch noch machen, dann isses konsistent. Vielleicht braucht's noch ein paar mehr #defines, aber durch die durch die neue Variante eingeführte Komplexität könnte damit vielleicht etwas kompensiert werden.
Der resultierende Code ist gut 30 Byte länger, das ist wohl der Funktion
Panel_PrintEnter geschuldet.
Bevor Du eincheckst, synchronisiere Dich bitte mit Thoralt, den haben wir ja auch erst wieder aktiviert und wir sollten seinen Kreativitätschub positiv unterstützen

. Das TODO muß dann halt auch noch irgendwie verarztet werden.
dg1vs hat geschrieben:Eine Sache habe ich noch offen, Macros für "Char" in sprintf oder ähnlichen Funktionen. Hat jemand einen guten Link zu dem Thema. Es geht um die "Sonderzeichen" die sich in Abhängigkeit vom benutzten Display unterscheiden. Und da sind wir auch bei den 2 Symbolen, wo eine Macroersetzung extrem hilfreich wäre. Auf die Schnelle ist mir nichts eingefallen.
Diese Frage ist mir beim Review auch gekommen. Schade, daß man im String die #define-Konstanten nicht direkt einsetzen kann, zumindest wäre mir diese Möglichkeit noch nicht untergekommen. Das einzige, was mir so einfällt ist, die ganze Zeile oder vielleicht auch nur die Strings im printf mit
einzuschließen. Das spart die extra-Funktion, aber die Lesbarkeit ist auch suboptimal.
Das führt auch schon zu:
Code: Alles auswählen
switch(Params.ucSweepSlope)
{
case SWEEP_UP:
LCDOverwrite_P(2, DISPLAY_LINE_1, 6, PSTR("Up \x05"));
break;
case SWEEP_DOWN:
LCDOverwrite_P(2, DISPLAY_LINE_1, 6, PSTR("Down \x05"));
break;
case SWEEP_UPDOWN:
LCDOverwrite_P(0, DISPLAY_LINE_1, 8, PSTR("Up+Down\x05"));
break;
}
Das ist bestimmt noch ein Überbleibsel aus vergangenen Tagen, als das Sweep-Menü mehrere Evolutionsstufen durchlief. Das "Enter" kann da weg.
Ich überleg mal grad so: Du hast ja die RAM-Zeichen des Displays für Deine Zwecke umdefiniert, aber eines (das erste) ist ja komplett leer. Und ein Leerzeichen gibt's aber schon im ROM des Displays; könnte man da nicht noch an die entsprechende Stelle bei 0x05 den Pfeil reinquetschen... und es wäre für beide Optionen zumindest hier gleich. Is' nur so eine Idee. Eine elegante Lösung für alle Optionen ist aber wohl nicht drin.
Grüße
Paul