Quantex GmbH
Tu región: Europa

PassThruSetProgrammingVoltage v4.04 v5.0

Ajuste del voltaje de programación

Última modificación:

Descripción

Establece el voltaje de programación en el contacto indicado del conector J1962 (OBD-II). Se utiliza para la programación de ECU que requieren la aplicación de un voltaje elevado en un pin determinado durante el procedimiento de reprogramación.

long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
Importante: La función no es compatible con el adaptador ScanDoc. La llamada siempre devuelve ERR_NOT_SUPPORTED.

Parámetros

Códigos de error devueltos

Código Descripción Posibles causas y soluciones
STATUS_NOERROR La función se ejecutó correctamente
ERR_DEVICE_NOT_CONNECTED No hay conexión con el adaptador
  • El adaptador está apagado o fuera de alcance
  • Solución: compruebe la alimentación del adaptador y la conexión de red/BLE
ERR_NOT_SUPPORTED La función no es compatible
  • El adaptador ScanDoc no admite la salida de programación
  • Solución: utilice un adaptador con soporte de hardware para el voltaje de programación
ERR_INVALID_DEVICE_ID Identificador de dispositivo no válido
  • DeviceID no se obtuvo mediante PassThruOpen o el dispositivo está cerrado
  • Solución: asegúrese de que PassThruOpen se ejecutó correctamente y de que el dispositivo no esté cerrado
ERR_PIN_INVALID Número de pin no admisible
  • Se indicó un número de contacto no admitido o el pin ya está en uso
  • Solución: utilice números de pin admisibles (0, 6, 11-15)
ERR_FAILED Error indeterminado
  • Error interno de la biblioteca o del adaptador
  • Solución: llame a PassThruGetLastError() para obtener la descripción

Ejemplos

C/C++

#include "j2534_dll.hpp"

unsigned long DeviceID;  // Obtenido de PassThruOpen
long ret;

// Establecer 12V en el pin 15
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
    printf("Voltaje de programación establecido: 12V en el pin 15\n");
}
else if (ret == ERR_NOT_SUPPORTED)
{
    printf("El adaptador no admite el voltaje de programación\n");
}
else
{
    char error[256];
    PassThruGetLastError(error);
    printf("Error: %s\n", error);
}

// Desactivar el voltaje de programación
ret = PassThruSetProgrammingVoltage(DeviceID, 15, VOLTAGE_OFF);

Kotlin (Android)

// deviceID obtenido previamente de ptOpen
val result = j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = 12000u)
when (result.status) {
    STATUS_NOERROR -> Log.i("J2534", "Voltaje de programación establecido")
    ERR_NOT_SUPPORTED -> Log.w("J2534", "La función no es compatible con el adaptador")
    else -> Log.e("J2534", "Error: ${result.errorDescription}")
}

// Desactivar el voltaje
j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = VOLTAGE_OFF)

Python

from ctypes import *

VOLTAGE_OFF = 0xFFFFFFFF
SHORT_TO_GROUND = 0xFFFFFFFE

# Establecer 12V en el pin 15
ret = j2534.PassThruSetProgrammingVoltage(device_id, 15, 12000)
if ret == 0:  # STATUS_NOERROR
    print("Voltaje de programación establecido: 12V")
elif ret == 0x01:  # ERR_NOT_SUPPORTED
    print("El adaptador no admite el voltaje de programación")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Error: {error.value.decode()}")

# Desactivar el voltaje
j2534.PassThruSetProgrammingVoltage(device_id, 15, VOLTAGE_OFF)

C#

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

// Establecer 12V en el pin 15
int ret = J2534.PassThruSetProgrammingVoltage(deviceId, 15, 12000);
if (ret == 0)
{
    Console.WriteLine("Voltaje de programación establecido: 12V");
}
else if (ret == 0x01) // ERR_NOT_SUPPORTED
{
    Console.WriteLine("El adaptador no admite el voltaje de programación");
}
else
{
    var error = new StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Error: {error}");
}

// Desactivar el voltaje
J2534.PassThruSetProgrammingVoltage(deviceId, 15, VOLTAGE_OFF);