Перейти к содержанию
Партнерские сервисы
Kузовной ремонт и запчасти на пр. Вернадского (495)-222-6064 Cервис у Пчела оригинальные запчасти кузовная станция IDS +7 495 6406454
ТрансЛаб - 20 лет опыта в ремонте АКПП и ДВС Форд. 8-(495)-136-76-16 (телефон/WhatsApp) Форд Центр "ПИЛОТ" на Волгоградском проспекте. тел. (495) 785-06-65

Дружим китайские Android магнитолы с Convers+


Рекомендуемые сообщения

26.04.2019 в 17:45, yra99 сказал:

Также стала интересна данная тема. Немного опишу проблемы с которыми столкнулся, возможно кому пригодится.
Начал с подключения arduino и canshield и попыток чтения чего либо. Каншилд у меня с кварцем на 8MHz.
Нашел в инете 2 библиотеки CAN_BUS_Shield (от Seeed-Studio) и arduino-mcp2515 (от autowp).
C использованием второй реализована библиотека arduino-canhacker (от autowp), с которой можно использовать программу CanHacker.


1) CAN_BUS_Shield заработала сразу. Поскольку кварц 8MHz, нужно только поменять одну строчку в примерах. 
while (CAN_OK != CAN.begin(CAN_500KBPS))  заменить на while (CAN_OK != CAN.begin(CAN_500KBPS, MCP_8MHz)) 
Скорость устанавливаем зависимо от кан шины.
Использовал ее только чтоб понять прилетают ли вобще сообщения. 

2) arduino-mcp2515 и arduino-canhacker. С этими библиотеками было не все так просто.
Аналогично как в предудщей можно указать какой кварц использовать 
mcp2515.setBitrate(CAN_125KBPS) заменить на mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ). 
Обратите вниманиена буквку Z (MCP_8MHZ), тут она большая, в предыдущей библиотеке маленькая.
Но примеры не стартовали на каншилде и arduino Uno/Due. Гугл ничего не подсказал, пришлось ковырять библиотеку.
Удалось запустить примеры, закоментировав 2 строки в файле mcp2515.cpp. 
MCP2515::MCP2515(const uint8_t _CS)
{
//SPI.begin(); //<==закоментировать
SPICS = _CS;
pinMode(SPICS, OUTPUT);
//endSPI(); //<==закоментировать
}

Примеры заработали на Uno и Due. Написал разработчикам, возможно исправят у себя.
Также после этого заработала программа CanHacker, поскольку она использует mcp2515.cpp.


Для подключения через CanHacker использовал пример usb_cdc из библиотеки arduino-canhacker.
В нём также нужно изменить кварц. 

canHacker = new CanHacker(&Serial, NULL, SPI_CS_PIN);
canHacker -> setClock(MCP_8MHZ);   // <= Добавить эту строку
lineReader = new CanHackerLineReader(canHacker);


После этого начал разбиратся с распиновкой Convers+ и запуском его на столе.
Нашел в EtisOffliner схему, но там не были указаны пины для Can шин. Определял их методом тыка.
Вот что получилось:
32 pin — 12V
6 pin GND

Can шина на магнитолу
MM-can 125kbit/s.
18 pin - low
19 pin - high

MS-can 125kbit/s
22 pin - low
23 pin - high

  Показать содержимое


Не буду описывать все подробности, сделать нужно следующее:
1) Для подключения на столе нужно подать питание на 32 pin — 12V, 6 pin GND. Можно считать конверс включенным.
2) Далее необходимо подключить CanHacker к кан шине Convers на скорости 125кkbit/sec!!. 22 pin - Low, 23 pin - High.
3) Чтобы конверс перешел в "рабочий" режим, нужно эмулировать включения зажигания. Для этото отправляем команду:
ID 048
DLC 8
DATA 69 04 64 4B 26 02 E0 20
Period(ms) 60

Конверс и магнитола общаются между собой также на скорости 125kbit/sec, но на конверсе нужно подключить другие контакты - 22 pin - low, 23 pin - high.

Буду изучать дальше.
Может кто в курсе, возможно ли на обычную карту памяти записать карты для Blaupunkt FX?
Нужны чтоб отловить команды навигации.

Приветствую!

Подключаюсь (arduino nano + can-bus  mcp2515) к мондео 4 по MS-CAN на скорости 125kbit/s. Программа CanHacker так ничего и не показывает, хоть и подключается успешно.

Но в мониторе СОМ-порта через ардуино данные идут.

Внёс все изменения в файлы и в библиотеки по вашей инструкции, после этого CanHacker выдает 7-10 строчек единоразово после подключения и на этом всё. Далее нажимаю различные кнопки в автомобиле, данные в таблице никак не изменяются. Приложу скрин.

