Установка напряжения программирования
Последнее изменение:
Устанавливает напряжение программирования на указанном контакте разъёма J1962 (OBD-II). Используется для программирования ЭБУ, требующих подачи повышенного напряжения на определённый пин во время процедуры перепрограммирования.
long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
| Код | Описание | Возможные причины и решения |
|---|---|---|
| STATUS_NOERROR | Функция выполнена успешно | — |
| ERR_DEVICE_NOT_CONNECTED | Нет соединения с адаптером |
|
| ERR_NOT_SUPPORTED | Функция не поддерживается |
|
| ERR_INVALID_DEVICE_ID | Недействительный идентификатор устройства |
|
| ERR_PIN_INVALID | Недопустимый номер пина |
|
| ERR_FAILED | Неопределённая ошибка |
|
#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);
// 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)
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)
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);