Создание кодировок

Car Scanner позволяет создавать собственные кодировки, которые будут доступны в меню «Кодирование и сервис».
Функция является экспериментальной и в настоящий момент совместима только с протоколом CAN ISO 15765-4 11 bit.

Активация функции:
1) Настройки — Информация — Экспериментальные возможности: включить
2) Выйти из настроек на главный экран программы
3) Настройки — Custom codings

Создание кодировок:
Настройки — Custom codings — кнопка «+» — будет создан пустой шаблон для кодировки.

Шаблон кодировки состоит из следующих блоков:
1. Блок Description — описание, которое включает:
Group — Группа, к которой будет отнесена кодировка
Name — Название, отображаемое в списке кодировок и на странице кодировки
Description — Дополнительное описание, отображаемое в списке кодировок и на странице кодировки
Inner description — Дополнительное описание, отображаемое только на странице кодировки
Comment — Поле для заметок
1.1. Подблок Translations: позволяет задавать значения Name, Description и InnerDescription для других языков. Язык указывается в формате 2-letter ISO строчными буквами (например, ru, en, de, fr, de).

2. Блок Address and unit: в нем определяются запросы для чтения текущего значения и записи нового значения
Request header — заголовок для отправки запроса (формат, совместимый с командой AT SH ELM327, за исключением CAN 29bit: в таком случае надо указывать полный CAN ID: hhhhhhhh)
Response header — заголовок для получения ответа от ЭБУ (формат, совместимый с командой AT CRA ELM327, за исключением CAN 29bit: в таком случае надо указывать полный CAN ID: hhhhhhhh)
Extended address — дополнительный адрес CAN (формат, совместимый с командой AT CEA ELM327)
Tester address — адрес тестера при использовании дополнительного адреса CAN (формат, совместимый с командой AT TA ELM327)
Password visible — отображение поля для ввода кода доступа
Password — код доступа по умолчанию. Пока что поддерживаются пароли только для VAG UDS, при этом в Pre Write Commands необходимо добавить команду 2704
Password hint — подсказка к паролю (возможно другие варианты паролей)
Read mode and address — запрос для чтения текущего значения, включающий сервис и идентификатор (например: 2200A1, 21F5)
Write mode and address — запрос для записи текущего значения, , включающий сервис и идентификатор (например: 2E00A1, 3BF5)
ATST (hex) — Значение команды ATST, определяющей время ожидания ответа от блока адаптером ELM327. Формат hex, размер 1 байт, размерность: 1 = 4 мс.
Protocol — протокол в формате команды ATSP для ELM327. Если не заполнен, то команда не отправляется, соответственно, применяется только текущий протокол.
Open session command — запрос для открытия диагностической сессии
PreRead Commands — набор запросов для отправки после открытия диагностической сессии, но перед чтением текущего значения. Ответы на эти команды никак не анализируются (за исключением выбора VAG в качестве текущего бренда).
PreWrite Commands — набор запросов для отправки после открытия диагностической сессии, но перед записью значений. Ответы на эти команды никак не анализируются (за исключением выбора VAG в качестве текущего бренда).
PostWrite Commands — набор запросов для отправки после после отправки запроса для записи нового значения. Ответы на эти команды никак не анализируются (за исключением выбора VAG в качестве текущего бренда).
Make changes to initial data — если включено, то предполагается, что необходимо внесение изменений в данные, прочитанные из Read mode and address. Если отключено — прочитанные данные не участвуют в формировании запроса на запись данных и он формируется исключительно из значений опций или введенного значения.

3. Блок Value type определяет тип взаимодействия пользователя с кодировкой: выбор одного из заданных значений (опций) или ввод цифрового значения.
Выбор осуществляется в выпадающем списке из двух вариантов: Options и Input.

