Возвращает текущие значения параметров протокола для указанного канала. Параметры могут быть установлены по умолчанию или изменены ранее через SET_CONFIG.
IoctlID
0x01
pInput
SCONFIG_LIST* — список запрашиваемых параметров
pOutput
NULL (результат записывается в pInput)
SET_CONFIG — Запись параметров протокола
Устанавливает значения параметров протокола для указанного канала. Параметры применяются немедленно и влияют на последующий обмен данными.
IoctlID
0x02
pInput
SCONFIG_LIST* — список параметров для установки
pOutput
NULL
Структуры данных
typedef struct {
unsigned long Parameter; // Идентификатор параметра
unsigned long Value; // Значение параметра
} SCONFIG;
typedef struct {
unsigned long NumOfParams; // Количество параметров в списке
SCONFIG *ConfigPtr; // Указатель на массив SCONFIG
} SCONFIG_LIST;
Возвращаемые коды ошибок
Код
Описание
Возможные причины и решения
STATUS_NOERROR
Функция выполнена успешно
—
ERR_DEVICE_NOT_CONNECTED
Нет соединения с адаптером
Адаптер выключен или вне зоны доступа
Решение: проверьте питание и подключение
ERR_INVALID_CHANNEL_ID
Недействительный идентификатор канала
ChannelID не был получен через PassThruConnect
Решение: выполните PassThruConnect
ERR_NULL_PARAMETER
Передан NULL вместо указателя
pInput равен NULL
Решение: передайте указатель на SCONFIG_LIST
ERR_NOT_SUPPORTED
Параметр не поддерживается
Параметр недействителен для данного протокола
Решение: проверьте совместимость параметра с протоколом
ERR_INVALID_IOCTL_VALUE
Недопустимое значение параметра
Значение выходит за допустимый диапазон
Решение: проверьте допустимые значения параметра
ERR_FAILED
Неопределённая ошибка
Внутренняя ошибка
Решение: вызовите PassThruGetLastError()
Параметры протоколов
Общие параметры (все протоколы)
Параметр
Значение
Описание
По умолчанию
LOOPBACK
0x03
Режим loopback: 0 — выкл, 1 — вкл
0
Полный список общих параметров см. в стандарте SAE J2534-1.
Параметры K-Line (ISO 9141 / ISO 14230)
Временные параметры задаются в миллисекундах.
Параметр
Значение
Описание
По умолчанию
P1_MAX
0x07
Максимальное межбайтовое время от ЭБУ (мс)
20
P3_MIN
0x0A
Минимальное время между концом ответа и новым запросом (мс)
55
P4_MIN
0x0C
Минимальное межбайтовое время от тестера (мс)
5
Полный список параметров K-Line см. в стандарте SAE J2534-1.
Параметры CAN
Параметр
Значение
Описание
По умолчанию
BIT_SAMPLE_POINT
0x17
Точка выборки бита в % (60-90)
80
SYNC_JUMP_WIDTH
0x18
Ширина скачка синхронизации в % (1-25)
15
HS_CAN_TERMINATIONJ2534-2
0x805E
Терминация CAN: 0 — выкл, 3 — вкл
0
Параметры ISO 15765 (CAN UDS)
Параметр
Значение
Описание
По умолчанию
ISO15765_BS
0x1E
Block Size (BS) для приёма сегментированных сообщений
0 (без ограничений)
ISO15765_STMIN
0x1F
STmin для приёма — минимальное время между CF (мс)
0
N_CR_MAX v5.0
0x805F
Максимальное время ожидания Consecutive Frame (мс)
Полный список параметров ISO 15765 см. в стандарте SAE J2534-1.
CAN_MIXED_FORMAT — Смешанный формат J2534-2
Параметр CAN_MIXED_FORMAT применяется только к каналам ISO 15765. Позволяет принимать и передавать как форматированные сообщения ISO 15765, так и неформатированные CAN-кадры на одном канале.
Значение
Константа
Описание
0
CAN_MIXED_FORMAT_OFF
Все сообщения обрабатываются как ISO 15765 (по умолчанию)
1
CAN_MIXED_FORMAT_ON
Сообщения обрабатываются как ISO 15765 или неформатированные CAN-кадры
2
CAN_MIXED_FORMAT_ALL_FRAMES
Сообщения обрабатываются как ISO 15765, неформатированные CAN-кадры или оба типа
Важно: При изменении этого параметра:
Очереди приёма и передачи очищаются
Все PASS_FILTER и BLOCK_FILTER удаляются
Периодические сообщения с ProtocolID неформатированного CAN удаляются
При использовании смешанного формата:
FLOW_CONTROL_FILTER — применяется к сообщениям ISO 15765
PASS_FILTER / BLOCK_FILTER — применяется к неформатированным CAN-кадрам
Параметры CAN FD J2534-2
Параметр
Значение
Описание
По умолчанию
FD_CAN_DATA_PHASE_RATE
0x805C
Скорость передачи данных в фазе данных CAN FD (бит/с)
0 (не задано)
Полный список параметров CAN FD см. в стандарте SAE J2534-2 rev.2020-12, страница 87, таблица 90.
Параметры SW-CAN (Single-Wire CAN)
Параметр
Значение
Описание
По умолчанию
SW_CAN_HS_DATA_RATE
0x8010
Скорость High-Speed режима (бит/с)
83333
Полный список параметров SW-CAN см. в стандарте SAE J2534-2 rev.2020-12, страница 29, таблица 9.
J1962_PINS — Коммутация контактов OBD-II
Параметр J1962_PINS (0x8001) позволяет подключать сигнальные линии к различным контактам разъёма OBD-II. Значение задаётся как 16-битное число: старший байт — Primary Pin (PP), младший байт — Secondary Pin (SS).
Primary Pin используется для K-Line, CAN-H, J1850+. Secondary Pin — для L-Line, CAN-L, J1850-.
ScanDoc Compact
Константа
Значение
Контакт
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)
Параметры TP 2.0 (VAG) J2534-2
Протокол TP 2.0 используется в автомобилях VAG (Volkswagen, Audi, Skoda, Seat) для диагностики.
Для TP 2.0 также поддерживаются параметры DATA_RATE, LOOPBACK, BIT_SAMPLE_POINT, SYNC_JUMP_WIDTH и J1962_PINS. Значения по умолчанию: LOOPBACK = 0, BIT_SAMPLE_POINT = 80%, SYNC_JUMP_WIDTH = 15%.
Параметр
Значение
Описание
По умолчанию
TP2_0_T_BR_INT
0x8044
Broadcast interval — интервал между 5 сообщениями одной broadcast-передачи (мс)
20
TP2_0_T_E
0x8045
Максимальное время ожидания Channel Acknowledge или Connection Acknowledge (мс)
100
TP2_0_MNTC
0x8046
Количество повторных попыток для сообщений управления соединением
10
Полный список параметров TP 2.0 см. в стандарте SAE J2534-2 rev.2020-12, страница 78, таблица 77.
Параметры UART Echo Byte J2534-2
Протокол UART Echo Byte используется для диагностики старых автомобилей (SAE J2809, SAE J2818). Все временные параметры задаются в миллисекундах.
Параметр
Значение
Описание
SAE J2809
SAE J2818
UEB_T0_MIN
0x8028
Минимальное время простоя перед передачей адресного байта
t0
T_R0
UEB_T1_MAX
0x8029
Максимальное время между стимуляцией и началом синхро-байта
t1
t_r1
UEB_T2_MAX
0x802A
Максимальное время между синхро-байтом и KeyByte 1
t2
t_r2
Полный список параметров UART Echo Byte см. в стандарте SAE J2534-2 rev.2020-12, страница 46, таблица 36.
Примеры
GET_CONFIG — чтение параметров
Пример на C/C++
#include "j2534_dll.hpp"
unsigned long ChannelID; // Получен от PassThruConnect
SCONFIG Config[2];
SCONFIG_LIST ConfigList;
long ret;
// Запрашиваем DATA_RATE и 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);
}
Пример на Kotlin (Android)
// channelID получен от 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", "Параметр ${config.parameter}: ${config.value}")
}
}
Пример на 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")
Пример на 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 — установка параметров
Пример на C/C++ — настройка ISO 15765
#include "j2534_dll.hpp"
unsigned long ChannelID; // Получен от PassThruConnect для ISO15765
SCONFIG Config[3];
SCONFIG_LIST ConfigList;
long ret;
// Устанавливаем параметры ISO 15765
Config[0].Parameter = ISO15765_STMIN;
Config[0].Value = 0; // Без задержки между CF
Config[1].Parameter = ISO15765_BS;
Config[1].Value = 0; // Без ограничения блока
Config[2].Parameter = ISO15765_PAD_VALUE;
Config[2].Value = 0xCC; // Заполнение 0xCC
ConfigList.NumOfParams = 3;
ConfigList.ConfigPtr = Config;
ret = PassThruIoctl(ChannelID, SET_CONFIG, &ConfigList, NULL);
if (ret != STATUS_NOERROR)
{
char error[256];
PassThruGetLastError(error);
printf("Ошибка SET_CONFIG: %s\n", error);
}
Пример на C/C++ — настройка J1962_PINS
#include "j2534_dll.hpp"
unsigned long ChannelID;
SCONFIG Config[1];
SCONFIG_LIST ConfigList;
long ret;
// Подключаем K-Line к Pin 3, L-Line к 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 подключён к Pin 3, L-Line к Pin 11\n");
}
Пример на Kotlin (Android)
// channelID получен от 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", "Параметры ISO 15765 установлены")
} else {
Log.e("J2534", "Ошибка SET_CONFIG: ${result.status}")
}
Пример на 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 # Включить смешанный формат
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("Параметры CAN установлены")
Пример на 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; // Включить терминацию
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("Параметры установлены");
}