Quantex GmbH
Votre région : Europe

PassThruSetProgrammingVoltage v4.04 v5.0

Réglage de la tension de programmation

Dernière modification :

Description

Définit la tension de programmation sur le contact indiqué du connecteur J1962 (OBD-II). Utilisée pour la programmation des ECU qui nécessitent l'application d'une tension élevée sur une broche déterminée pendant la procédure de reprogrammation.

long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
Important : La fonction n'est pas prise en charge par l'adaptateur ScanDoc. L'appel renvoie toujours ERR_NOT_SUPPORTED.

Paramètres

Codes d'erreur renvoyés

Code Description Causes possibles et solutions
STATUS_NOERROR La fonction s'est exécutée correctement
ERR_DEVICE_NOT_CONNECTED Aucune connexion avec l'adaptateur
  • L'adaptateur est éteint ou hors de portée
  • Solution : vérifiez l'alimentation de l'adaptateur et la connexion réseau/BLE
ERR_NOT_SUPPORTED La fonction n'est pas prise en charge
  • L'adaptateur ScanDoc ne prend pas en charge la sortie de programmation
  • Solution : utilisez un adaptateur avec prise en charge matérielle de la tension de programmation
ERR_INVALID_DEVICE_ID Identifiant de dispositif non valide
  • DeviceID n'a pas été obtenu via PassThruOpen ou le dispositif est fermé
  • Solution : assurez-vous que PassThruOpen s'est exécuté correctement et que le dispositif n'est pas fermé
ERR_PIN_INVALID Numéro de broche non admis
  • Un numéro de contact non pris en charge a été indiqué ou la broche est déjà utilisée
  • Solution : utilisez des numéros de broche admis (0, 6, 11-15)
ERR_FAILED Erreur indéterminée
  • Erreur interne de la bibliothèque ou de l'adaptateur
  • Solution : appelez PassThruGetLastError() pour obtenir la description

Exemples

C/C++

#include "j2534_dll.hpp"

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

// Définir 12V sur la broche 15
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
    printf("Tension de programmation définie : 12V sur la broche 15\n");
}
else if (ret == ERR_NOT_SUPPORTED)
{
    printf("L'adaptateur ne prend pas en charge la tension de programmation\n");
}
else
{
    char error[256];
    PassThruGetLastError(error);
    printf("Erreur : %s\n", error);
}

// Désactiver la tension de programmation
ret = PassThruSetProgrammingVoltage(DeviceID, 15, VOLTAGE_OFF);

Kotlin (Android)

// deviceID obtenu précédemment de ptOpen
val result = j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = 12000u)
when (result.status) {
    STATUS_NOERROR -> Log.i("J2534", "Tension de programmation définie")
    ERR_NOT_SUPPORTED -> Log.w("J2534", "La fonction n'est pas prise en charge par l'adaptateur")
    else -> Log.e("J2534", "Erreur : ${result.errorDescription}")
}

// Désactiver la tension
j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = VOLTAGE_OFF)

Python

from ctypes import *

VOLTAGE_OFF = 0xFFFFFFFF
SHORT_TO_GROUND = 0xFFFFFFFE

# Définir 12V sur la broche 15
ret = j2534.PassThruSetProgrammingVoltage(device_id, 15, 12000)
if ret == 0:  # STATUS_NOERROR
    print("Tension de programmation définie : 12V")
elif ret == 0x01:  # ERR_NOT_SUPPORTED
    print("L'adaptateur ne prend pas en charge la tension de programmation")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Erreur : {error.value.decode()}")

# Désactiver la tension
j2534.PassThruSetProgrammingVoltage(device_id, 15, VOLTAGE_OFF)

C#

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

// Définir 12V sur la broche 15
int ret = J2534.PassThruSetProgrammingVoltage(deviceId, 15, 12000);
if (ret == 0)
{
    Console.WriteLine("Tension de programmation définie : 12V");
}
else if (ret == 0x01) // ERR_NOT_SUPPORTED
{
    Console.WriteLine("L'adaptateur ne prend pas en charge la tension de programmation");
}
else
{
    var error = new StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Erreur : {error}");
}

// Désactiver la tension
J2534.PassThruSetProgrammingVoltage(deviceId, 15, VOLTAGE_OFF);