Quantex GmbH
Votre région : Europe

GET_CONFIG / SET_CONFIG v4.04 v5.0

Paramètres des protocoles

Dernière modification :

GET_CONFIG — Lecture des paramètres du protocole

Renvoie les valeurs actuelles des paramètres du protocole pour le canal indiqué. Les paramètres peuvent être définis par défaut ou avoir été modifiés précédemment via SET_CONFIG.

IoctlID 0x01
pInput SCONFIG_LIST* — liste des paramètres demandés
pOutput NULL (le résultat est écrit dans pInput)

SET_CONFIG — Écriture des paramètres du protocole

Définit les valeurs des paramètres du protocole pour le canal indiqué. Les paramètres sont appliqués immédiatement et affectent l'échange de données ultérieur.

IoctlID 0x02
pInput SCONFIG_LIST* — liste des paramètres à définir
pOutput NULL

Structures de données

typedef struct {
    unsigned long Parameter;  // Identifiant du paramètre
    unsigned long Value;      // Valeur du paramètre
} SCONFIG;

typedef struct {
    unsigned long NumOfParams;  // Nombre de paramètres dans la liste
    SCONFIG *ConfigPtr;         // Pointeur vers le tableau SCONFIG
} SCONFIG_LIST;

Codes d'erreur retourné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 et la connexion
ERR_INVALID_CHANNEL_ID Identifiant de canal non valide
  • Le ChannelID n'a pas été obtenu via PassThruConnect
  • Solution : exécutez PassThruConnect
ERR_NULL_PARAMETER NULL a été passé au lieu d'un pointeur
  • pInput est égal à NULL
  • Solution : passez un pointeur vers SCONFIG_LIST
ERR_NOT_SUPPORTED Le paramètre n'est pas pris en charge
  • Le paramètre n'est pas valide pour ce protocole
  • Solution : vérifiez la compatibilité du paramètre avec le protocole
ERR_INVALID_IOCTL_VALUE Valeur de paramètre non autorisée
  • La valeur est en dehors de la plage autorisée
  • Solution : vérifiez les valeurs autorisées du paramètre
ERR_FAILED Erreur indéfinie
  • Erreur interne
  • Solution : appelez PassThruGetLastError()

Paramètres des protocoles

Paramètres communs (tous les protocoles)

Paramètre Valeur Description Par défaut
LOOPBACK 0x03 Mode loopback : 0 — désactivé, 1 — activé 0
Consultez la liste complète des paramètres communs dans la norme SAE J2534-1.

Paramètres K-Line (ISO 9141 / ISO 14230)

Les paramètres de temps sont indiqués en millisecondes.

Paramètre Valeur Description Par défaut
P1_MAX 0x07 Temps maximal entre octets depuis l'ECU (ms) 20
P3_MIN 0x0A Temps minimal entre la fin de la réponse et une nouvelle requête (ms) 55
P4_MIN 0x0C Temps minimal entre octets depuis le testeur (ms) 5
Consultez la liste complète des paramètres K-Line dans la norme SAE J2534-1.

Paramètres CAN

Paramètre Valeur Description Par défaut
BIT_SAMPLE_POINT 0x17 Point d'échantillonnage du bit en % (60-90) 80
SYNC_JUMP_WIDTH 0x18 Largeur du saut de synchronisation en % (1-25) 15
HS_CAN_TERMINATIONJ2534-2 0x805E Terminaison CAN : 0 — désactivée, 3 — activée 0

Paramètres ISO 15765 (CAN UDS)

Paramètre Valeur Description Par défaut
ISO15765_BS 0x1E Block Size (BS) pour la réception de messages segmentés 0 (sans limite)
ISO15765_STMIN 0x1F STmin pour la réception — temps minimal entre CF (ms) 0
N_CR_MAX v5.0 0x805F Temps maximal d'attente du Consecutive Frame (ms) 1000
CAN_MIXED_FORMAT J2534-2 0x8000 Format mixte (voir plus) 0
Consultez la liste complète des paramètres ISO 15765 dans la norme SAE J2534-1.

CAN_MIXED_FORMAT — Format mixte J2534-2

Le paramètre CAN_MIXED_FORMAT s'applique uniquement aux canaux ISO 15765. Il permet de recevoir et de transmettre aussi bien des messages formatés ISO 15765 que des trames CAN non formatées sur un même canal.

Valeur Constante Description
0 CAN_MIXED_FORMAT_OFF Tous les messages sont traités comme ISO 15765 (par défaut)
1 CAN_MIXED_FORMAT_ON Les messages sont traités comme ISO 15765 ou trames CAN non formatées
2 CAN_MIXED_FORMAT_ALL_FRAMES Les messages sont traités comme ISO 15765, trames CAN non formatées ou les deux types
Important : Lors de la modification de ce paramètre :
Lors de l'utilisation du format mixte :