Подскажите, пожалуйста, в какую сторону копать? 

IMG_20191108_073155.jpg

Ссылка на комментарий
Поделиться на другие сайты


У меня так было. Нано слабовата для этого. Запустил на про мега и проблем никаких не было.

Ссылка на комментарий
Поделиться на другие сайты

08.11.2019 в 07:46, beeline09 сказал:

У меня так было. Нано слабовата для этого. Запустил на про мега и проблем никаких не было.

Такой?

12.jpg

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Доброго времени суток, может чуть не в тему, сильно не пинайте. Установил китайскую магнитолу через кан бус, при выключении зажигания тухнет магнитола и зависают часы на приборке, после включения зажигания включается магнитола тоже с зависшим временем и через какое то время часы на магнитоле и приборке показывают правильное время. Не конверс. может кто что подсказать?

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Всем привет. Парни раз вы так глубоко погрузились в тему. Подскажите

1. Сонька и форд 6000 устанавливается как на машины с кнопкой стартстоп,  так и на ключевые. Как на ключевых управляется включение/выключение ГУ, аналогово по проводам АСС от ключа? А как на кнопках стартстоп, по CAN? Полагаю, что на ключевых машинах на пин 16 разъёма ГУ заведён АСС от замка заж-я, а на кнопочных на этот пин заводится уже не АСС, а зажигание. 

2. Какой ID и байт в нем управляет включением/выключением головного по CAN (видимо это только на кнопочных машинах).  Правильнее наверное спросить:  какой ID и байт в нем управляет фактом того, останется или нет включенным ГУ после пропадания зажигания на пине 16 разъема ГУ. (инициирование щитком по CAN продолжения работы ГУ поcле выкл заж и до момента открытия двери). Я так понимаю эта инфа идёт от конверса (а может и от обычных щитков) к ГУ и только на машинах с кнопкой стартстоп? 

У меня мондео дорест дизель акпп с кнопкой стартстоп со штатным конверсом и китайским ГУ (вроде ownice). Хочу сделать фильтр в CAN чтобы выключалось ГУ не по выключению зажигания , а по открытию водительской двери.  

Изменено пользователем Maksvv
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Всем привет! Парни огромное вам спасибо за вашу работу, желаю вам удачи и успехов... Готов предложить свою помощь, если нужна токова?

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Maximator сказал:

Всем привет! Парни огромное вам спасибо за вашу работу, желаю вам удачи и успехов... Готов предложить свою помощь, если нужна токова?

Как именно можешь помочь? На данный момент больше всего нужен подопытный Конверс на время, ну или купить по вменяемой цене, чтобы вместе скинуться на эксперименты. А так любая помощь очень нужна. Например важно понять какие коды на каких айди от разных магнитол. Уже понятно, что Сони и Блау дают как минимум разную инфу по мр3.

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, beeline09 сказал:

Как именно можешь помочь? На данный момент больше всего нужен подопытный Конверс на время, ну или купить по вменяемой цене, чтобы вместе скинуться на эксперименты. А так любая помощь очень нужна. Например важно понять какие коды на каких айди от разных магнитол. Уже понятно, что Сони и Блау дают как минимум разную инфу по мр3.

А конверт нужен рестаил или до? 

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, Maximator сказал:

А конверт нужен рестаил или до? 

Вообще без разницы. Главное, чтобы Конверс, а не обычная приборка.

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, beeline09 сказал:

Вообще без разницы. Главное, чтобы Конверс, а не обычная приборка.

Постараюсь достать или в аренду взять. 

Ссылка на комментарий
Поделиться на другие сайты

47 минут назад, Maximator сказал:

Постараюсь достать или в аренду взять. 

Было бы супер

Ссылка на комментарий
Поделиться на другие сайты

26.04.2019 в 17:45, yra99 сказал:

Также стала интересна данная тема. Немного опишу проблемы с которыми столкнулся, возможно кому пригодится.
Начал с подключения arduino и canshield и попыток чтения чего либо. Каншилд у меня с кварцем на 8MHz.
Нашел в инете 2 библиотеки CAN_BUS_Shield (от Seeed-Studio) и arduino-mcp2515 (от autowp).
C использованием второй реализована библиотека arduino-canhacker (от autowp), с которой можно использовать программу CanHacker.


1) CAN_BUS_Shield заработала сразу. Поскольку кварц 8MHz, нужно только поменять одну строчку в примерах. 
while (CAN_OK != CAN.begin(CAN_500KBPS))  заменить на while (CAN_OK != CAN.begin(CAN_500KBPS, MCP_8MHz)) 
Скорость устанавливаем зависимо от кан шины.
Использовал ее только чтоб понять прилетают ли вобще сообщения. 

2) arduino-mcp2515 и arduino-canhacker. С этими библиотеками было не все так просто.
Аналогично как в предудщей можно указать какой кварц использовать 
mcp2515.setBitrate(CAN_125KBPS) заменить на mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ). 
Обратите вниманиена буквку Z (MCP_8MHZ), тут она большая, в предыдущей библиотеке маленькая.
Но примеры не стартовали на каншилде и arduino Uno/Due. Гугл ничего не подсказал, пришлось ковырять библиотеку.
Удалось запустить примеры, закоментировав 2 строки в файле mcp2515.cpp. 
MCP2515::MCP2515(const uint8_t _CS)
{
//SPI.begin(); //<==закоментировать
SPICS = _CS;
pinMode(SPICS, OUTPUT);
//endSPI(); //<==закоментировать
}

Примеры заработали на Uno и Due. Написал разработчикам, возможно исправят у себя.
Также после этого заработала программа CanHacker, поскольку она использует mcp2515.cpp.


Для подключения через CanHacker использовал пример usb_cdc из библиотеки arduino-canhacker.
В нём также нужно изменить кварц. 

canHacker = new CanHacker(&Serial, NULL, SPI_CS_PIN);
canHacker -> setClock(MCP_8MHZ);   // <= Добавить эту строку
lineReader = new CanHackerLineReader(canHacker);


После этого начал разбиратся с распиновкой Convers+ и запуском его на столе.
Нашел в EtisOffliner схему, но там не были указаны пины для Can шин. Определял их методом тыка.
Вот что получилось:
32 pin — 12V
6 pin GND

Can шина на магнитолу
MM-can 125kbit/s.
18 pin - low
19 pin - high

MS-can 125kbit/s
22 pin - low
23 pin - high

  Показать содержимое


Не буду описывать все подробности, сделать нужно следующее:
1) Для подключения на столе нужно подать питание на 32 pin — 12V, 6 pin GND. Можно считать конверс включенным.
2) Далее необходимо подключить CanHacker к кан шине Convers на скорости 125кkbit/sec!!. 22 pin - Low, 23 pin - High.
3) Чтобы конверс перешел в "рабочий" режим, нужно эмулировать включения зажигания. Для этото отправляем команду:
ID 048
DLC 8
DATA 69 04 64 4B 26 02 E0 20
Period(ms) 60

Конверс и магнитола общаются между собой также на скорости 125kbit/sec, но на конверсе нужно подключить другие контакты - 22 pin - low, 23 pin - high.

Буду изучать дальше.
Может кто в курсе, возможно ли на обычную карту памяти записать карты для Blaupunkt FX?
Нужны чтоб отловить команды навигации.

Юра, приветствую! Вот, пока я на карантине, решил снять конверс и поиграться с ним дома. Включил, подал данные на айди 048 - все стартануло, но не могу убрать надпись "Двигатель неисправен" по нажатию на ок. Кнопки подключил к 2,27 и 30 пинам соответственно, вроде как по мануалу. Не подскажешь как у тебя удалось заставить работать кнопки?

Ссылка на комментарий
Поделиться на другие сайты

Товарищи! В связи с карантином, у меня появилось достаточно времени, чтобы снять конверс и запустить его на столе. Благодаря информации из нашей темы и с помощью опытных ребят с драйва, собрал необходимые данные и реализовал все в Android-приложении. Пока Могу отправить на приборку Громкость музыки, навигации, телефона, ТА и голосового ассистента, а так же информацию МР3 - первая и третья строка (вторая - номер трека), информацию о количестве треков и текущей позиции трека. И самое главное - запустил навигатор!!!

Лучше один раз увидеть: Смотреть

Пока только по МР3 и Навигации смог все эмулировать. Осталось радио и Блютуз. Блютуз кстати, совсем не хочется заморачиваться. Из него можно отобразить все в пункте МР3 - так же и в плане видео.

Радио - проблем нет - осталось написать код - это легче всего.

Ссылка на комментарий
Поделиться на другие сайты

03.04.2020 в 18:01, beeline09 сказал:

Юра, приветствую! Вот, пока я на карантине, решил снять конверс и поиграться с ним дома. Включил, подал данные на айди 048 - все стартануло, но не могу убрать надпись "Двигатель неисправен" по нажатию на ок. Кнопки подключил к 2,27 и 30 пинам соответственно, вроде как по мануалу. Не подскажешь как у тебя удалось заставить работать кнопки?

Сори, не заходил на форум. Кнопки я не подключал. Только законектил магнитолу и канхакером отправлял команды о включённом зажигания. 

Команды также канхакером отправлял. 

Там можно задержки указывать итп. 

Судя по последнему сообщению - получилось. 

 

Изменено пользователем yra99
Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, yra99 сказал:

Судя по последнему сообщению - получилось. 

Получилось. И получилось все задуманное, кроме BT/MP3, но думаю он не нужен, ведь все это же можно отобразить в меню CD/MP3. Скоро буду посты здесь и на драйве с полной расшифровкой всего.

20200410_133532.thumb.jpg.19eafc51c93096917a0e68094e0d0847.jpg

Ссылка на комментарий
Поделиться на другие сайты

Уважаемые товарищи, софорумники и просто хорошие люди! У меня это получилось!!! И получилось с Вашей помощью. Без Вас всех я бы еще долго шел к этой цели.

Путем недели!!! бессонных ночей (я реально проводил по 18-20 часов за этим делом) я вычислил все необходимые пакеты и даже написал тестовую программу для Android, которая отправляет это все в конверс через CAN-Hacker по протоколу Lawicel.

 

Определимся с тем, как будут описываться пакеты для тех, кто еще не в теме:

4D9 DLC 8 XX XX XX XX XX XX XX XX

Это означает, что ID пакета 4D9. Дальше DLC означает сколько будет у нас байт в пакете (в данном случае 8), дальше идут сами байты в шестнадцатеричной системе — от 00 до FF. В десятичной системе будет от 0 до 255.

 

Что умеем на данный момент:

- Режим «Магнитола выключена», когда все пункты есть, но неактивны.

- Передавать уровни громкости, а их тут пять.

- Отображать экран радио с частотой, RDS, номером канала, типом радио (FM1, FM2 и т.д.)

- Отображать экран AUX.

- Отображать экран CD-MP3 с полной информацией о треке: название папки, название файла и информация из тегов МР3 - альбом, исполнитель, имя трека

- Включать поддержку навигации. Особенно обрадуются те, у кого штатная Sony и они никогда не видели данный пункт у себя в конверсе

 

1. Режим «Магнитола выключена», когда все пункты есть, но неактивны.

Для этого достаточно отправлять три пакета раз в секунду.

Спойлер

2E3 DLC 1 11 — 11 выключает(неактивны), а 12 включает (делает активными) пункты меню

2E4 DLC 3 80 22 A5. Без этого пункты меню не отобразятся вообще.

4D0 DLC 4 52 94 4A 20 - Отобразить расширенное меню с навигацией

 

2. Передавать уровни громкости, а их тут пять.

 

Спойлер

Все уровни могут быть от 0 до 30. Главный уровень — уровень мультимедиа — передается отдельно от других.

2D8 DLC 3 88 XX 10 — Здесь XX — уровень основной громкости. Вычисляется он по формуле: 2 + уровень * 8. Т.е., например наш уровень 7, значит он равен 2+(7*8) = 58. Но это десятиричное число необходимо перевести в шестнедцатеричный вид. Переводим и получаем 3A. Это значение и подставим вместо ХХ.

2D9 DLC 8 0C 77 77 31 XXYYZZKK — Здесь уровни вычисляются так же как у основного.

XX — Громкость навигационной системы,

YY - Громкость TA (Traffic Announcement) — в России не популярно, поэтому можно будет «привязать» к другому каналу.

ZZ — Громкость телефона

KK — Громкость голосового ассистента

Все уровни передаются не реже, чем раз в секунду. Если нужно моментальное отображение — передаем раз в 300 мсек. Передаем во всех режимах, кроме режима «выключено».

3. Отображать экран радио с частотой, RDS, номером канала, типом радио

 

Спойлер

2E3 DLC 1 12 — обязательный пакет. Раз в секунду

2E4 DLC 3 80 22 A5 — обязательный пакет. Раз в секунду

1F1 DLC 8 00 00 81 08 00 00 00 00 — обязательный пакет. Раз в секунду

 

2D5 DLC 7 XX FF FF FF YYYY 49 — Отправлем раз в секунду. Здесь ХХ — режим радио (01 — FM1, 02 — FM2, 06 — FM3, 03 — FM-AST, 04 — MW, 05 — LW).

А вот с YYYY немного сложнее. Это частота радио, но зависит она от режима (Все FM или MW,LW).

В режимах FM частота может быть от 76 до 108.00 МГц с шагом 0.05 и вычисляется по формуле: (частота * 100 - 7600) / 5. Полученный результат переводим в два байта. Например для частоты 76.15 получаем 15, переводим в два байта и получаем 000F. Можно проще - 76.00 принимаем за ноль. Далее каждые 0.05 МГц прибавляют единицу к тому, что надо отправить.

В режиме MW и LW частоты от 153 до 1620 Кгц с шагом в 1 Кгц. Формула простая — частота минус 153. Результат так же переводим в 4 байта.

 

1E6 DLC 5 00 0C E4 ХХ 00 — Здесь XX — режим TA. 03 — включен, 08 — выключен.

 

1E9 DLC 8 XX XX XX XX XX XX XX XX — Здесь все 8 байт — строка RDS в ASCII. Но здесь тоже не все так просто. Во первых, русские символы в таблице приборки представлены в других байтах (таблица будет ниже по тексту). Во вторых, Даже если в строке один символ мы должны отсылать все 8, а отсутствующие заменять пробелом (код 0x20). Если этого не сделать, то ничего страшного не произойдет, но есть ньюанс... Если у нас RDS строка пустая, т.е. Мы отправили восемь пробелов, то вместо нее отображается частота радио. Если там есть любой другой символ, то будет показывать его. Непонятно почему нельзя отправлять нули (0x00), но вот частота отображается только, если отослать восемь пробелов.

 

4D0 DLC 4 52 94 4A 20 — Отправляем раз в секунду. Отображает расширенное меню с радио и навигатором.

2DC DLC 8 XX FF 00 00 00 00 00 00 — Отправляем раз в 500 мсек. Где XX — номер канала: 60 — пусто, нет нумерации. 61 и далее до 7E - номер станции начиная с 1 до 30

 

4. Отображать экран AUX.

Спойлер

1F1 DLC 8 00 00 21 0A 00 00 00 00

2E3 DLC 1 12

4D0 DLC 4 52 94 4A 20

2E4 DLC 3 C0 22 A5

1E6 DLC 5 00 0C E4 9B 00

Тут особо комментировать нечего. Просто отправляем раз в секунду это все.

5. Отображать экран CD-MP3 с полной информацией о треке: название папки, название файла и информация из тегов МР3 - альбом, исполнитель, имя трека

 

В начале пути я думал, что это будет немного сложнее радио, но я ошибался. Было не просто все проанализировать и отсеять множество вариантов. Тестирование проводилось на штатной магнитоле Sony с серой крутилкой. Было выяснено, что магнитола передает инфу о треке только в момент переключения трека, либо когда это запрашивает конверс — когда мы жмем вправо, чтобы получить список треков. Но я пока не дошел до уровня двустороннего общения магнитолы и конверса.

Изначально я думал, что при переключении трека магнитола шлет всего две строчки в конверс, но оказалось это совсем не так...

Оказалось, что при переключении трека, магнитола последовательно шлет сначала название трека, потом название папки, а через около 100-200 мсек всю инфу из MP3 тегов. А вот дальше идет список треков для списка в конверсе, но на данном этапе последнее нам не нужно. Это было для меня настоящим открытием и сильно обрадовало меня, т. к. это расширяет функционал. По логике конверса получается, что, если у нас нет инфы о тегах, мы показываем название папки и имя файла. Далее у нас есть три поля из тегов: Альбом, Исполнитель , Название трека. И что очень интересно — если не заполнен исполнитель (переданы 0x00 вместо символов), то отображается альбом. Получается, что первая строка — название файла, которое меняется на инфу из мр3 тегов, когда они приходят, вторая строка — всегда номер трека. Третья строка — название папки, когда приходят теги — название исполнителя, а если его нет — название альбома. Если нет инфы об альбоме и исполнителе, но есть инфа из тегов мр3, то будет отображаться только первая строка и во второй номер трека.

Попробуем разложить все по полочкам:

Спойлер

2E3 DLC 1 12 // Отправляем 00 - выключились. Отправялем 12 - включились. Отправялем 11 - Надпись компакт диск НЕАКТИВНА

1F1 DLC 8 80 00 02 10 A0 00 00 00 00

4D0 DLC 4 52 94 4A 20

2E4 DLC 3 C0 22 A5

2D5 DLC 7 01 0F FF FF 91 B4 49

2DADLC 5 80 4A 00 26 20

1E6 DLC 5 00 0C E8 18 00

2DC DLC 8 7F FF 00 00 00 00 00 00

 

За все названия треков отвечает ID 4C1. Везде всегда DLC = 8, поэтому буду сразу показывать нужные байты.

Очистка строки. Отправляем последовательно:

02 0C 00 00 00 00 00 00

02 28 00 00 00 00 00 00

02 08 00 00 00 00 00 00

02 27 00 00 00 00 00 00

02 29 00 00 00 00 00 00

02 0B 00 00 00 00 00 00

По факту очистку можно не использовать, если отсылать пустые строки (0х00) в названиях полей, которые описаны ниже.

 

Далее отправляем остальную инфу. Особенность — в конце слов никогда не должно быть пробелов. Чтобы это понять, я потратил около 3 часов, отсылая разную информацию через CAN-HACKER и случайно обратил внимание, что в конце есть пробел. Просто помните это, если будете этим заниматься. Так же, длина любой из строк не должна превышать 14 символов.

 

Название папки. Первые три байта 10 10 0B, остальные 5 — первые 5 букв названия папки. Дальше идет 21, остальные 7 байт — с 6 по 13 символы. Дальше 22, остальные 7 байт — с 14 по 21 символы. Обратили внимание на 21 символ? А их 14! Все правильно. Отправляем 21, а по факту вмещается только 14 и они не прокручиваются. Если у вас меньше 21 символа, тогда отссутствующие заполняем нулями. С остальными полями последовательность такая же, но меняется только первый три байта при отправке первых 5 символов строки.

Название файла. Первые три байта 10 10 27

Название дорожки из тегов. Первые три байта 10 10 0C

Название артиста из тегов. Первые три байта 10 10 28

Название альбома из тегов. Первые три байта 10 10 08

 

Итого, отправляем 5 строк, каждая из которых состоит из трех пакетов. Итого 18 пакетов для того, чтобы отобразить инфу на приборке. Не рекомендую отправлять чаще, чем раз в секунду, т.к. это сильно будет «спамить» в шину. На ней хоть ничего важного не висит, но все же... Я отправляю в тестовом проекте раз в 2 секунды.

 

А вот таблица кодов символов приборки:

Спойлер

00 ->

01 -> ÿ

02 -> Ă

03 -> ă

04 -> Ą

05 -> ą

06 -> Ć

0A -> \n

0B -> Ď

0C -> ď

0D ->

0E -> đ

20 ->

21 -> !

22 ->

23 -> #

24 -> $

25 -> %

26 -> &

27 -> '

28 -> (

29 -> )

2A -> *

2B -> +

2C -> ,

2D -> -

2E -> .

2F -> /

30 -> 0

31 -> 1

32 -> 2

33 -> 3

33 -> З //Русской большой З(зэ) нет, поэтому показываем тройку

34 -> 4

35 -> 5

36 -> 6

37 -> 7

38 -> 8

39 -> 9

3A -> :

3B -> ;

3C -> <

3D -> =

3E -> >

3F -> ?

40 -> @

41 -> A //Английская

41 -> А //Русская

42 -> B //Английская

42 -> В //Русская

43 -> С //Английская

43 -> С //Русская

44 -> D

45 -> E //Английская

45 -> Е //Русская

46 -> F

47 -> G

48 -> H //Английская

48 -> Н //Русская

49 -> I

4A -> J

4B -> K

4C -> L

4D -> M //Английская

4D -> М //Русская

4E -> N

4F -> O //Английская

4F -> О //Русская

50 -> P //Английская

50 -> Р //Русская

51 -> Q

52 -> R

53 -> S

54 -> T //Английская

54 -> Т //Русская

55 -> U

56 -> V

57 -> W

58 -> X //Английская

58 -> Х //Русская

59 -> Y

5A -> Z

5B -> [

5C -> \\

5D -> ]

5E -> ^

5F -> _

60 -> `

61 -> a //Английская

61 -> а //Русская

62 -> b

63 -> c //Английская

63 -> с //Русская

64 -> d

65 -> e //Английская

65 -> е //Русская

66 -> f

67 -> g

68 -> h

69 -> i

6A -> j

6B -> k

6C -> l

6D -> m

6E -> n

6F -> o //Английская

6F -> о //Русская

70 -> p //Английская

70 -> р //Русская

71 -> q

72 -> r

73 -> s

74 -> t

75 -> u

76 -> v

77 -> w

78 -> x //Английская

78 -> х //Русская

79 -> y //Английская

79 -> у //Русская

7A -> z

7B -> {

7C -> |

7D -> }

7E -> ~

7F -> DEL

80 -> ś

81 -> Ş

82 -> ş

83 -> Ţ

84 -> ţ

85 -> Ť

86 -> ť

87 -> Ů

88 -> ů

89 -> ź

8A -> ż

8B -> Б

8C -> Г

8D -> Д

8E -> Ж

8F -> И

90 -> К

91 -> Л

92 -> П

93 -> У

94 -> Ф

95 -> Ц

96 -> Ч

97 -> Ш

98 -> Щ

99 -> Э

9A -> Ю

9A -> ю //Маленькой нет в таблице, поэтому показываем большую

9B -> Я

9C -> б

9D -> в

9E -> г

9F -> д

A0 -> ж

A1 ->

A2 -> з

A3 -> и

A4 -> й

A4 -> Й //Большой Й нет. Показываем маленькую

A5 -> к

A6 -> Š

A7 -> л

A8 -> š

A9 -> м

AA -> н

AB -> «

AC -> п

AD -> т

AE -> ф

AF -> ц

B0 -> °

B1 -> ч

B2 -> ш

B3 -> щ

B4 ->

B5 -> ъ

B5 -> Ъ //Большой нет.

B6 -> ы

B6 -> Ы //Большой нет

B7 -> ·

B8 -> ž

B9 -> ь

B9 -> Ь //Большой нет

BA -> э

BB -> »

EB -> ё

EB -> Ё //Большой Ё нет, поэтому показываем маленькую

F7 -> я

Это не все 255 символов, но все что нам нужно здесь есть. Остальные символы наподобие перевернутого вопроса и др. - нам не интересно.

 

Включать поддержку навигации.

За навигацию отвечает ID 4C1. Всегда передаем 8 байт.

 

Спойлер

Для включения навигации, т. е. отображения соответствующих пиктограмм, достаточно отправлять раз в 300 мсек два пакета:

1) 21 XX XX 0C 00 00 00 00, где XXXX — код стрелки, который будет ниже в таблице.

2) 10 08 22 XX YY ZZ KK 01. Разберем подробнее.

XX. Режим отображения расстояния. 00 - показывает расстояние до маневра в км. + прогресс выполнения общего пути. 01 — показывает общую дистанцию до конца маршрута без прогресса. 02 — тоже, что 00, только в милях. 03 — то же, что 01, только в милях. Дальше при увеличении, все повторяется по кругу.

YY ZZ. Здесь все сложнее. Если в XX 00 — тогда значение умножаем на 100, иначе — на 1. В режиме отображения расстояния до препятствия максимальное число может быть 655.35, иначе — 65535. Далее переводим это все в два байта, получаем что-то вроде BBFF (481.27 км). Но самое интересное — делим получившуюся строку на две и меняем местами. В итоге в YYZZ надо будет положить FFBB.

KK. Прогресс пройденного пути от 0 до 255. Преобразуем в HEX и отправляем. Но удобнее читать, когда наоборот - от 255 до 0.

Навигация будет отображаться в любом режиме, кроме «выключено».

Коды стрелок:

Спойлер

code = "cc0c", description = "Пустой экран"

code = "0103", description = "Прямо"

code = "0c03", description = "Налево 45º"

code = "3603", description = "Налево 90º"

code = "4c03", description = "Налево 135º"

code = "8c03", description = "Направо 135º"

code = "b603", description = "Направо 90º"

code = "cc03", description = "Направо 45º"

code = "0106", description = "Перестроение в левый ряд"

code = "a006", description = "Перестроение в правый ряд"

code = "0009", description = "Движение вперед. Съезды с обеих сторон."

code = "0107", description = "Держитесь левого ряда"

code = "a007", description = "Держитесь правого ряда"

code = "0109", description = "Поверните налево"

code = "a009", description = "Поверните направо"

code = "0104", description = "Разворот с левой полосы"

code = "0105", description = "Разворот с правой полосы"

code = "9b0c", description = "Круговое движение 1"

code = "a60c", description = "Круговое движение 2"

code = "b60c", description = "Круговое движение 3"

code = "db0c", description = "Круговое движение 4"

code = "e60c", description = "Круговое движение 5"

code = "f60c", description = "Круговое движение 6"

code = "1b0c", description = "Круговое движение 7"

code = "260c", description = "Круговое движение 8"

code = "360c", description = "Круговое движение 9"

code = "5b0c", description = "Круговое движение 10"

code = "660c", description = "Круговое движение 11"

code = "760c", description = "Круговое движение 12"

code = "a00e", description = "Квадратное движение 1"

code = "a80e", description = "Квадратное движение 2"

code = "b80e", description = "Квадратное движение 3"

code = "c80e", description = "Квадратное движение 4"

code = "d80e", description = "Квадратное движение 5"

code = "e80e", description = "Квадратное движение 6"

code = "080e", description = "Квадратное движение 7"

code = "000e", description = "Квадратное движение 8"

code = "0110", description = "Компас"

code = "0113", description = "Финиш"

code = "0120", description = "Напр.движ. 0º (Север)"

code = "0c20", description = "Напр.движ. 22.5º"

code = "1b20", description = "Напр.движ. 45º (С-З)"

code = "2620", description = "Напр.движ. 67.5º"

code = "3620", description = "Напр.движ. 90º (Запад)"

code = "4c20", description = "Напр.движ. 112.5º"

code = "5b20", description = "Напр.движ. 135º (Ю-З)"

code = "6620", description = "Напр.движ. 157.5º"

code = "7620", description = "Напр.движ. 180º (Юг)"

code = "8c20", description = "Напр.движ. 202.5º"

code = "9b20", description = "Напр.движ. 225º (Ю-В)"

code = "a620", description = "Напр.движ. 247.5º"

code = "b620", description = "Напр.движ. 270º (Восток)"

code = "cc20", description = "Напр.движ. 292.5º"

code = "db20", description = "Напр.движ. 315º (С-В)"

code = "e620", description = "Напр.движ. 337.5º"

code = "f620", description = "Напр.движ. 360º (Север)"

code = "0123", description = "Песочные часы"

Итого 57 стрелок.

 

В результате полученные данные были опробованы в тестовом приложении для Android. Все как  на видео

Изменено пользователем beeline09
Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Chip&dail сказал:

Теперь весь вопрос в том, чтобы забирать данные от штатных программ китайских магнитол и транслировать в конверс.

Я этим сейчас и занимаюсь)) Моя магнитола Ownice K1 и я уже смог подключиться к ее внутренним сервисам и узнать какой режим сейчас включен, узнать частоту радио и номер станции, узнать всю инфу о проигрываемом треке через родной МР3 плеер. Так же многие другие режимы можно обрабатывать. Родной видео приложение, к сожалению, не отдает имя трека, но отдает список всех видео треков - явная недоработка API. Но это не так важно. Сейчас декомпилировал МХ плеер, чтобы узнать какие сервисы есть в нем и можно-ли подключиться. Если смогу, то будем из него получать все по видео.

Очевидно, что придется делать поддержку для некоторых магнитол, но апи в основном везде одинаковые.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Chip&dail сказал:

Плюс есть сами канбас адаптеры магнитол, они параллельно будут работать?

Цепь канбас адаптера и кан шины машины будет разорвана и подключена через наш контроллер. Он будет фильтровать все пакеты, которые предназначены для включения соответствующих режимов на конверсе, подменять их своими данными (которые будут приходить из нашего андроид приложения) и пересылать. Остальные неотфильтрованные пакеты трогаться не будут. Там много чего висит - парки, климат, задний ход, сигнал АСС.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Chip&dail сказал:

Ну то есть один вход для данных контроллера пойдет от канбас адаптера, а второй от usb магнитолы?

Нет. У нас два кан интерфейса. Один идет в машину, другой в родной канбас магнитолы. Помимо этого адаптер  подключается по USB или Bluetooth к андроиду - так управляющее приложение передаст нужные команды.

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...

Здравствуйте! Очень интересный был проект. Получилось ли в итоге разобраться в api магнитолы и  создать законченное устройство?

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, igor15rus сказал:

Здравствуйте! Очень интересный был проект. Получилось ли в итоге разобраться в api магнитолы и  создать законченное устройство?

Да это утопия. Мертворожденная тема.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...
В 12.02.2020 в 13:12, Maksvv сказал:

Всем привет. Парни раз вы так глубоко погрузились в тему. Подскажите

1. Сонька и форд 6000 устанавливается как на машины с кнопкой стартстоп,  так и на ключевые. Как на ключевых управляется включение/выключение ГУ, аналогово по проводам АСС от ключа? А как на кнопках стартстоп, по CAN? Полагаю, что на ключевых машинах на пин 16 разъёма ГУ заведён АСС от замка заж-я, а на кнопочных на этот пин заводится уже не АСС, а зажигание. 

2. Какой ID и байт в нем управляет включением/выключением головного по CAN (видимо это только на кнопочных машинах).  Правильнее наверное спросить:  какой ID и байт в нем управляет фактом того, останется или нет включенным ГУ после пропадания зажигания на пине 16 разъема ГУ. (инициирование щитком по CAN продолжения работы ГУ поcле выкл заж и до момента открытия двери). Я так понимаю эта инфа идёт от конверса (а может и от обычных щитков) к ГУ и только на машинах с кнопкой стартстоп? 

У меня мондео дорест дизель акпп с кнопкой стартстоп со штатным конверсом и китайским ГУ (вроде ownice). Хочу сделать фильтр в CAN чтобы выключалось ГУ не по выключению зажигания , а по открытию водительской двери.  

Ребята подскажите пожалуйста, я с таким же вопросом. Что можно сделать 

Ссылка на комментарий
Поделиться на другие сайты

В 27.06.2023 в 12:26, Oni сказал:

Ребята подскажите пожалуйста, я с таким же вопросом. Что можно сделать 

Все идет по Can и на ключевых и на бесключевых. Нет на мондео провода АСС от слова совсем.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...