Javaからプログラム的116IにBMW JSDKで速度を制限するには?
質問
私は新しいBMW 116IイノベーションパッケージにBMWのJava SDKを試しています。 、オンとオフのライトを回し始め、モーターは正常に動作を停止するなどの基本的なもの。私が今やろうとしていることは、ドライバプロファイルに設定された最大の速度を制限する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);
}
}
});
}
}
2秒間これますちょうどビープ音ドライバーが速いドライバープロファイルよりも進んだ場合は、ことができます。
私の質問は - ?実際のリミットの速度が(ちょうど愚かなビープ音ではない)。
への可能性があります解決
どのように不完全な人間を使ってスローダウンしますか?あなたブレーキ! BMW SDKと同じます:
Brake brake = (Brake) mode.getDevice(Devices.BRAKE);
brake.apply(Brake.TO_THE_METAL);
他のヒント
Wrench wrench = (Wrench) Toolkit.getToolkit().get(Instruments.WRENCH);
wrench.hit(driver);
これは非常に可能性がないことが可能であり、かつ理由は、彼らはJVMのような「非中核」ガジェットは、エンターテインメント/ナビゲーションに内蔵されて許可されている場合、自動車メーカーは、法的トラブルの多くになることであることを
私は思う(と希望)モータやステアリングコントロールを妨害するシステム。それはあなたの平均的なブラウザが利用するよりもはるかに悪いセキュリティリスクです。
これは、エンドユーザ/ハッカーにアクセス可能部品ずにそのままフライ・バイ・ワイヤ車は怖い十分です。
あなたの大きな問題は、あなたがエンジン回転数を取得するときに、あなたのアカウントに現在のギア比を取っていないということです。タコは、あなたはエンジンのRPM、ギア比、タイヤの直径、およびリターン実際の速度ます。
を取る機能を必要とする700と7000の間のどこかに戻るには起こっている間は、190のようなの速さを見ていますそれとも、スピードメーターやGPSからの車の速度を得ることができます。
所属していません StackOverflow