Paramètres CAN FD J2534-2

Paramètre Valeur Description Par défaut
FD_CAN_DATA_PHASE_RATE 0x805C Débit de transmission des données dans la phase de données de CAN FD (bit/s) 0 (non défini)
Consultez la liste complète des paramètres CAN FD dans la norme SAE J2534-2 rev.2020-12, page 87, tableau 90.

Paramètres SW-CAN (Single-Wire CAN)

Paramètre Valeur Description Par défaut
SW_CAN_HS_DATA_RATE 0x8010 Débit du mode High-Speed (bit/s) 83333
Consultez la liste complète des paramètres SW-CAN dans la norme SAE J2534-2 rev.2020-12, page 29, tableau 9.

J1962_PINS — Commutation des contacts OBD-II

Le paramètre J1962_PINS (0x8001) permet de connecter les lignes de signal à différents contacts du connecteur OBD-II. La valeur est indiquée sous forme de nombre 16 bits : l'octet de poids fort — Primary Pin (PP), l'octet de poids faible — Secondary Pin (SS).

Le Primary Pin est utilisé pour K-Line, CAN-H, J1850+. Le Secondary Pin — pour L-Line, CAN-L, J1850-.

Compact

Schéma de commutation J1962 — Compact
Constante Valeur Contact
PP_1 / SS_1 0x01 Pin 1
PP_2 / SS_2 0x02 Pin 2
PP_3 / SS_3 0x03 Pin 3
PP_6 / SS_6 0x06 Pin 6 (CAN-H)
PP_7 / SS_7 0x07 Pin 7 (K-Line)
PP_11 / SS_11 0x0B Pin 11
PP_12 / SS_12 0x0C Pin 12
PP_13 / SS_13 0x0D Pin 13
PP_14 / SS_14 0x0E Pin 14 (CAN-L)
PP_15 / SS_15 0x0F Pin 15 (L-Line)

Paramètres TP 2.0 (VAG) J2534-2

Le protocole TP 2.0 est utilisé dans les véhicules VAG (Volkswagen, Audi, Skoda, Seat) pour le diagnostic.

Pour TP 2.0, les paramètres DATA_RATE, LOOPBACK, BIT_SAMPLE_POINT, SYNC_JUMP_WIDTH et J1962_PINS sont également pris en charge. Valeurs par défaut : LOOPBACK = 0, BIT_SAMPLE_POINT = 80%, SYNC_JUMP_WIDTH = 15%.
Paramètre Valeur Description Par défaut
TP2_0_T_BR_INT 0x8044 Broadcast interval — intervalle entre les 5 messages d'une même transmission broadcast (ms) 20
TP2_0_T_E 0x8045 Temps maximal d'attente de Channel Acknowledge ou Connection Acknowledge (ms) 100
TP2_0_MNTC 0x8046 Nombre de tentatives pour les messages de gestion de la connexion 10
Consultez la liste complète des paramètres TP 2.0 dans la norme SAE J2534-2 rev.2020-12, page 78, tableau 77.

Paramètres UART Echo Byte J2534-2

Le protocole UART Echo Byte est utilisé pour le diagnostic de véhicules anciens (SAE J2809, SAE J2818). Tous les paramètres de temps sont indiqués en millisecondes.

Paramètre Valeur Description SAE J2809 SAE J2818
UEB_T0_MIN 0x8028 Temps minimal d'inactivité avant l'envoi de l'octet d'adresse t0 T_R0
UEB_T1_MAX 0x8029 Temps maximal entre la stimulation et le début de l'octet de synchronisation t1 t_r1
UEB_T2_MAX 0x802A Temps maximal entre l'octet de synchronisation et KeyByte 1 t2 t_r2
Consultez la liste complète des paramètres UART Echo Byte dans la norme SAE J2534-2 rev.2020-12, page 46, tableau 36.

Exemples

GET_CONFIG — lecture des paramètres

Exemple en C/C++

#include "j2534_dll.hpp"

unsigned long ChannelID;  // Obtenu de PassThruConnect
SCONFIG Config[2];
SCONFIG_LIST ConfigList;
long ret;

// On demande DATA_RATE et ISO15765_STMIN
Config[0].Parameter = DATA_RATE;
Config[0].Value = 0;
Config[1].Parameter = ISO15765_STMIN;
Config[1].Value = 0;

ConfigList.NumOfParams = 2;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, GET_CONFIG, &ConfigList, NULL);
if (ret == STATUS_NOERROR)
{
    printf("DATA_RATE: %lu bps\n", Config[0].Value);
    printf("ISO15765_STMIN: %lu ms\n", Config[1].Value);
}

Exemple en Kotlin (Android)

// channelID obtenu de ptConnect
val params = listOf(
    PtConfig(parameter = DATA_RATE, value = 0u),
    PtConfig(parameter = ISO15765_STMIN, value = 0u)
)

