Quantex GmbH
您的地区:欧洲

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 返回
  • 解决方法:请确保使用由 PassThruOpen 函数返回的 DeviceID
  • 设备已通过 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}");
}