2010-04-01 5 views
20

새로운 BMW 116i 혁신 패키지에서 BMW Java SDK를 실험하고 있습니다. 전등을 켜고 끄는 것과 같은 기본적인 것들은 모터 작동을 시작하고 멈추는 것이 좋습니다. 지금 내가하려는 것은 드라이버 프로파일에 구성된 최대 속도로 속도를 제한하는 carlet을 작성하는 것입니다. 드라이버 ID는 RFID 리더를 통해 평소와 같이 감지됩니다.Java에서 프로그래밍 방식으로 BMW JSDK의 속도를 116i로 제한하는 방법은 무엇입니까?

내 문제는 속도계에서 속도를 읽을 수는 있지만 실제로 속도를 제한 할 수 없다는 것입니다. 여기에 지금까지 일하고있어 무엇 : 드라이버는 드라이버 프로파일이 허용하는 것보다 더 빨리가는 경우

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 초 동안 경고음이 울립니다.

내 질문은 - 실제로 한계 속도 (바보 같은 삐 소리가 아님)가 있습니까?

+0

이것이 만우절의 농담이 아닌 경우는, 내 옆에 차를 JSDK-활성화해야합니다! –

+1

나는 거의 4 월 1 일 (인터넷이 쓸모없는 날)에 가까워지면서 이것을 삭제 플래그로 지정했다. 그러나 http://java.sun.com/developer/technicalArticles/J2ME/TLA.html에 따르면 실제로 BMW 용 Java SDK가 실제로 존재합니다. –

+0

확실히 * 농담입니다 : D –

답변

8

어떻게 불완전한 사람을 사용하여 천천히합니까? 브레이크! BMW SDK와 같은 :

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

이것은 작동 할 수 있습니다 - 브레이크를 걸고 동시에 속도를 확인하십시오 ... 그러나 어떻게해야 할 지 생각지 않습니다. 속도 제한이 270 인 공장 설정이있어 재설정/재 프로그래밍이 가능한 것이 있어야합니다. – lexicore

+0

그것은 270 km/h입니다. 맞습니까? 또는 BMW는 다시 비행기를 생산할 예정입니까? :) –

+0

JVM을 사용하여 브레이크를 밟을 수는 없습니다. 맞습니까? – Thilo

3

내가 생각하는 (희망)이 가능 매우 가능성이 아니라는 것을, 그리고 그 이유는 그들이 "비 핵심 '가젯을 사용할 경우 자동차 제조 업체는 법적 문제가 많이있을 것입니다 예를 들어 엔터테인먼트/네비게이션 시스템에 내장 된 JVM이 모터 또는 조향 컨트롤을 방해합니다. 이는 일반적인 브라우저 악용보다 보안 위험이 훨씬 더 큽니다.

Fly-by-wire 자동차는 최종 사용자/해커가 액세스 할 수있는 부품이 없으므로 충분히 무섭습니다.

+1

타사 조정에는 특별 수당 (소위 Bauartgenehmigung/Betriebserlaubnis)과 추가 보험이 필요합니다. BMW는 이와 관련이 없습니다. – lexicore

+1

예 ... "botnet"은 완전히 새로운 흥미로운 의미를 가질 수 있습니다 ... %) –

+1

나는 이것이 전통적인 튜닝보다 조금 더 (더 나쁜)라고 생각합니다. JVM이 제동이나 조정을 허용하는 장치에 물리적으로 연결되지 않았기를 바랍니다.조정/해킹은 제쳐두고, 소프트웨어 버그로 인해 끔찍한 문제가 발생할 수 있습니다. 공장 설정 속도 제한 (270)은이 JVM과 완전히 다른 시스템 인 모터 내부 전자 장치에 의해 시행되어야한다고 생각합니다. 이러한 전자 장치는 올바른 장비로 조정할 수 있지만 별도의 문제입니다. – Thilo

3

당신의 큰 문제는 당신이 엔진 속도를 얻을 때 당신이 현재 기어비를 고려하고 있지 않다는 것입니다. tach가 700에서 7000 사이 어딘가로 돌아가는 동안 190과 같은 속도를보고 있습니다. 엔진 RPM, 기어 비율 및 타이어 지름을 취하고 실제 속도를 반환하는 기능이 필요합니다.

또는 자동차의 속도는 속도계 또는 GPS에서 얻을 수 있습니다.

+2

API에 독일어 용어가 있습니다. 회전 속도계는 엔진 회전 속도를 RevCounter라고합니다. – lexicore

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