java rfid carlet

¿Cómo limitar la velocidad con BMW JSDK en 116i programáticamente desde Java?



rfid carlet (4)

¿Cómo disminuyes la velocidad usando al humano imperfecto? Tu frenas Lo mismo con BMW SDK:

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

Estoy experimentando con el BMW Java SDK en el nuevo paquete de innovación BMW 116i. Las cosas básicas como encender y apagar las luces, arrancar y detener el motor funcionan bien. Lo que estoy tratando de hacer ahora es escribir un carlet que limitaría la velocidad al máximo configurado en el perfil del controlador. La identidad del conductor se detectará como de costumbre a través del lector RFID.

Mi problema es que, aunque puedo leer la velocidad del tacómetro, realmente no puedo limitar la velocidad. Esto es lo que tengo trabajando hasta ahora:

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); } } }); } }

Esto solo emitirá un pitido durante dos segundos si el controlador va más rápido de lo que permite el perfil del controlador.

Mi pregunta es: ¿existe la posibilidad de limitar realmente la velocidad (no solo un pitido tonto)?


Creo (y espero) que esto es muy probable que no sea posible, y las razones son que los fabricantes de automóviles tendrían muchos problemas legales si permitieran que dispositivos "no esenciales" como una JVM incorporada en el sistema de entretenimiento / navegación interfieran Con el motor o los mandos de dirección. Ese es un riesgo de seguridad mucho peor que la vulnerabilidad de su navegador promedio.

Los autos volados por cable son lo suficientemente aterradores como lo son sin partes accesibles para el usuario final / hacker.


Su gran problema es que no tiene en cuenta la relación de transmisión actual cuando obtiene la velocidad del motor. Está observando una velocidad de 190 como, mientras que el tacómetro volverá a situarse entre 700 y 7000. Necesita una función que tome las RPM del motor, la relación de engranajes y el diámetro del neumático, y devuelva la velocidad real.

O puede obtener la velocidad del automóvil desde el velocímetro o el GPS.


Wrench wrench = (Wrench) Toolkit.getToolkit().get(Instruments.WRENCH); wrench.hit(driver);