我正在尝试使用BMW Java SDK在新的BMW 116i Innovation Package上进行实验。像打开和关闭车灯、启动和停止发动机这样的基本功能都可以正常工作。现在我想要做的是编写一个carlet,将速度限制为驾驶员配置文件中最大的速度。驾驶员身份仍然会通过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);
}
}
});
}
}
如果司机开车超过了司机档案允许的速度,这段代码将会哔哔声两秒钟。
我的问题是-是否有可能实际限制速度(而不仅仅是发出傻傻的嘟嘟声)?