next up previous
Next: 6 Viewプログラムで利用されているクラス,インタフェース Up: 5 examples/view サンプル Previous: 5.7 MotorView.java

5.8 SensorView.java


import josx.platform.rcx.*;

public class SensorView
   extends PortView
   implements SensorConstants, Segment
{
  public static final SensorView S1 =
    new SensorView( Sensor.S1, 0);
  public static final SensorView S2 =
    new SensorView( Sensor.S2, 1);
  public static final SensorView S3 =
    new SensorView( Sensor.S3, 2);

  static final int MAXMODE = 7;
  static final int MAXSTATE = 1;

  Sensor sensor;
  int iMode;
  int iState;

  SensorView( Sensor s, int n )
  {
    super( false, n);
    sensor = s;

    iMode = 0;
    setMode();

    iState = 0;
    setState();
  }

  void setMode()
  {
    sensor.setPreviousValue (0);
    if (iMode == 0)
      sensor.setTypeAndMode (SENSOR_TYPE_TOUCH,
                                 SENSOR_MODE_RAW);
    else if (iMode == 1)
      sensor.setTypeAndMode (SENSOR_TYPE_TOUCH,
                                 SENSOR_MODE_BOOL);
    else if (iMode == 2)
      sensor.setTypeAndMode (SENSOR_TYPE_TOUCH,
                                 SENSOR_MODE_EDGE);
    else if (iMode == 3)
      sensor.setTypeAndMode (SENSOR_TYPE_TOUCH,
                                 SENSOR_MODE_PULSE);
    else if (iMode == 4)
      sensor.setTypeAndMode (SENSOR_TYPE_LIGHT,
                                 SENSOR_MODE_PCT);
    else if (iMode == 5)
      sensor.setTypeAndMode (SENSOR_TYPE_ROT,
                                 SENSOR_MODE_ANGLE);
    else if (iMode == 6)
      sensor.setTypeAndMode (SENSOR_TYPE_TEMP,
                                 SENSOR_MODE_DEGC);
    else if (iMode == 7)
      sensor.setTypeAndMode (SENSOR_TYPE_TEMP,
                                 SENSOR_MODE_DEGF);
  }

  void setState()
  {
    if (iState == 0)
      sensor.passivate();
    else if (iState == 1)
      sensor.activate();
  }

  public void showPort()
  {
    if( sensor.readBooleanValue())
      LCD.setSegment(
            LCDSegment.sensorActive( number));
  }

  public void showValues()
  {
    LCDProgramNumber.set (iMode);
    LCDNumber.set( sensor.readValue(),
                         iMode/6, (iMode != 0));
    if( iState == 0)
      LCD.setSegment( STANDING);
    else if( iState == 1)
      LCD.setSegment( WALKING);
  }

  public void runPressed()
  {
    iState++;
    if (iState > MAXSTATE)
      iState = 0;
    setState();
  }

  public void prgmPressed()
  {
    iMode++;
    if (iMode > MAXMODE)
      iMode = 0;
    setMode();
  }

  public void shutdown()
  {
    sensor.passivate();
  }
}


generated through LaTeX2HTML. M.Inaba 平成18年5月6日