val result = j2534.ptIoctl(channelID, GET_CONFIG, params.size, params.toByteArray())
if (result.status == STATUS_NOERROR) {
    val resultParams = result.toConfigList()
    resultParams.forEach { config ->
        Log.i("J2534", "Paramètre ${config.parameter}: ${config.value}")
    }
}

Exemple en Python

from ctypes import *

config = (SCONFIG * 2)()
config[0].Parameter = DATA_RATE
config[1].Parameter = ISO15765_STMIN

config_list = SCONFIG_LIST()
config_list.NumOfParams = 2
config_list.ConfigPtr = config

ret = j2534.PassThruIoctl(channel_id, GET_CONFIG, byref(config_list), None)
if ret == 0:
    print(f"DATA_RATE: {config[0].Value} bps")
    print(f"ISO15765_STMIN: {config[1].Value} ms")

Exemple en C#

var configs = new SCONFIG[2];
configs[0].Parameter = DATA_RATE;
configs[1].Parameter = ISO15765_STMIN;

var configList = new SCONFIG_LIST {
    NumOfParams = 2,
    ConfigPtr = configs
};

int ret = J2534.PassThruIoctl(channelId, GET_CONFIG, ref configList, IntPtr.Zero);
if (ret == 0)
{
    Console.WriteLine($"DATA_RATE: {configs[0].Value} bps");
    Console.WriteLine($"ISO15765_STMIN: {configs[1].Value} ms");
}

SET_CONFIG — définition des paramètres

Exemple en C/C++ — configuration d'ISO 15765

#include "j2534_dll.hpp"

unsigned long ChannelID;  // Obtenu de PassThruConnect pour ISO15765
SCONFIG Config[3];
SCONFIG_LIST ConfigList;
long ret;

// On définit les paramètres ISO 15765
Config[0].Parameter = ISO15765_STMIN;
Config[0].Value = 0;  // Sans délai entre CF
Config[1].Parameter = ISO15765_BS;
Config[1].Value = 0;  // Sans limite de bloc
Config[2].Parameter = ISO15765_PAD_VALUE;
Config[2].Value = 0xCC;  // Remplissage 0xCC

ConfigList.NumOfParams = 3;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, SET_CONFIG, &ConfigList, NULL);
if (ret != STATUS_NOERROR)
{
    char error[256];
    PassThruGetLastError(error);
    printf("Erreur SET_CONFIG: %s\n", error);
}

Exemple en C/C++ — configuration de J1962_PINS

#include "j2534_dll.hpp"

unsigned long ChannelID;
SCONFIG Config[1];
SCONFIG_LIST ConfigList;
long ret;

// On connecte K-Line au Pin 3, L-Line au Pin 11
Config[0].Parameter = J1962_PINS;
Config[0].Value = PP_3 | SS_11;  // 0x030B

ConfigList.NumOfParams = 1;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, SET_CONFIG, &ConfigList, NULL);
if (ret == STATUS_NOERROR)
{
    printf("K-Line connecté au Pin 3, L-Line au Pin 11\n");
}

Exemple en Kotlin (Android)

// channelID obtenu de ptConnect
val params = listOf(
    PtConfig(parameter = ISO15765_STMIN, value = 0u),
    PtConfig(parameter = ISO15765_BS, value = 0u),
    PtConfig(parameter = ISO15765_PAD_VALUE, value = 0xCCu)
)

val result = j2534.ptIoctl(channelID, SET_CONFIG, params.size, params.toByteArray())
if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Paramètres ISO 15765 définis")
} else {
    Log.e("J2534", "Erreur SET_CONFIG: ${result.status}")
}

Exemple en Python

from ctypes import *

config = (SCONFIG * 2)()
config[0].Parameter = DATA_RATE
config[0].Value = 500000  # 500 kbps
config[1].Parameter = CAN_MIXED_FORMAT
config[1].Value = 1  # Activer le format mixte

config_list = SCONFIG_LIST()
config_list.NumOfParams = 2
config_list.ConfigPtr = config

ret = j2534.PassThruIoctl(channel_id, SET_CONFIG, byref(config_list), None)
if ret == 0:
    print("Paramètres CAN définis")

Exemple en C#

var configs = new SCONFIG[2];
configs[0].Parameter = DATA_RATE;
configs[0].Value = 500000;  // 500 kbps
configs[1].Parameter = HS_CAN_TERMINATION;
configs[1].Value = 3;  // Activer la terminaison

var configList = new SCONFIG_LIST {
    NumOfParams = 2,
    ConfigPtr = configs
};

int ret = J2534.PassThruIoctl(channelId, SET_CONFIG, ref configList, IntPtr.Zero);
if (ret == 0)
{
    Console.WriteLine("Paramètres définis");
}