java - 如何通过 Java 以编程方式在 116i 上使用 BMW JSDK 限制速度?

标签 java rfid

我正在新的 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);
                }

            }
        });
    }
}

如果驾驶员的行驶速度超过驾驶员配置文件允许的速度,这只会发出两秒钟的蜂鸣声。

我的问题是 - 是否有可能实际限制速度(不仅仅是愚蠢的哔哔声)?

最佳答案

你如何使用不完美的人来减慢速度?你刹车!与 BMW SDK 相同:

Brake brake = (Brake) mode.getDevice(Devices.BRAKE);
brake.apply(Brake.TO_THE_METAL);

关于java - 如何通过 Java 以编程方式在 116i 上使用 BMW JSDK 限制速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557423/

相关文章:

java - ACR122 USB SDK - JNI 调用 Winscard.dll

java - 映射异常 : Unknown entity when using Entity subclass as Command

javascript - 二叉表达式树的中缀

java - 为什么我不能创建多个 GsonBuilder 并为每个 GsonBuilder 注册不同类型的适配器?

Java 不能从盒装类型转换为原始类型

javascript - 在 Node.JS 中刷新缓冲区数据

android - 在 Mifare Ultralight C 上限制写入时读取