2010-04-01 23 views
20

我正在試用BMW新款BMW 116i創新套件中的BMW Java SDK。基本的東西,如打開和關閉燈,啓動和停止電機工作正常。我現在想要做的是編寫一個carlet,將速度限制在驅動器配置文件中配置的最大值。駕駛員身份將通過RFID閱讀器照常檢測。如何以編程方式從Java限制116i上的BMW JSDK速度?

我的問題是,雖然我可以從轉速錶讀取速度,但我無法真正限制速度。下面是我走到這一步的工作是什麼:

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

      } 
     }); 
    } 
} 

這將只是發出蜂鳴聲兩秒鐘,如果駕駛者繼續快於驅動程序配置文件允許。

我的問題是 - 是否有可能實際上限制的速度(不只是愚蠢的嗶嗶聲)?

+0

如果這不是愚人節的笑話,我的下一輛車必須是JSDK功能! – 2010-04-01 00:33:40

+1

我幾乎將此標記爲刪除,因爲我們離4月1日如此近(互聯網變得無用的那一天)。但是,根據http://java.sun.com/developer/technicalArticles/J2ME/TLA.html,顯然實際上有一個用於寶馬的Java SDK。 – 2010-04-01 00:37:37

+0

當然*是一個笑話:D – 2010-04-01 00:38:41

回答

8

如何減慢使用不完善的人?你剎車!同樣與寶馬SDK:

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

這可能會起作用 - 剎車和同時檢查速度...... 但我不認爲這是應該如何完成的。有一個出廠設置,速度限制在270,所以必須有一些可重置/可重新編程的設置。 – lexicore 2010-04-01 00:47:30

+0

那是270公里/小時,對吧?還是寶馬會再次生產飛機? :) – 2010-04-01 00:48:43

+0

你不能使用JVM制動,對吧? – Thilo 2010-04-01 00:50:21

3

我認爲(和希望),這極有可能是不可能的,原因是汽車製造商將在很多法律上的麻煩,如果他們允許「非核心」小工具就像內置於娛樂/導航系統中的JVM干擾電機或轉向控制一樣。這比平均瀏覽器漏洞的安全風險要嚴重得多。

電傳汽車有足夠的可怕性,因爲它沒有終端用戶/黑客可訪問的部件。

+1

第三方調整需要特殊津貼(所謂的Bauartgenehmigung/Betriebserlaubnis)和額外的保險。寶馬與此無關。 – lexicore 2010-04-01 00:57:00

+1

是啊......「僵屍網絡」可能會得到全新的令人興奮的含義......%) – 2010-04-01 00:58:52

+1

我認爲這比傳統的調整更多(更糟糕)。我希望JVM甚至沒有物理連接到允許制動或轉向的設備。如果真是這樣,調整/剽竊,軟件錯誤可能會導致可怕的麻煩。我相信工廠設定的速度限制(270)必須由電機內部的電子設備執行,這是一個與此JVM完全分離的系統。這些電子設備可以用正確的齒輪進行調諧,但這是一個單獨的問題。 – Thilo 2010-04-01 01:04:27

3

你的大問題是,當你獲得發動機轉速時,你沒有考慮當前的齒輪比。你看起來像190的速度,而轉速將在700到7000之間迴歸。你需要一個能夠獲得發動機轉速,傳動比和輪胎直徑並返回實際轉速的功能。

或者您可以從車速表或GPS獲得車速。

+2

他們在API中使用了德語術語。轉速錶是針對轉速的,發動機轉速被稱爲RevCounter。 – lexicore 2010-04-01 01:05:45

6
Wrench wrench = (Wrench) Toolkit.getToolkit().get(Instruments.WRENCH); 
wrench.hit(driver); 
相關問題