c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Stefan Geuken
Datum: Do, 16.03.2006 13:43:45
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;
}
/**