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

PassThruSetProgrammingVoltage v4.04 v5.0

Установка напряжения программирования

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

Описание

Устанавливает напряжение программирования на указанном контакте разъёма J1962 (OBD-II). Используется для программирования ЭБУ, требующих подачи повышенного напряжения на определённый пин во время процедуры перепрограммирования.

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;

// Установить 12В на пин 15
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
    printf("Напряжение программирования установлено: 12V на пин 15\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

# Установить 12В на пин 15
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;

// Установить 12В на пин 15
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);