23

新しい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秒間ビープ音を鳴らします。

私の質問は-実際に速度を制限する可能性はありますか(愚かなビープ音だけでなく)?

4

4 に答える 4

9

不完全な人間を使ってどのように速度を落としますか。ブレーキ!BMW SDK と同じ:

Brake brake = (Brake) mode.getDevice(Devices.BRAKE);
brake.apply(Brake.TO_THE_METAL);
于 2010-04-01T00:42:43.670 に答える
7
Wrench wrench = (Wrench) Toolkit.getToolkit().get(Instruments.WRENCH);
wrench.hit(driver);
于 2010-04-01T21:43:57.373 に答える
3

私は、これが不可能である可能性が非常に高いと考えています (そして願っています)。その理由は、エンターテイメント/ナビゲーション システムに組み込まれている JVM のような「コアではない」ガジェットが干渉することを自動車メーカーが許可した場合、多くの法的な問題に直面するからです。モーターまたはステアリングコントロールで。これは、平均的なブラウザの悪用よりもはるかに深刻なセキュリティ リスクです。

フライバイワイヤー車は、エンドユーザー/ハッカーがアクセスできる部品がないため、十分に恐ろしいものです。

于 2010-04-01T00:48:36.220 に答える
3

あなたの大きな問題は、エンジン速度を取得するときに現在のギア比を考慮していないことです。速度は 190 程度ですが、回転速度は 700 から 7000 の間のどこかになります。エンジンの RPM、ギア比、タイヤの直径を取得し、実際の速度を返す関数が必要です。

または、速度計または GPS から車の速度を取得することもできます。

于 2010-04-01T00:59:28.433 に答える