Quantex GmbH
您的地区:欧洲

PassThruSetProgrammingVoltage v4.04 v5.0

设置编程电压

最后修改:

说明

在指定的 J1962(OBD-II)接口引脚上设置编程电压。用于对那些在重新编程过程中需要向特定引脚施加较高电压的 ECU 进行编程。

long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
重要:ScanDoc 适配器不支持此函数。调用始终返回 ERR_NOT_SUPPORTED

参数

返回的错误代码

代码 说明 可能的原因及解决方法
STATUS_NOERROR 函数执行成功
ERR_DEVICE_NOT_CONNECTED 未与适配器建立连接
  • 适配器已关闭或不在可用范围内
  • 解决方法:检查适配器电源以及网络/BLE 连接
ERR_NOT_SUPPORTED 不支持该函数
  • ScanDoc 适配器不支持编程电压输出
  • 解决方法:使用硬件支持编程电压的适配器
ERR_INVALID_DEVICE_ID 无效的设备标识符
  • DeviceID 未通过 PassThruOpen 获取,或设备已关闭
  • 解决方法:确认 PassThruOpen 已成功执行且设备未关闭
ERR_PIN_INVALID 引脚编号无效
  • 指定了不受支持的引脚编号,或该引脚已被占用
  • 解决方法:使用允许的引脚编号(0、6、11-15)
ERR_FAILED 未定义的错误
  • 库或适配器的内部错误
  • 解决方法:调用 PassThruGetLastError() 获取详细说明

示例

C/C++

#include "j2534_dll.hpp"

unsigned long DeviceID;  // 从 PassThruOpen 获取
long ret;

// 在引脚 15 上设置 12V
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
    printf("编程电压已设置:引脚 15 上为 12V\n");
}
else if (ret == ERR_NOT_SUPPORTED)
{
    printf("适配器不支持编程电压\n");
}
else
{
    char error[256];
    PassThruGetLastError(error);
    printf("错误:%s\n", error);
}

// 关闭编程电压
ret = PassThruSetProgrammingVoltage(DeviceID, 15, VOLTAGE_OFF);

Kotlin (Android)

// deviceID 此前已从 ptOpen 获取
val result = j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = 12000u)
when (result.status) {
    STATUS_NOERROR -> Log.i("J2534", "编程电压已设置")
    ERR_NOT_SUPPORTED -> Log.w("J2534", "适配器不支持该函数")
    else -> Log.e("J2534", "错误:${result.errorDescription}")
}

// 关闭电压
j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = VOLTAGE_OFF)

Python

from ctypes import *

VOLTAGE_OFF = 0xFFFFFFFF
SHORT_TO_GROUND = 0xFFFFFFFE

# 在引脚 15 上设置 12V
ret = j2534.PassThruSetProgrammingVoltage(device_id, 15, 12000)
if ret == 0:  # STATUS_NOERROR
    print("编程电压已设置:12V")
elif ret == 0x01:  # ERR_NOT_SUPPORTED
    print("适配器不支持编程电压")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"错误:{error.value.decode()}")

# 关闭电压
j2534.PassThruSetProgrammingVoltage(device_id, 15, VOLTAGE_OFF)

C#

const uint VOLTAGE_OFF = 0xFFFFFFFF;
const uint SHORT_TO_GROUND = 0xFFFFFFFE;

// 在引脚 15 上设置 12V
int ret = J2534.PassThruSetProgrammingVoltage(deviceId, 15, 12000);
if (ret == 0)
{
    Console.WriteLine("编程电压已设置:12V");
}
else if (ret == 0x01) // ERR_NOT_SUPPORTED
{
    Console.WriteLine("适配器不支持编程电压");
}
else
{
    var error = new StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"错误:{error}");
}

// 关闭电压
J2534.PassThruSetProgrammingVoltage(deviceId, 15, VOLTAGE_OFF);