Absender: Stefan Geuken
Datum: Do, 16.03.2006 13:45:47
Hallo, ich habe einen Patch erstellt, der zwei Dinge beinhaltet: - Bugfix: Der CtBot Konstruktor hat das Display nicht initialisiert - Der integrierte Testbot zeigt seine Daten auf dem Display an Gruß Stefan
Index: Changelog.txt =================================================================== RCS file: /ctbot/ct-Sim/Changelog.txt,v retrieving revision 1.6 diff -u -r1.6 Changelog.txt --- Changelog.txt 5 Mar 2006 17:05:28 -0000 1.6 +++ Changelog.txt 16 Mar 2006 13:58:28 -0000 @@ -1,5 +1,9 @@ CHANGELOG fuer c't-Sim ====================== +2006-03-16 Stefan Geuken (mail@xxxxxxxxxxxxxxxx) +- Bugfix: Der CtBot Konstruktor hat das Display nicht initialisiert +- Der integrierte Testbot zeigt seine Daten auf dem Display an + 2006-03-03 Heinrich Peters (Heinrich-Peters@xxxxxxx) - LCD-Ausgabe überarbeitet - LEDs werden jetzt im Simulator angezeigt Index: ctSim/ctSim/Model/CtBot.java =================================================================== RCS file: /ctbot/ct-Sim/ctSim/ctSim/Model/CtBot.java,v retrieving revision 1.5 diff -u -r1.5 CtBot.java --- ctSim/ctSim/Model/CtBot.java 5 Mar 2006 17:05:28 -0000 1.5 +++ ctSim/ctSim/Model/CtBot.java 16 Mar 2006 13:58:28 -0000 @@ -323,9 +323,8 @@ * Die initiale Blickrichtung */ public CtBot(Point3f pos, Vector3f head) { - super(); - world = Controller.getWorld(); - createBranchGroup(); + this(); + Vector3f vec = new Vector3f(pos); vec.z += getHeight()/2 + getGroundClearance(); setPos(vec); Index: ctSim/ctSim/Model/CtBotSim.java =================================================================== RCS file: /ctbot/ct-Sim/ctSim/ctSim/Model/CtBotSim.java,v retrieving revision 1.4 diff -u -r1.4 CtBotSim.java --- ctSim/ctSim/Model/CtBotSim.java 22 Feb 2006 16:24:55 -0000 1.4 +++ ctSim/ctSim/Model/CtBotSim.java 16 Mar 2006 13:58:29 -0000 @@ -41,6 +41,7 @@ * @author Benjamin Benz (bbe@xxxxxxxx) * @author Peter Koenig (pek@xxxxxxxx) * @author Lasse Schwarten (lasse@xxxxxxxxxxxxx) + * @author Stefan Geuken (mail@xxxxxxxxxxxxxxxx) */ abstract public class CtBotSim extends CtBot { @@ -326,6 +327,66 @@ int deltaX = meter2Dots(angleDiff * vecMs.length()); this.setSensMouseDX(deltaX); } + + this.updateLcdText(); + } + + /** + * Aktualisiert den Text, der auf dem LCDisplay angezeigt wird anhand der aktuellen + * Sensordaten. + */ + protected void updateLcdText() + { + // display_printf("P=%03X %03X D=%03d %03d ",sensLDRL,sensLDRR,sensDistL,sensDistR); + this.setLcdText(0, 0, + "P=" + formatNumberStr(Integer.toHexString(this.getSensLdrL()).toUpperCase(), 3) + " " + formatNumberStr(Integer.toHexString(this.getSensLdrR()).toUpperCase(), 3) + + " D=" + formatNumberStr(Integer.toString(this.getSensIrL()), 3) + " " + formatNumberStr(Integer.toString(this.getSensIrR()), 3)); + + // display_printf("B=%03X %03X L=%03X %03X ",sensBorderL,sensBorderR,sensLineL,sensLineR); + this.setLcdText(0, 1, + "B=" + formatNumberStr(Integer.toHexString(this.getSensBorderL()).toUpperCase(), 3) + " " + formatNumberStr(Integer.toHexString(this.getSensBorderR()).toUpperCase(), 3) + + " L=" + formatNumberStr(Integer.toHexString(this.getSensLineL()).toUpperCase(), 3) + " " + formatNumberStr(Integer.toHexString(this.getSensLineR()).toUpperCase(), 3)); + + // display_printf("R=%2d %2d F=%d K=%d T=%d ",sensEncL % 10,sensEncR %10,sensError,sensDoor,sensTrans); + String sensEncL = String.valueOf(this.getSensEncL() % 10); + if (this.getSensEncL() >= 0) + sensEncL = " " + sensEncL; + String sensEncR = String.valueOf(this.getSensEncR() % 10); + if (this.getSensEncR() >= 0) + sensEncR = " " + sensEncR; + + this.setLcdText(0, 2, + "R=" + sensEncL + " " + sensEncR + + " F=" + Integer.toString(this.getSensError()) + + " K=" + Integer.toString(this.getSensDoor()) + + " T=" + Integer.toString(this.getSensTrans())); + + // display_printf("I=%04X M=%05d %05d",RC5_Code,sensMouseX,sensMouseY); + this.setLcdText(0, 3, + "I=" + formatNumberStr(Integer.toHexString(this.getSensRc5()).toUpperCase(), 4) + + " M=" + formatNumberStr(Integer.toString(this.getSensMouseDX()), 5) + " " + formatNumberStr(Integer.toString(this.getSensMouseDY()), 5)); + } + + /** + * Hilfsroutine, die einen String abschneidet oder mit Nullen (0) auffüllt + * bis die übergebene konstante Länge erreicht ist. + * @param numberStr + * Der String, der gekürzt/verlängert werden soll. + * @param length + * Die Ziellänge des Ergebnisstrings + * @return + */ + private static String formatNumberStr(String numberStr, int length) + { + if (numberStr == null) + return null; + + if (numberStr.length() < length) + return "0000000000".substring(0,length-numberStr.length()) + numberStr; + else if (numberStr.length() > length) + return numberStr.substring(numberStr.length()-length, numberStr.length()); + else + return numberStr; } /**