## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten

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;
     	}

     	/**

- Antworten:
  - Re: [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten
    - From: Peter König

- Voriger (Datum): [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten, Stefan Geuken
- Nächster (Datum): Re: [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten, Peter König
- Voriger (Thread): [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten, Stefan Geuken
- Nächster (Thread): Re: [ct-bot] ct-Sim: Testbot Display Bugfix und Anzeige der Sensordaten, Peter König
- Indizes:
  - Datum
  - Thread