Я экспериментирую с 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);
}
}
});
}
}
Это будет звуковой сигнал в течение двух секунд, если драйвер будет работать быстрее, чем позволяет профиль драйвера.
У меня вопрос - есть ли возможность на самом деле ограничить скорость (не просто глупый писк)?