如何从Java上1161限制速度与宝马JSDK编程?
题
我与宝马的Java SDK的新BMW 1161创新包装试验。基本的东西,如打开和关闭灯光,启动和停止发动机工作正常。我试图现在要做的是,写一个卡尔莱特这将速度限制在驱动器配置文件中配置最高。驾驶员身份将经由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);
其他提示
Wrench wrench = (Wrench) Toolkit.getToolkit().get(Instruments.WRENCH);
wrench.hit(driver);
我觉得(和希望),这极有可能是不可能的,原因是汽车制造商将在很多法律上的麻烦,如果他们允许“非核心”小玩意像一个JVM内置娱乐/导航系统干扰与电机或转向控制。这是比一般的浏览器利用一个更糟糕的安全风险。
飞翔线控车吓人足够,因为它是没有终端用户/黑客访问部分。
您最大的问题是,你没有考虑当前齿轮比进去时,你得到的发动机转速。你正在寻找的像190的速度,而转速将会700和7000之间的某处返回你需要一个函数,发动机转速,变速比,和轮胎直径,并返回实际速度。
或者你也可以从里程表或GPS获取车子的速度。
不隶属于 StackOverflow