Quantex GmbH
DE RU EN EL
Ваш регион: Европа

PassThruReadVersion v4.04 v5.0

Чтение информации о DLL и адаптере

Последнее изменение:

Описание

Функция возвращает информацию о версии DLL-библиотеки, версии прошивки адаптера и поддерживаемой версии стандарта J2534 API. Эти данные полезны для диагностики совместимости и отладки.

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

Параметры

Возвращаемые коды ошибок

Код Описание Возможные причины и решения
STATUS_NOERROR Функция выполнена успешно
ERR_DEVICE_NOT_CONNECTED Нет соединения с адаптером
  • Адаптер выключен или потеряна связь
  • Решение: Проверьте питание адаптера и сетевое/BLE подключение
  • Неправильно указан IP-адрес или имя устройства
  • Решение: Проверьте параметры подключения в PassThruOpen
ERR_INVALID_DEVICE_ID Задан несуществующий идентификатор адаптера DeviceID
  • DeviceID не был получен от PassThruOpen
  • Решение: Убедитесь, что используете DeviceID, возвращённый функцией PassThruOpen
  • Устройство уже было закрыто через PassThruClose
  • Решение: Вызовите PassThruOpen для повторного подключения
ERR_NULL_PARAMETER Один из указателей равен NULL
  • Передан NULL вместо указателя на буфер
  • Решение: Убедитесь, что все три указателя (pFirmwareVersion, pDllVersion, pApiVersion) указывают на выделенные буферы размером минимум 80 байт

Примеры

Пример на C/C++

#include "j2534_dll.hpp"

// DeviceID получен ранее от 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);
    // Обработка ошибки
} else {
    printf("Версия прошивки: %s\n", pFirmwareVersion);
    printf("Версия DLL: %s\n", pDllVersion);
    printf("Версия API: %s\n", pApiVersion);
}

Пример на Kotlin (Android)

// deviceID получен ранее от ptOpen
val result = j2534.ptReadVersion(deviceID)
if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Версия прошивки: ${result.firmwareVersion}")
    Log.i("J2534", "Версия DLL: ${result.dllVersion}")
    Log.i("J2534", "Версия API: ${result.apiVersion}")
} else {
    Log.e("J2534", "Ошибка чтения версий: ${result.status}")
}

Пример на Python

# device_id получен ранее от 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"Версия прошивки: {firmware_ver.value.decode()}")
    print(f"Версия DLL: {dll_ver.value.decode()}")
    print(f"Версия API: {api_ver.value.decode()}")
else:
    print(f"Ошибка чтения версий: {ret}")

Пример на C#

// deviceId получен ранее от 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($"Версия прошивки: {firmwareVersion}");
    Console.WriteLine($"Версия DLL: {dllVersion}");
    Console.WriteLine($"Версия API: {apiVersion}");
} else {
    Console.WriteLine($"Ошибка чтения версий: {ret}");
}