/// <summary> /// Gets the value depending on the current mode /// </summary> /// <returns>value</returns> public async Task <ColorSensorValue> GetValue() { int raw = await InputMethods.GetReadyRaw(Brick.Socket, PortNumber, 0, (int)Mode); ColorSensorValue value = ConvertToSensorValue(raw); Value = value; return(value); }
/// <summary> /// Override to set the value from EventMonitor /// </summary> protected sealed override bool SetValue(object value) { ColorSensorValue newValue = ConvertToSensorValue(value); bool hasChanged = (Value != newValue); if (hasChanged) { Value = newValue; if (InputChanged != null && MonitorEvents) { if (Brick.Socket.SynchronizationContext == SynchronizationContext.Current) { InputChanged(this, Value); } else { Brick.Socket.SynchronizationContext.Post(delegate { InputChanged(this, Value); }, null); } } } return(hasChanged); }
private ColorSensorValue ConvertToSensorValue(object value) { if (value == null) { return(null); } ColorSensorValue colorSensorValue; switch (Mode) { case ColorSensorMode.Color: { colorSensorValue = new ColorSensorValue(((ColorSensorColor)(int)value), Mode); break; } default: //TODO test other colormodes!! { colorSensorValue = new ColorSensorValue((int)value, Mode); break; } } return(colorSensorValue); }
/// <summary> /// constructs a LEGO® MINDSTORMS® EV3 Color Sensor /// </summary> public ColorSensor(ColorSensorMode mode) : base(DeviceType.ColorSensor) { Mode = mode; Value = new ColorSensorValue(ColorSensorColor.None, Mode); }