Я экспериментирую с BMW Java SDK на новом инновационном пакете BMW 116i. Основные вещи, такие как включение и выключение огней, запуск и остановка работы двигателя. То, что я пытаюсь сделать сейчас, это написать автомат, который ограничил бы скорость до максимума, настроенного в профиле драйвера. Идентификатор драйвера будет обнаружен, как обычно, с помощью считывателя RFID.
Моя проблема в том, что, хотя я могу читать скорость с тахометра, я не могу ограничить скорость. Вот что я до сих пор работаю:
public class SpeenControllingCarlet extends GenericCarlet {
public void start(final VehicleModel model) throws CarletException {
RfidReader rfidReader = (RfidReader) model
.getDevice(Devices.DRIVER_RFID_READER);
Rfid rfid = rfidReader.getRfid();
DriverProfile driverProfile = model.getDriverProfileRegistry()
.getDriverProfile(rfid.toString());
if (driverProfile == null) {
return;
}
final Double maxAllowedSpeed = Double.valueOf(driverProfile
.getCustomAttribute("maxAllowedSpeed", "190"));
Tachometer tachometer = (Tachometer) mode.getDevice(Devices.TACHOMETER);
tachometer.addSpeedListener(new SpeedListener() {
public void onSpeedChanged(SpeedChangedEvent speedChangedEvent) {
if (speedChangedEvent.getCurrentSpeed() > maxAllowedSpeed)
{
Horn horn = (Horn) mode.getDevice(Devices.HORN);
horn.beep(440, 2000);
}
}
});
}
}
Это будет звучать только в течение двух секунд, если драйвер будет работать быстрее, чем позволяет профиль драйвера.
Мой вопрос - есть ли возможность на самом деле ограничить скорость (не только глупый сигнал)?