新しいBMW116iイノベーションパッケージでBMWJavaSDKを試しています。ライトのオン/オフ、モーターの始動と停止などの基本的なことは正常に機能します。私が今やろうとしているのは、ドライバープロファイルで構成されている最大速度に速度を制限するカーレットを作成することです。ドライバーの身元は、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);
}
}
});
}
}
ドライバーがドライバープロファイルで許可されているよりも速く進んだ場合、これは2秒間ビープ音を鳴らします。
私の質問は-実際に速度を制限する可能性はありますか(愚かなビープ音だけでなく)?