Quantex GmbH
Twój region: Europa

PassThruReadVersion v4.04 v5.0

Odczyt informacji o DLL i adapterze

Ostatnia zmiana:

Opis

Funkcja zwraca informacje o wersji biblioteki DLL, wersji firmware adaptera oraz obsługiwanej wersji standardu J2534 API. Dane te są przydatne do diagnostyki zgodności i debugowania.

long PassThruReadVersion(unsigned long DeviceID, char* pFirmwareVersion, char* pDllVersion, char* pApiVersion)

Parametry

Zwracane kody błędów

Kod Opis Możliwe przyczyny i rozwiązania
STATUS_NOERROR Funkcja wykonana pomyślnie
ERR_DEVICE_NOT_CONNECTED Brak połączenia z adapterem
  • Adapter jest wyłączony lub utracono połączenie
  • Rozwiązanie: Sprawdź zasilanie adaptera oraz połączenie sieciowe/BLE
  • Nieprawidłowo podany adres IP lub nazwa urządzenia
  • Rozwiązanie: Sprawdź parametry połączenia w PassThruOpen
ERR_INVALID_DEVICE_ID Podano nieistniejący identyfikator adaptera DeviceID
  • DeviceID nie został uzyskany z PassThruOpen
  • Rozwiązanie: Upewnij się, że używasz DeviceID zwróconego przez funkcję PassThruOpen
  • Urządzenie zostało już zamknięte przez PassThruClose
  • Rozwiązanie: Wywołaj PassThruOpen, aby ponownie nawiązać połączenie
ERR_NULL_PARAMETER Jeden ze wskaźników jest równy NULL
  • Przekazano NULL zamiast wskaźnika do bufora
  • Rozwiązanie: Upewnij się, że wszystkie trzy wskaźniki (pFirmwareVersion, pDllVersion, pApiVersion) wskazują na przydzielone bufory o rozmiarze co najmniej 80 bajtów

Przykłady

Przykład w C/C++

#include "j2534_dll.hpp"

// DeviceID uzyskany wcześniej z PassThruOpen
unsigned long DeviceID;
char pFirmwareVersion[80];
char pDllVersion[80];
char pApiVersion[80];

long ret = PassThruReadVersion(DeviceID, pFirmwareVersion, pDllVersion, pApiVersion);
if (ret != STATUS_NOERROR) {
    char error[256];
    PassThruGetLastError(error);
    // Obsługa błędu
} else {
    printf("Wersja firmware: %s\n", pFirmwareVersion);
    printf("Wersja DLL: %s\n", pDllVersion);
    printf("Wersja API: %s\n", pApiVersion);
}

Przykład w Kotlin (Android)

// deviceID uzyskany wcześniej z ptOpen
val result = j2534.ptReadVersion(deviceID)
if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Wersja firmware: ${result.firmwareVersion}")
    Log.i("J2534", "Wersja DLL: ${result.dllVersion}")
    Log.i("J2534", "Wersja API: ${result.apiVersion}")
} else {
    Log.e("J2534", "Błąd odczytu wersji: ${result.status}")
}

Przykład w Python

# device_id uzyskany wcześniej z PassThruOpen
firmware_ver = ctypes.create_string_buffer(80)
dll_ver = ctypes.create_string_buffer(80)
api_ver = ctypes.create_string_buffer(80)

ret = j2534.PassThruReadVersion(device_id, firmware_ver, dll_ver, api_ver)
if ret == 0:  # STATUS_NOERROR
    print(f"Wersja firmware: {firmware_ver.value.decode()}")
    print(f"Wersja DLL: {dll_ver.value.decode()}")
    print(f"Wersja API: {api_ver.value.decode()}")
else:
    print(f"Błąd odczytu wersji: {ret}")

Przykład w C#

// deviceId uzyskany wcześniej z PassThruOpen
StringBuilder firmwareVersion = new StringBuilder(80);
StringBuilder dllVersion = new StringBuilder(80);
StringBuilder apiVersion = new StringBuilder(80);

int ret = J2534.PassThruReadVersion(deviceId, firmwareVersion, dllVersion, apiVersion);
if (ret == 0) {
    Console.WriteLine($"Wersja firmware: {firmwareVersion}");
    Console.WriteLine($"Wersja DLL: {dllVersion}");
    Console.WriteLine($"Wersja API: {apiVersion}");
} else {
    Console.WriteLine($"Błąd odczytu wersji: {ret}");
}