3.1. Options — этот вариант предполагает создание одной или нескольких опций.
Общий пункт для всех опций — Byte number (starting from 0): номер байта, в который вносятся изменения (см. ниже). Нумерация байтов начинается с 0.
Каждая опция содержит следующие поля:
Title — отображаемое название опции. Возможно использование константных значений RES_ENABLE и RES_DISABLE для «Активно» и «Не активно» на разных языках.
Value — значение, отправляемое в ЭБУ или изменение прочитанных данных.
Значение может быть в двух форматах:
1) HEX набор байт. Если включен пункт Make changes to initial data, этот набор байт будет записан в прочитанные данные, начиная с байта, указанного в поле Byte number. Пример: Read Mode and Address: 223344, Write Mode And Address: 2E3344 прочитаны данные 00 01 02, Value = AABB, Byte number = 1, данные будет преобразованы следующим образом: 00 01 02 -> 00 AA BB и будет отправлен запрос 2E334400AABB
Если отключен пункт Make changes to initial data, то поле Byte number игнорируется и данные, указанные в Value формируют тело запроса сразу после Write mode and address. Пример: Value = 8040, Write Mode and Address: 3B15, будет отправлен запрос 3B158040
2) Формат изменения отдельных битов. Совместимо только с включенным пунктом Make changes to initial data и предполагает изменение значений в прочитанных данных из Read mode and address. При этом нумерация байт считается всегда с нуля, поле Byte number игнорируется.
Запись всегда начинается с BIT: после чего указываются номера байтов и битов, которые необходимо включить или отключить в формате: НОМЕР_БАЙТА:НОМЕР_БИТА=ЗНАЧЕНИЕ
НОМЕР_БАЙТА — начинается с 0
НОМЕР_БИТА — число от 0 до 7
ЗНАЧЕНИЕ — 1 для включения бита, 0 для выключения бита
Пример: BIT:3:7=1 (включить бит №7 в байте №3).
Возможно изменение нескольких битов, в таком случае пары разделяются точкой с запятой («;»), при этом запись «BIT:» не повторяется.
Пример: BIT:3:7=1;16:0=0;21:5=1 (включить бит №7 в байте №3, отключить бит №0 в байте №16, включить бит №5 в байте №21)
Read only value — поле используется для сопоставления опции с текущим значение данных, когда пункт Make changes to initial data выключен и предполагает изменение в памяти программы прочитанных данных и проверку соответствия измененных данных и прочитанных данных.
Если после изменения наборы данных являются тождественными, в текущее состояние подставляется название текущей опции.
Формат записи аналогичен полю Value.
Пример №1: прочитанные данные A0 80 FF, включенной опции соответствует 80 в байте №1 прочитанных данных. Таким образом запись в ReadOnly value будет: 80, при условии Byte number = 1.
Пример №2: прочитанные данные A0 80 FF, включенной опции соответствуют 4 старших бита в байте №1, которые должны иметь значения 1000. Запись в Read only value: BIT:1:7=1;1:6=0;1:5=0;1:4=0
Поле игнорируется, если включен пункт Make changes to initial data.
3.1.1. Translations — каждая опция имеет возможность задать для ее заголовка перевод. Формат аналогичен разделу Translations блока Description.

3.2. Input — предполагает ввод пользователем цифрового значения.
Byte number — номер байта в прочитанных данных, с которого начинаются данные изменяемого значения
Data length — длина значения в байтах (от 1 до 4 байт)
Multi — множитель для преобразования значения
Offset — слагаемое к значению
Signed — значение знаковое (signed)
Reverse byte order — по умолчанию старший байт — первый слева. Если пункт включен, старший байт — первый справа.
Порядок преобразования прочитанных данных в текущий статус:
1) Преобразование набора байт к целочисленному значению с учетом пунктов Signed и Reverse byte order
2) Умножение полученного числа на множитель
3) Сложение произведения со слагаемым
Преобразование введенных пользователем данных в набор байтов производится в обратном порядке.
Пример: прочитаны данные 03E8, которые соответствуют 100 единицам.
Для этого заполняются следующие поля: Byte number=0, Data length=2, Multi=0.1, Offset=0, Signed=Off, Reverse byte order=Off.
Таким образом пользователь увидит в поле значение «100».
Если пользователь введет значение «10», то измененные данные будут выглядеть следующим образом: 0064

Пример кодировки для включения вежливых поворотников для Renault с блоком T4_VS-BCM_DDT2000 (вариант с изменением общей конфигурации блока — внесение изменений в прочитанные данные):
Request header: 745
Response header: 765
Extended address: пусто
Tester address: пусто
Read mode and address: 221001
Write mode and address: 2E1001
ATST: 96
Open session command: 10C0
Make changes to initial data = On
Byte number: 0 (не используется)
Опция №1 (включение) — Value=BIT:4:7=1 (включить бит №7 в байте №4)
Опция №2 (выключение) — Value=BIT:4:7=0 (выключить бит №7 в байте №4)
Поля Read only value не заполняются.

Пример кодировки для включения вежливых поворотников для Renault с блоком T4_VS-BCM_DDT2000 (вариант без внесения изменений в ранее прочитанные данные — для чтения и записи используются разные идентификаторы и отличаются номера байтов и битов):
Request header: 745
Response header: 765
Extended address: пусто
Tester address: пусто
Read mode and address: 215B
Write mode and address: 3B2F
ATST: 96
Open session command: 10C0
Make changes to initial data = Off
Byte number: 0 (не используется)
Опция №1 (включение) — Value=80 (будет отправлен запрос 3B2F80), Read only value=BIT:0:4=1 (проверка включен ли бит №4 в байте №0 прочитанных данных)
Опция №2 (выключение) — Value=00 (будет отправлен запрос 3B2F00), Read only value=BIT:0:4=0 (проверка выключен ли бит №4 в байте №0 прочитанных данных)