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)
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 :
Les files de réception et de transmission sont vidées
Tous les PASS_FILTER et BLOCK_FILTER sont supprimés
Les messages périodiques avec ProtocolID de CAN non formaté sont supprimés
Lors de l'utilisation du format mixte :
FLOW_CONTROL_FILTER — s'applique aux messages ISO 15765
PASS_FILTER / BLOCK_FILTER — s'applique aux trames CAN non formatées
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
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");
}