簡體   English   中英

使用Java FTDI庫創建OBD2 MUT掃描器-jd2xx-openport1.3 usb電纜

[英]Create OBD2 MUT scanner by using Java FTDI lib - jd2xx - openport1.3 usb cable

我正在嘗試為三菱藍瑟MX 1997創建一個Java obd2掃描儀應用程序,該應用程序在OBD2上使用MUTII協議。 誰能幫助我使用jd2xx庫讀取MUT請求代碼 我嘗試了以下程序,但未讀取引擎RPM。

package lancerscan;

import jd2xx.JD2XX;

public class Test2 {

    public static void main(String[] args) throws Exception {

    JD2XX jd = new JD2XX();
    jd.open(0);
    jd.setBaudRate(38400);
    jd.setDataCharacteristics(
            8, JD2XX.STOP_BITS_1, JD2XX.PARITY_NONE);
    jd.setFlowControl(
            JD2XX.FLOW_NONE, 0, 0);
    jd.setTimeouts(1000, 1000);

    String msg = "21";
    int ret = jd.write(msg.getBytes());
    System.out.println(ret + " bytes sent.");

    int rd = jd.read();
    System.out.println(">>>" + rd);

    int status = jd.getQueueStatus();
    byte[] data = new byte[(int) status];
    long lngBytesReturned = jd.read(data, 0, data.length);

    System.out.println("======= " + lngBytesReturned);
    }
}

引擎RPM的MUT請求代碼為0x21,更多MUT請求代碼可在此處找到

其工作正常類似C語言程序是在這里 ; 主要的prjct文件在這里

謝謝,莎莎

首先,您使用與示例中不同的波特率。 該示例使用15625 baud但您使用的是38400 baud

其次,您缺少一些設置命令。 我不確定這是否會有所作為,但是在您的代碼和示例之間有所不同。

三菱要求您通過在其中一個引腳上以5 baud的速率發送0x00 ,將汽車ECU設置為診斷模式。 在OpenPort 1.3D電纜上,這表示將中斷設置為打開1800 ms ,然后將其關閉。 您可以從libftdimut.c文件中的ftdimut_init()命令完成此操作。

      printf("Sending 0x00 at 5 baud\n");

      printf("Break on......\n");
      ftStatus = FT_SetBreakOn(ftdimut_ftHandle);
      if(ftStatus != FT_OK) return ftStatus;
      ftdimut_msleep(1800);
      printf("Break off......\n");
      ftStatus = FT_SetBreakOff(ftdimut_ftHandle);
      if(ftStatus != FT_OK) return ftStatus;

然后,汽車ECU將向您發送包含ECU ID的4個字節。 然后可以將其用於檢查ECU是否正確進入診斷模式。 您可以在libftdimut.c中看到它。

      ftStatus = FT_Read(ftdimut_ftHandle, buf, 4, &bytesRead);
      if(ftStatus != FT_OK) return ftStatus;

      if(bytesRead == 4) {
        return FT_OK;
      }

現在,假設您退回了4個字節,則可以開始發送診斷代碼,例如0x170x21

我剛剛在您的博客上看到您的帖子,niallm答案是正確的,您需要先進行5波特初始化,這涉及驅動KLine,您可以使用該答案中發布的5波特初始化之類的內容,以及有關協議的更多信息:

http://evoecu.logic.net/wiki/MUT_Protocol

得到4個字節的響應后,您可以以15625波特的速度開始發送請求(我正在與94 3000GT通信,因此CEL指示燈停止閃爍),在本例中,我也將轉換后的值(0x21 = 33十進制)作為字節數組發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM