Vitalik1 Опубликовано 8 ноября, 2019 Опубликовано 8 ноября, 2019 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 Показать содержимое Схема на картинке https://drive.google.com/open?id=15IL8ozTQvjMBsAJ8M5Nfp_y315mafxO4 Не буду описывать все подробности, сделать нужно следующее: 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 строчек единоразово после подключения и на этом всё. Далее нажимаю различные кнопки в автомобиле, данные в таблице никак не изменяются. Приложу скрин. Подскажите, пожалуйста, в какую сторону копать? 0 Цитата
beeline09 Опубликовано 8 ноября, 2019 Автор Опубликовано 8 ноября, 2019 У меня так было. Нано слабовата для этого. Запустил на про мега и проблем никаких не было. 0 Цитата
Vitalik1 Опубликовано 9 ноября, 2019 Опубликовано 9 ноября, 2019 08.11.2019 в 07:46, beeline09 сказал: У меня так было. Нано слабовата для этого. Запустил на про мега и проблем никаких не было. Такой? 0 Цитата
beeline09 Опубликовано 9 ноября, 2019 Автор Опубликовано 9 ноября, 2019 @Vitalik1 можно и такой, не важно. Главное - мощнее 0 Цитата
egor87 Опубликовано 17 января, 2020 Опубликовано 17 января, 2020 Доброго времени суток, может чуть не в тему, сильно не пинайте. Установил китайскую магнитолу через кан бус, при выключении зажигания тухнет магнитола и зависают часы на приборке, после включения зажигания включается магнитола тоже с зависшим временем и через какое то время часы на магнитоле и приборке показывают правильное время. Не конверс. может кто что подсказать? 0 Цитата
Maksvv Опубликовано 12 февраля, 2020 Опубликовано 12 февраля, 2020 (изменено) Всем привет. Парни раз вы так глубоко погрузились в тему. Подскажите 1. Сонька и форд 6000 устанавливается как на машины с кнопкой стартстоп, так и на ключевые. Как на ключевых управляется включение/выключение ГУ, аналогово по проводам АСС от ключа? А как на кнопках стартстоп, по CAN? Полагаю, что на ключевых машинах на пин 16 разъёма ГУ заведён АСС от замка заж-я, а на кнопочных на этот пин заводится уже не АСС, а зажигание. 2. Какой ID и байт в нем управляет включением/выключением головного по CAN (видимо это только на кнопочных машинах). Правильнее наверное спросить: какой ID и байт в нем управляет фактом того, останется или нет включенным ГУ после пропадания зажигания на пине 16 разъема ГУ. (инициирование щитком по CAN продолжения работы ГУ поcле выкл заж и до момента открытия двери). Я так понимаю эта инфа идёт от конверса (а может и от обычных щитков) к ГУ и только на машинах с кнопкой стартстоп? У меня мондео дорест дизель акпп с кнопкой стартстоп со штатным конверсом и китайским ГУ (вроде ownice). Хочу сделать фильтр в CAN чтобы выключалось ГУ не по выключению зажигания , а по открытию водительской двери. Изменено 12 февраля, 2020 пользователем Maksvv 0 Цитата
Maximator Опубликовано 29 марта, 2020 Опубликовано 29 марта, 2020 Всем привет! Парни огромное вам спасибо за вашу работу, желаю вам удачи и успехов... Готов предложить свою помощь, если нужна токова? 0 Цитата
beeline09 Опубликовано 29 марта, 2020 Автор Опубликовано 29 марта, 2020 1 час назад, Maximator сказал: Всем привет! Парни огромное вам спасибо за вашу работу, желаю вам удачи и успехов... Готов предложить свою помощь, если нужна токова? Как именно можешь помочь? На данный момент больше всего нужен подопытный Конверс на время, ну или купить по вменяемой цене, чтобы вместе скинуться на эксперименты. А так любая помощь очень нужна. Например важно понять какие коды на каких айди от разных магнитол. Уже понятно, что Сони и Блау дают как минимум разную инфу по мр3. 0 Цитата
Maximator Опубликовано 30 марта, 2020 Опубликовано 30 марта, 2020 10 часов назад, beeline09 сказал: Как именно можешь помочь? На данный момент больше всего нужен подопытный Конверс на время, ну или купить по вменяемой цене, чтобы вместе скинуться на эксперименты. А так любая помощь очень нужна. Например важно понять какие коды на каких айди от разных магнитол. Уже понятно, что Сони и Блау дают как минимум разную инфу по мр3. А конверт нужен рестаил или до? 0 Цитата
beeline09 Опубликовано 30 марта, 2020 Автор Опубликовано 30 марта, 2020 9 минут назад, Maximator сказал: А конверт нужен рестаил или до? Вообще без разницы. Главное, чтобы Конверс, а не обычная приборка. 0 Цитата
Maximator Опубликовано 30 марта, 2020 Опубликовано 30 марта, 2020 9 минут назад, beeline09 сказал: Вообще без разницы. Главное, чтобы Конверс, а не обычная приборка. Постараюсь достать или в аренду взять. 0 Цитата
beeline09 Опубликовано 30 марта, 2020 Автор Опубликовано 30 марта, 2020 47 минут назад, Maximator сказал: Постараюсь достать или в аренду взять. Было бы супер 0 Цитата
beeline09 Опубликовано 3 апреля, 2020 Автор Опубликовано 3 апреля, 2020 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 Показать содержимое Схема на картинке https://drive.google.com/open?id=15IL8ozTQvjMBsAJ8M5Nfp_y315mafxO4 Не буду описывать все подробности, сделать нужно следующее: 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 пинам соответственно, вроде как по мануалу. Не подскажешь как у тебя удалось заставить работать кнопки? 0 Цитата
beeline09 Опубликовано 5 апреля, 2020 Автор Опубликовано 5 апреля, 2020 Товарищи! В связи с карантином, у меня появилось достаточно времени, чтобы снять конверс и запустить его на столе. Благодаря информации из нашей темы и с помощью опытных ребят с драйва, собрал необходимые данные и реализовал все в Android-приложении. Пока Могу отправить на приборку Громкость музыки, навигации, телефона, ТА и голосового ассистента, а так же информацию МР3 - первая и третья строка (вторая - номер трека), информацию о количестве треков и текущей позиции трека. И самое главное - запустил навигатор!!! Лучше один раз увидеть: Смотреть Пока только по МР3 и Навигации смог все эмулировать. Осталось радио и Блютуз. Блютуз кстати, совсем не хочется заморачиваться. Из него можно отобразить все в пункте МР3 - так же и в плане видео. Радио - проблем нет - осталось написать код - это легче всего. 0 Цитата
yra99 Опубликовано 9 апреля, 2020 Опубликовано 9 апреля, 2020 (изменено) 03.04.2020 в 18:01, beeline09 сказал: Юра, приветствую! Вот, пока я на карантине, решил снять конверс и поиграться с ним дома. Включил, подал данные на айди 048 - все стартануло, но не могу убрать надпись "Двигатель неисправен" по нажатию на ок. Кнопки подключил к 2,27 и 30 пинам соответственно, вроде как по мануалу. Не подскажешь как у тебя удалось заставить работать кнопки? Сори, не заходил на форум. Кнопки я не подключал. Только законектил магнитолу и канхакером отправлял команды о включённом зажигания. Команды также канхакером отправлял. Там можно задержки указывать итп. Судя по последнему сообщению - получилось. Изменено 9 апреля, 2020 пользователем yra99 0 Цитата
beeline09 Опубликовано 10 апреля, 2020 Автор Опубликовано 10 апреля, 2020 13 часов назад, yra99 сказал: Судя по последнему сообщению - получилось. Получилось. И получилось все задуманное, кроме BT/MP3, но думаю он не нужен, ведь все это же можно отобразить в меню CD/MP3. Скоро буду посты здесь и на драйве с полной расшифровкой всего. 0 Цитата
beeline09 Опубликовано 10 апреля, 2020 Автор Опубликовано 10 апреля, 2020 (изменено) Уважаемые товарищи, софорумники и просто хорошие люди! У меня это получилось!!! И получилось с Вашей помощью. Без Вас всех я бы еще долго шел к этой цели. Путем недели!!! бессонных ночей (я реально проводил по 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. Все как на видео Изменено 10 апреля, 2020 пользователем beeline09 0 Цитата
beeline09 Опубликовано 15 апреля, 2020 Автор Опубликовано 15 апреля, 2020 17 часов назад, Chip&dail сказал: Теперь весь вопрос в том, чтобы забирать данные от штатных программ китайских магнитол и транслировать в конверс. Я этим сейчас и занимаюсь)) Моя магнитола Ownice K1 и я уже смог подключиться к ее внутренним сервисам и узнать какой режим сейчас включен, узнать частоту радио и номер станции, узнать всю инфу о проигрываемом треке через родной МР3 плеер. Так же многие другие режимы можно обрабатывать. Родной видео приложение, к сожалению, не отдает имя трека, но отдает список всех видео треков - явная недоработка API. Но это не так важно. Сейчас декомпилировал МХ плеер, чтобы узнать какие сервисы есть в нем и можно-ли подключиться. Если смогу, то будем из него получать все по видео. Очевидно, что придется делать поддержку для некоторых магнитол, но апи в основном везде одинаковые. 0 Цитата
beeline09 Опубликовано 15 апреля, 2020 Автор Опубликовано 15 апреля, 2020 17 часов назад, Chip&dail сказал: Плюс есть сами канбас адаптеры магнитол, они параллельно будут работать? Цепь канбас адаптера и кан шины машины будет разорвана и подключена через наш контроллер. Он будет фильтровать все пакеты, которые предназначены для включения соответствующих режимов на конверсе, подменять их своими данными (которые будут приходить из нашего андроид приложения) и пересылать. Остальные неотфильтрованные пакеты трогаться не будут. Там много чего висит - парки, климат, задний ход, сигнал АСС. 0 Цитата
beeline09 Опубликовано 15 апреля, 2020 Автор Опубликовано 15 апреля, 2020 1 час назад, Chip&dail сказал: Ну то есть один вход для данных контроллера пойдет от канбас адаптера, а второй от usb магнитолы? Нет. У нас два кан интерфейса. Один идет в машину, другой в родной канбас магнитолы. Помимо этого адаптер подключается по USB или Bluetooth к андроиду - так управляющее приложение передаст нужные команды. 0 Цитата
igor15rus Опубликовано 4 марта, 2021 Опубликовано 4 марта, 2021 Здравствуйте! Очень интересный был проект. Получилось ли в итоге разобраться в api магнитолы и создать законченное устройство? 0 Цитата
KruS Опубликовано 5 марта, 2021 Опубликовано 5 марта, 2021 8 часов назад, igor15rus сказал: Здравствуйте! Очень интересный был проект. Получилось ли в итоге разобраться в api магнитолы и создать законченное устройство? Да это утопия. Мертворожденная тема. 0 Цитата
Oni Опубликовано 27 июня, 2023 Опубликовано 27 июня, 2023 В 12.02.2020 в 13:12, Maksvv сказал: Всем привет. Парни раз вы так глубоко погрузились в тему. Подскажите 1. Сонька и форд 6000 устанавливается как на машины с кнопкой стартстоп, так и на ключевые. Как на ключевых управляется включение/выключение ГУ, аналогово по проводам АСС от ключа? А как на кнопках стартстоп, по CAN? Полагаю, что на ключевых машинах на пин 16 разъёма ГУ заведён АСС от замка заж-я, а на кнопочных на этот пин заводится уже не АСС, а зажигание. 2. Какой ID и байт в нем управляет включением/выключением головного по CAN (видимо это только на кнопочных машинах). Правильнее наверное спросить: какой ID и байт в нем управляет фактом того, останется или нет включенным ГУ после пропадания зажигания на пине 16 разъема ГУ. (инициирование щитком по CAN продолжения работы ГУ поcле выкл заж и до момента открытия двери). Я так понимаю эта инфа идёт от конверса (а может и от обычных щитков) к ГУ и только на машинах с кнопкой стартстоп? У меня мондео дорест дизель акпп с кнопкой стартстоп со штатным конверсом и китайским ГУ (вроде ownice). Хочу сделать фильтр в CAN чтобы выключалось ГУ не по выключению зажигания , а по открытию водительской двери. Ребята подскажите пожалуйста, я с таким же вопросом. Что можно сделать 0 Цитата
Shiko Опубликовано 28 июня, 2023 Опубликовано 28 июня, 2023 В 27.06.2023 в 12:26, Oni сказал: Ребята подскажите пожалуйста, я с таким же вопросом. Что можно сделать Все идет по Can и на ключевых и на бесключевых. Нет на мондео провода АСС от слова совсем. 0 Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.